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

  • Initiateur de la discussion Initiateur de la discussion Neo37
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Neo37

XLDnaute Junior
Bonjour à tous,

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

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

Dernière édition:
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

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

😕 la vache!!!

C'est... c'est même plus que ce je souhaitais 😀
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 😀
Il ne me reste plus qu'à faire joujou avec.

Et merci au Forum.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
32
Affichages
978
Réponses
4
Affichages
100
Réponses
3
Affichages
609
Retour