Programmation Excel VBA, bouton lié à une ligne [Résolu]

Signaler
-
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020
-
Bonjour,

Je cherche une solution à mon problème sur différent forums mais en vain. J'ai créée un document Excel afin de programmer différentes commande et les dates de livraisons. A cela j'ai ajouter devant chaque ligne un bouton programmer afin d'effacer la ligne sur laquelle il se situe. Mais le bouton est programmer avec le numéro de cellule, ce qui signifie que si je rajoute une ligne entre temps le bouton ne sera pas en face de la bonne ligne.

J'espere être clair mais en gros, il me faudrais supprimer les colonne C à G mais uniquement sur la ligne du bouton. Je ne sais pas si cela est possible.

Par avance, merci de votre réponse.


Configuration: Windows / Firefox 80.0

3 réponses

Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
bonjour, je ne comprends pas le lien entre ton premier et ton second paragraphe.
je me demande si c'est une bonne idée d'avoir un bouton par ligne.
peux-tu partager ton fichier?
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020

Bonjour, j'ai repondue à votre message ci-dessous :)
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020

Bonjour, j'ai conscience de ne pas être très clair dans mes propos alors je vais essayer d'apporter des précisions.

Tout d'abord je vous mets a disposition le lien du excel car je n'ai pas reussis a l'intégrer d'une autre façon:
https://www.cjoint.com/c/JIxinC7lWYa

Sur ma feuille de commande, on peut voir au client SNCF (qui est un exemple) qu'il y a différentes commandes, différentes dates ect... Devant chaque ligne il y a un bouton affilié à la ligne. Lorsque ma commande est livré, il serais plus confortable pour moi d'effacer mes données du tableau dans les cellules allant de C à G. Mon problème est le suivant. Si un jour j'ai une commande supplémentaire, il me faudrais rajouter une ligne dans ce tableau et donc changer le numéro des cellules. Le bouton ne restant pas dans sa cellule attribué, le code VBA ne serais alors plus bon car il m'effacerais les données d'une autre cellule.

J'aurais donc aimé, soit pouvoir lié mon bouton à une cellule, peut importe le rajout de ligne ou de suppression, les boutons restent sur le bon numéro de cellule qui leur à été attribué. Ou alors savoir si il était possible de programmer le bouton afin qu'il efface les données de sa cellule mais sans avoir à mettre les numéro dans Range("C32:G32").

Merci beaucoup de votre réponse.
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
un exemple:
Private Sub CommandButton1_Click()
Dim ligne As Long
ligne = Me.CommandButton1.TopLeftCell.Row
Cells(ligne, "C").Resize(1, 5).ClearContents
End Sub
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703 >
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020

ou bien, tenant compte que le bouton est dans la colonne A:
Private Sub CommandButton10_Click()
Me.CommandButton10.TopLeftCell.Offset(0, 2).Resize(1, 5).ClearContents
End Sub
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020
>
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020

Merci beaucoup mais après essai cela efface la première ligne de mon premier tableau mais pas la ligne où se trouve le bouton.
Je vais essayer de voir si avec votre programme je ne peux pas trouver une alternative mais si vous aviez une solution à mon problème cela m'aiderais grandement.
Merci pour votre aide.
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703 >
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020

peux-tu montrer ton code modifié? chez moi, tout se passe bien.
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703
une autre méthode serait d'utiliser une seule macro, et d'associer tous les boutons à cette macro.
Sub bouton()
ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(0, 2).Resize(1, 5).ClearContents
End Sub

tu peux même copier le bouton sur toutes les lignes.
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020



J'ai essayer avec la derniere méthode, il me dis ne pas connaître "Buttons".
"Impossible de lire la propriété Buttons de la classe Worsheet"
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020
703 >
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020

cette méthode est à utiliser si tu associes une macro aux boutons (la même macro à tous les boutons).
https://support.microsoft.com/fr-fr/office/assigner-une-macro-%C3%A0-un-formulaire-ou-%C3%A0-un-bouton-de-contr%C3%B4le-d58edd7d-cb04-4964-bead-9c72c843a283
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020
>
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020

D'accord, je vais regarder ça. Merci beaucoup pour toute votre aide en tout cas :)
Messages postés
10
Date d'inscription
mercredi 23 septembre 2020
Statut
Membre
Dernière intervention
6 octobre 2020
>
Messages postés
12660
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 octobre 2020

Ca fonctionne trés bien, merci beaucoup !