Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

djodjodjo

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

Oui.. enfin je suis un débutant en VBA ! Mais oui j'aurais pu/dû y penser

Ta solution semble meilleure, au moins en termes de lisibilité / propreté.. après je sais pas

Merci
 

djodjodjo

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

Bonsoir JB,

Très intéressant ! Je ne sais plus quoi choisir... ComboBox ou Boutons.. telle est la question !

Je vais méditer là-dessus, vous êtes au top les gars !

Bonne soirée
 

djodjodjo

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

Bonjour à tous,

j'aimerais modifier le code suivant (celui de JB proposé par JNP) :

Code:
Private Sub UserForm_Initialize()
'Dico par JB
Set f = Sheets("AIFN")
Set MonDico = CreateObject("Scripting.Dictionary")
With CreateObject("vbscript.regexp")
For Each c In f.Range("H42:H" & f.[H65000].End(xlUp).Row)
    .Global = False
    .Pattern = "[A-Za-zéèëê]+[- ]?[A-Za-zéèëê]+"
    If .Test(c.Value) Then MonDico(c.Value) = ""
Next c
End With
temp = MonDico.keys
Call tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
ComboBox1.AddItem "Autre"
End Sub

pour qu'il crée la liste non pas de toutes les valeurs uniques de la colonne H mais uniquement les valeurs uniques visibles dans la colonne H (un filtre a été appliqué et seules les valeurs restantes doivent apparaitre dans la liste).

Par avance, merci !
 

JNP

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

Re ,
Tu as de la chance, tu as eu JB himself ...
Code:
If .Test(c.Value) And c.EntireRow.Hidden = False Then MonDico(c.Value) = ""
devrait fonctionner !
Bonne suite
 

djodjodjo

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

Tip Top as usual

Pour info je pense que je vais garder la solution des Userform non modaux c'est + pratique et ça prendra moins de place !
 

djodjodjo

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

Bonjour à tous ,

ce message est adressé à tous et en particulier à JNP ou toute autre personne qui pourra m'aider !

J'utilise le Pattern suivant : .Pattern = "[A-Za-z1-9éèëê]+"
mais j'aimerais qu'il autorise aussi les "vides" : quand il n'y a pas de caractère du tout.. je ne vois pas du tout comment faire :| pourtant j'ai bien lu ton tuto JNP ^^

Peut-être un Pattern "par exclusion" qui autorise tout sauf les "0" (j'ai bien mis 1-9 dans le Pattern )

Merci d'avance !

Edit: Solution trouvée: J'ai viré le Pattern et j'ai modifié la ligne suivante:

If .Test(c.Value) And c.EntireRow.Hidden = False And c.Value <> 0 Then MonDico(c.Value) = ""
 
Dernière édition:

JNP

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

Re ,
Peut-être un Pattern "par exclusion" qui autorise tout sauf les "0" (j'ai bien mis 1-9 dans le Pattern )
Le pattern par exclusion, c'est [^0], mais techniquement, il ne faut pas oublier qu'un Pattern est un motif de texte, pas une valeur numérique, et je ne vois pas trop ce que tu veux faire des cellules vides ...
M'enfin, si ça marche
 

djodjodjo

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

Les cellules vides correspondent à des projets sans statut (certains sont "en cours", d'autres "terminés" etc.. et certains n'ont pas d'info donc ca génère des cellules vides...). Mes graphiques doivent prendre en compte tous les projets par statut, y compris les projets sans statut
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…