Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

djodjodjo

XLDnaute Occasionnel
Bonjour à tous :)

Aujourd'hui I have a dream that one day... qu'un jour une macro puisse réaliser miraculeusement (ou pas) ceci :

1) Récupérer la liste des valeurs uniques dans une colonne (récupérer la liste des valeurs du filtre?)
2) Créer des boutons portant le nom de chaque valeur unique récupérée
3) Aligner les boutons les uns après les autres
4) Affecter une macro (qui aura le nom de la valeur récupérée) à chaque bouton

... mais peut-être que je rêve un peu trop...

Je vous ai mis un beau petit exemple avec de jolis boutons de ma création (pas sûr qu'ils soient faisables par macro...)

Bien sûr j'adapterai le code en fonction de mes besoins, et même si vous n'avez envie de vous intéresser qu'à une seule étape ça m'aiderait déjà énormément! Même les petits bouts de pistes seront appréciés !

Par avance, merci :)
 

Pièces jointes

  • Création de boutons.xlsx
    11.9 KB · Affichages: 53
Dernière édition:

Dan

XLDnaute Barbatruc
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Bonjour

Je suppose que si tu veux des boutons c'est pour éxécuter une macro spécifique.

Donc plutôt que de créér tous ces objets sur ta feuille, pourquoi ne pas éxécuter la macro en faisant un double clique sur le nom se trouvant dans la colonne.

Amicalement

edit : A titre d'exemple, clique droite sur ta feuille 1, puis choisis "visualiser le code". Ensuite colle le code ci-dessous
Code:
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B3:B11")) Is Nothing Then MsgBox Target
Cancel = True
End Sub
Fais ensuite un double clique sur un nom au hasard.
 
Dernière édition:

djodjodjo

XLDnaute Occasionnel
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Bonjour Dan,

Ton code est très intéressant mais ça ne répond pas vraiment à mon besoin car en réalité il y a plusieurs colonnes, bien plus fournies, beaucoup moins lisibles, avec beaucoup plus de valeurs, de doublons, etc.. le but est justement de créer ces boutons par souci de simplicité et de visibilité pour l'utilisateur :)

Je garde quand même ton code dans un coin !

Merci
 

JNP

XLDnaute Barbatruc
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Bonjour le fil :),
La solution de Dan serait la plus simple :rolleyes:...
Sinon, pour le 1, vois les Dictionary à JB ICI :)
Pour le 2, ben il suffit de décrire le Dico du 1 et de regarder Shapes.AddShape dans l'aide ;)
Pour le 3, ben si tu as correctement utilisé le AddShape, ils sont déjà alignés :p...
Pour le 4, voir peut-être du côté de OnAction :rolleyes:...
Bon courage :cool:
 

djodjodjo

XLDnaute Occasionnel
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Bonjour Philippe,

De nouveau, ta contribution va m'être très utile mais j'ai réellement besoin de cette création de boutons... comme expliqué au post #3

Merci !

@JNP: Merci je vais essayer de creuser ça.. mais j'avoue que "décrire le dico du 1)" me fait un peu peur :)
 
Dernière édition:

djodjodjo

XLDnaute Occasionnel
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Re,

Pas mal, pas mal du tout ! En plus celui-ci fonctionne car je n'arrivais pas à faire fonctionner le code trouvé sur la page de JB ("utilisation incorrecte du mot clé Me"). Par contre trois petites questions :

1) Peux-tu me décrire par morceaux le fonctionnement de cette ligne (qui doit traiter les "-" et les "?" je suppose?) : .Pattern = "[A-Za-zéèëê]+[- ]?[A-Za-zéèëê]+" car je n'ai pas trouvé beaucoup d'aide dans celle d'Excel

2) Est-il possible "d'intégrer" l'Userform à la page active ? Pour ne pas qu'il "flotte" au dessus des feuilles et pour ne pas qu'on puisse le fermer (comme une liste déroulante intégrée à la page?)

3) Donc pour les boutons on oublie je pense ?

Merci JNP !
 

JNP

XLDnaute Barbatruc
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Re :),
1) Jette un oeil ICI, j'avais fait un petit tuto :p...
Grosso modo, je cherche "au moins une lettre" (j'ai pas mis tous les caractères accentués, il en manque peut-être pour certains prénoms...), 0 ou 1 tiret, et au moins une lettre, à l'exception de tout autre caractère :rolleyes:...
Mais si tu appelles des macros, tu ne pourras pas accepter les "-", donc tu peux modifier en "[A-Za-zéèëê]{2,}" pour 2 lettres ou plus :p
2) Non, un USF est flottant, mais tu peux définir sa position de départ en modifiant le code
Code:
Private Sub UserForm_Initialize()
Me.StartUpPosition = 3
Me.Left = 50
Me.Top = 150
'Dico par JB
...
et en adaptant les valeurs.
Pour l'empêcher de se refermer
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub
Sinon, ça doit être possible avec un combobox de formulaire de feuille, mais je ne les utilise jamais ;)...
Si tu modifies la colonne B en cours de route, il te faudra utiliser
Code:
Private Sub UserForm_Activate()
pour recharger le combobox avec les nouvelles valeurs.
3) Ben en ce qui me concerne, oui, mais toi, tu fais comme tu veux :p...
Bon courage :cool:
 

djodjodjo

XLDnaute Occasionnel
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Le souci du "Run ComboBox1.Text" c'est que si "Marcel" arrive dans la liste des prénoms, quand on cliquera dessus dans la Combobox ça renverra forcément une erreur puisque la macro "Marcel" n'aura jamais été créée.

Et je ne peux pas prévoir à l'avance quelles valeurs peuvent arriver dans la colonne :(

Edit: Je vais essayer de ne créer qu'une seule macro qui se servira uniquement du Combobox1.text pour tous les calculs. Merci pour toutes ces infos :)
 
Dernière édition:

Enairolf

XLDnaute Nouveau
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Bonsoir tous,

Si jamais vous trouvez une solution, je suis preneur! J'ai commencé à "jouer" avec les macros fin de semaine dernière et mon sujet n'a pas le bon intitulé du coup... Il parle de "choix de tri dans une macro", mais l'idée est proche de ce sujet.

Pas de contribution, mais je vous écoute avec grand intéret!
 

JNP

XLDnaute Barbatruc
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Re :),
Ah la la, que c'est compliqué :p...
Dans le module
Code:
Sub Appel(Macro As String)
Select Case Macro
Case "Jean", "Paul", "Jacques", "Pierre", "René", "Autre"
Run Macro
Case Else
MsgBox "Pas de macro associée !", vbCritical + vbOKOnly
End Select
End Sub
et tu change dans l'USF
Code:
Private Sub ComboBox1_Change()
Call Appel(ComboBox1.Text)
End Sub
Bon courage :cool:
 

djodjodjo

XLDnaute Occasionnel
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Héhé ça je "sais faire"... le truc c'est que je pas juste avertir l'utilisateur que la macro n'existe pas! Je veux (et j'exige! huhu) qu'une macro soit toujours associée à un choix de la combobox.list. Mais ça me semble impossible donc du coup j'ai fait ça:

Remplacé le Run ComboBox1.Text par ... le code que je veux exécuter en fonction du Combobox1.Text.. c'est peut-être moche mais bon tant que ça suffira...

j'ai voulu remplacer Run Combobox1.Text par Call MacroUnique() et placer dans cette MacroUnique du code utilsant Combobox1.Text mais ça ne fonctionne pas.. je suppose qu'on perd l'info contenue dans Combobox1.Text entre temps..
 

JNP

XLDnaute Barbatruc
Re : Macros création de boutons selon valeurs filtrables... l'espoir fait vivre !

Re :),
Soit tu y fais appel avec UserForm1.ComboBox1.Text :rolleyes:...
Soit tu passes l'argument comme mis dans mon dernier post :
Code:
Sub MacroUnique(MonCombo As String)
MsgBox MonCombo
Code:
Call MacroUnique(ComboBox1.Text)
Bon courage :cool:
 

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha