Solution pour reproduire et décaler une macro

Bonjour

voici mon problème

je lance à partir d'un bouton de commande (placé en A4) associé à une macro qui réalise une copie et un collage de cellule situées dans la plage c4:au4 d'une feuille "test" vers des cellules d'une feuille "impression"

je voudrais pouvoir reproduire ce bouton de commande (qui sera placé en A7, A10..........A187) et l'associer à chaque fois à une copies de cellules c7:au7 c10:au10.......C187:au187 pour les coller dans ma feuille impression

j'ai pensé réaliser cette opération manuellement c'est a dire écrire une macro pour chaque bouton de commande (A7, A10..........A187)

certes un peu long mais j'ai peur aussi que le fichier soit lent......

en espérant que mon message soit clair, est-il possible de faire autrement?

merci par avance

Bonjour,

un petit exemple à adapter avec un module de classe.

bonne journée

@+

35classeur1.zip (13.97 Ko)

merci beaucoup pour ta réponse..... j'ai réussi a tout rapprocher de mon fichier.... j'arrive à obtenir le même résultat ... à savoir que la commande permet bien de sélectionner les cellules situées sur la même ligne de la colonne 3 a 45

.Cells(cb.TopLeftCell.Row, 3).Resize(, 45).Select

mais en réalité je voudrais sélectionner une partie de mon tableau de la colonne 3 à 11 sur 3 lignes (même ligne que la commande et une ligne en dessus et une ligne en dessous

pour ensuite les copier pour aller les coller dans le tableau C6:K8 de ma feuille2

j'ai fait des recherches sur le forum et autres sites internet mais je ne trouve pas.....si quelqu'un peut m'aider...

merci encore

Re,

pour copier 3 lignes de colonne 3 à 11 :

.Cells(cb.TopLeftCell.Row, 3).Resize(3, 9).Copy

génial grace à ton aide j'arrive à faire ce que je voulais... merci beaucoup.....

seul petit souci j'ai voulu créer un second module de classe (classe2) qui fonctionne à l'identique masi entre une feuil3 "bateau2" et la même feuille "impression moniteur"

j'ai crée la classe2 puis dans le workbook j'ai inscrit

Option Explicit
Private cbs() As New Classe1
Private Sub Workbook_Open()
Dim x As OLEObject, i As Byte
For Each x In Sheets("bateau 1").OLEObjects
    If TypeName(x.Object) = "CommandButton" Then
        i = i + 1
        ReDim Preserve cbs(1 To i)
        Set cbs(i).cb = x.Object
    End If
Next x

Private cbs() As New Classe2
Private Sub Workbook_Open()
Dim x As OLEObject, i As Byte
For Each x In Sheets("bateau 2").OLEObjects
    If TypeName(x.Object) = "CommandButton" Then
        i = i + 1
        ReDim Preserve cbs(1 To i)
        Set cbs(i).cb = x.Object
    End If
Next x
End Sub

mais lorsque je lance la commande j'obtiens le message "Nom ambigue détecté" Workbook_Open

la commande s’arrête sur le deuxième Workbook_Open

je cherche également comment modifier le texte du commandbutton1 j'ai fait des recherches mais impossible de trouver cette commande caption ou autre.... une idée?

merci

Bonjour,

tu ne peux avoir qu'un seul événement " Workbook_Open" dans le module "thisworkbook". D'autre part tes classes doivent porter des noms différents.... Essaye ceci, non testé...

Option Explicit
Private cbs() As New Classe1, cbs2() As New Classe2
Private Sub Workbook_Open()
Dim x As OLEObject, i As Byte
For Each x In Sheets("bateau 1").OLEObjects
    If TypeName(x.Object) = "CommandButton" Then
        i = i + 1
        ReDim Preserve cbs(1 To i)
        Set cbs(i).cb = x.Object
    End If
Next x
i = 0
For Each x In Sheets("bateau 2").OLEObjects
    If TypeName(x.Object) = "CommandButton" Then
        i = i + 1
        ReDim Preserve cbs2(1 To i)
        Set cbs2(i).cb2 = x.Object
    End If
Next x
End Sub

Pour modifier le nom du "commandbutton", modifie sa propriété "caption".

bonne journée

@+

Bonjour et merci pour ta réponse aussi rapide....

lorsque j ouvre j'ai le message suivant:

"erreur de compilation, membe de methode ou de données introuvables"

Private Sub Workbook_Open() et cbs2 surlignés

Bonne journée!

Re,

fonctionne dans le classeur joint.

13classeur1.zip (18.22 Ko)

Que je suis bête! j'avais oublié de modifié les valeurs cb dans mes classes.....

c'est excellent ... j'ai peu honte de prendre encore de ton temps mais le caption de commandbutton je le trouve ou?

merci à toi

Re,

j'ai peu honte de prendre encore de ton temps mais le caption de commandbutton je le trouve ou?

faut pas... tu trouveras la propriété "caption" du bouton dans l'éditeur vba fenêtre "propriétés" après avoir selectionné l'objet, ou bien avec un click droit sur l'objet en mode création => propriétés

c'est parfait tout ça , un immense merci .... mon projet a bien avancé grâce à toi!

une petite question encore j'ai ajouter dans ma classe1

Application.Dialogs(xlDialogPrint).Show pour lancer mon impression de cette page "impression moniteurs"

cela fonctionne - c'est à dire que la boite de dialogue impression s'ouvre correctement mais j'aurais aimé que l'impression sur l'imprimante par défaut se lance automatiquement..... si tu as une idée....

merci encore!

Re,

la on s'éloigne de la question initiale... lance peut être directement un "printout"...

Feuil1.PrintOut

oui désolé j'ai hésité à créer une nouvelle discussion... en tout cas ta proposition fonctionne

un immense merci !

Rechercher des sujets similaires à "solution reproduire decaler macro"