[Résolu] Macro selon coordonnées d'un bouton de commande

Neo37

XLDnaute Junior
Bonjour à tous,

Encore une fois je sollicite l'aide de la communauté :p

Voilà en gros j'ai un tableau de valeurs d'une centaine de lignes.
Je voudrais pouvoir avec un simple bouton devant chaque ligne de mon tableau, pouvoir copier certaines valeurs des dites lignes voulu dans un autre tableau dans une autre feuille. Mais 100 boutons, je vais mettre un temps infini à le faire, et je risque aussi surtout de faire des erreurs de coordonnées. Donc peut-on le faire en fonction de l'emplacement du bouton? Ainsi un simple copier/coller du code dans chaque bouton serait plus simple.

Je joins un exemple de fichier, pas celui de base, mais bon le principe de mise en page est le même.
En Feuil1 je souhaite qu'en cliquant sur un des boutons "Envoi", les valeurs de cette ligne en B, C et D se recopient sur la Feuil2 sur la première ligne vide en B, D et F. Et que si je déplace ces boutons "Envoi", que je les change de ligne, que cela fonctionne toujours sur leur nouvelle ligne.

En espérant avoir été clair :)

Merci d'avance à ceux qui s'y intéresseront.
 

Pièces jointes

  • Test copiage.xls
    39 KB · Affichages: 36
  • Test copiage.xls
    39 KB · Affichages: 38
  • Test copiage.xls
    39 KB · Affichages: 38
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro selon coordonnées d'un bouton de commande

Bonjour Neo, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle BeforeDoubleClick. Un double-clic sur une cellule de la colonne A, ayant 0 comme valeur, envoie les données dans le tableau en Feuil2.
1 s'écrit dans la cellule à la place de 0.
Un double-clic sur une cellule ayant 1 comme valeur n'a aucun effet...
Le code :

Code:
Private test As Boolean 'déclare la variable test

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim li As Integer 'déclare la variable li (LIgne)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

If test = True Then test = False: Exit Sub 'si la variable test est vrai, definit test comme faux, sort de la procédure
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'de'finit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = Range("A5:A" & dl) 'définit la plage pl
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub 'si le changement a lieu aillerus qu'en pl, sort de la procédure
Cancel = True 'évite le mode edition lié au double clic
If Target.Value = 1 Then Exit Sub 'si la cellule double-cliquée contient "1", sort de la procédure
li = Target.Row 'définit la ligne li
Set dest = Sheets("Feuil2").Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
dest.Value = Cells(li, 2).Value 'dest prend la valeur de la donnée 1
dest.Offset(0, 2).Value = Cells(li, 3).Value 'dest décalé de 2 colonne à droite prend la valeur de la donnée 2
dest.Offset(0, 4).Value = Cells(li, 5).Value 'dest décalé de 4 colonne à droite prend la valeur de la donnée 3
Target.Value = 1 'écrit "1" dans la cellule double-cliquée
End Sub
Le fichier :
 

Pièces jointes

  • Neo_v01.xls
    50.5 KB · Affichages: 44

Neo37

XLDnaute Junior
Re : Macro selon coordonnées d'un bouton de commande

:confused: la vache!!!

C'est... c'est même plus que ce je souhaitais :D
Du coup ça me met même une trace pour savoir si la copie d'une ligne a déjà été faite ou pas.
Je suis comblé.

Merci beaucoup Robert :D
Il ne me reste plus qu'à faire joujou avec.

Et merci au Forum.
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 232
Membres
103 161
dernier inscrit
Rogombe bryan