Liste déroulante boîte à outil contrôle
Fermé
Melmex
-
6 mai 2011 à 10:25
Melmex Messages postés 11 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 18 mai 2011 - 16 mai 2011 à 16:47
Melmex Messages postés 11 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 18 mai 2011 - 16 mai 2011 à 16:47
A voir également:
- Liste déroulante boîte à outil contrôle
- Liste déroulante excel - Guide
- Se connecter à ma boite hotmail - Guide
- Liste déroulante en cascade - Guide
- Télécharger outil capture d'écran ciseaux - Télécharger - Capture d'écran
- Controle parental pc - Guide
3 réponses
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
9 mai 2011 à 10:16
9 mai 2011 à 10:16
Bonjour,
Pour centrer le texte, tu vas dans propriété de ton bouton (en mode création, clic droit) et tu as TextAlign, tu choisis 2-fmtextalignercenter.
Pour la seconde, il faut faire une macro :
Outils, macro, visual basic éditor.
a gauche, tu double cliques sur ta feuille et tu colles ca :
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'combobox1 est le nom de ta liste déroulante, si c'est pas ca, remplace par son nom, tu l'as dans propriété name
a = ""
i = 1 'si tes valeurs commencent à la ligne ecris i=2, si c'est 3, i=3
Do While Sheets("Feuil2").Cells(i, 1) <> "" 'cells(ligne, colonne), s ta colonne est 2 mets cells(i,2)
If Cells(i, 1) = ComboBox1.Value Then 'idem pour le nom de ta liste déroulante
a = 1
End If
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value 'idem pour le nom de ta liste déroulante
End If
a = ""
End Sub
A chaque fois que tu feras un double clic sur ta liste déroulante, ca vérifiera si la donnée est présente et le cas échéant ca l'ajoutera
Pour centrer le texte, tu vas dans propriété de ton bouton (en mode création, clic droit) et tu as TextAlign, tu choisis 2-fmtextalignercenter.
Pour la seconde, il faut faire une macro :
Outils, macro, visual basic éditor.
a gauche, tu double cliques sur ta feuille et tu colles ca :
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'combobox1 est le nom de ta liste déroulante, si c'est pas ca, remplace par son nom, tu l'as dans propriété name
a = ""
i = 1 'si tes valeurs commencent à la ligne ecris i=2, si c'est 3, i=3
Do While Sheets("Feuil2").Cells(i, 1) <> "" 'cells(ligne, colonne), s ta colonne est 2 mets cells(i,2)
If Cells(i, 1) = ComboBox1.Value Then 'idem pour le nom de ta liste déroulante
a = 1
End If
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value 'idem pour le nom de ta liste déroulante
End If
a = ""
End Sub
A chaque fois que tu feras un double clic sur ta liste déroulante, ca vérifiera si la donnée est présente et le cas échéant ca l'ajoutera
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
16 mai 2011 à 10:48
16 mai 2011 à 10:48
Cette partie permet de balayer ton tableau.
Si ta valeur est dans ton tableau alors a=1
si ta valeur n'est pas dans ton tableau alors a=""
si a="", on rajoute la valeur.
Est-ce plus clair?
Si ca ne l'est pas rapetisse la fenetre ou tu as ton code et appuies sur f8.
Tu verras sur excel, ce que ca fait.
Si ta valeur est dans ton tableau alors a=1
si ta valeur n'est pas dans ton tableau alors a=""
si a="", on rajoute la valeur.
Est-ce plus clair?
Si ca ne l'est pas rapetisse la fenetre ou tu as ton code et appuies sur f8.
Tu verras sur excel, ce que ca fait.
Melmex
Messages postés
11
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
16 mai 2011 à 11:44
16 mai 2011 à 11:44
Si, Merci Mélanie, c'est plus clair.
Donc en fait je met pareil dans chacun des "cells(1,2)".
(PS: je t'ai envoyé un mail avec un autre problème de liste déroulante, je ne sais pas si tu as vu. Si tu pouvais m'aider j'apprecierais vraiment :/)
Donc en fait je met pareil dans chacun des "cells(1,2)".
(PS: je t'ai envoyé un mail avec un autre problème de liste déroulante, je ne sais pas si tu as vu. Si tu pouvais m'aider j'apprecierais vraiment :/)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
16 mai 2011 à 12:11
16 mai 2011 à 12:11
Bonjour
si ta liste ne comporte pas de trous
la liste commence dans cette démo en C2 feuille2
ton combo en feuille1
chaque que tu ajoutes ou modifies une donnée dans la liste, le combo est mis à jour
pour installer la macro:
copier cette macro
clic droit sur l'onglet de la feuille2 (où il y a la liste)
visualiser le code
coller
si ta liste ne comporte pas de trous
la liste commence dans cette démo en C2 feuille2
ton combo en feuille1
chaque que tu ajoutes ou modifies une donnée dans la liste, le combo est mis à jour
Private Sub Worksheet_Change(ByVal Target As Range) Dim nbre As Byte If Not Intersect(Target, Range("liste")) Is Nothing Then nbre = Application.CountA(Range("liste")) Feuil1.ComboBox1.ListFillRange = "feuil2!$C$2:$C$" & nbre + 2 End If End Sub
pour installer la macro:
copier cette macro
clic droit sur l'onglet de la feuille2 (où il y a la liste)
visualiser le code
coller
Melmex
Messages postés
11
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
16 mai 2011 à 12:18
16 mai 2011 à 12:18
Bonjour Michel, :)
Merci pour ta réponse!
Et si je met cette ComboBox1 dans un userform il faudrait modifier quoi dans ton code pour l'adapter?
Merci
Merci pour ta réponse!
Et si je met cette ComboBox1 dans un userform il faudrait modifier quoi dans ton code pour l'adapter?
Merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
16 mai 2011 à 13:57
16 mai 2011 à 13:57
Tout dépend si ta liste peut être modifiée ou non après le lancement de l'userform et avant unload.
ici le combo propose les éléments présents dans ta liste au lancement de l'userform ( il n'est plus nécessaire de garder un nom à la liste
toujours si ta liste n'a pas de trous!
ici le combo propose les éléments présents dans ta liste au lancement de l'userform ( il n'est plus nécessaire de garder un nom à la liste
toujours si ta liste n'a pas de trous!
Private Sub UserForm_Initialize() For lig = 2 To Feuil2.Range("C2").End(xlDown).Row ComboBox1.AddItem Feuil2.Cells(lig, "C") Next End Sub
Melmex
Messages postés
11
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
16 mai 2011 à 14:07
16 mai 2011 à 14:07
Comment peut-on savoir si elle peut être modifié ou non après le lancement de l'UserForm?
Si je ne donne pas de nom à la liste comment la comboBox va chercher les nom de la liste?
Lorsque je tape ce code et que je lance le UserForm pour tester :
Private Sub UserForm_Initialize()
For lig = 1 To Feuil46.Range("B1").End(xlDown).Row
ComboBox1.AddItem Feuil46.Cells(lig, "B")
Next
End Sub
Il y a un bug. il y a UserForm1.show surligné en jaune alors que sans ce code il n'y a pas de problème.
Si je ne donne pas de nom à la liste comment la comboBox va chercher les nom de la liste?
Lorsque je tape ce code et que je lance le UserForm pour tester :
Private Sub UserForm_Initialize()
For lig = 1 To Feuil46.Range("B1").End(xlDown).Row
ComboBox1.AddItem Feuil46.Cells(lig, "B")
Next
End Sub
Il y a un bug. il y a UserForm1.show surligné en jaune alors que sans ce code il n'y a pas de problème.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
16 mai 2011 à 14:40
16 mai 2011 à 14:40
Il y a un bug.
J'avais testé avant de t'envoyer ce bout de code: c'était OK
Comment peut-on savoir si elle peut être modifié ou non après le lancement de l'UserForm?
Il faut que un de tes codes fasse une modif directement ou indirectement à partir de l'userform puisque ce dernier a pris la main
J'avais testé avant de t'envoyer ce bout de code: c'était OK
Comment peut-on savoir si elle peut être modifié ou non après le lancement de l'UserForm?
Il faut que un de tes codes fasse une modif directement ou indirectement à partir de l'userform puisque ce dernier a pris la main
Melmex
Messages postés
11
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
16 mai 2011 à 16:47
16 mai 2011 à 16:47
Il ne faudrait pas le mettre ailleurs ce code? ou pas pour "initialize" mais un autre truc ?
16 mai 2011 à 09:29
(Désolé de répondre que maintenant)
16 mai 2011 à 09:37
Je ne comprend pas trop à quoi sert cette partie, tu pourrais m'expliquer? (et du coup je ne sais pas quelle numero de colonne je dois mettre à la place du "2")
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value 'idem pour le nom de ta liste déroulante
End If
a = ""
End Sub
Merci
16 mai 2011 à 12:13
Je tape :
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
a = ""
i = 1
Do While Sheets("Feuil46").Cells(i, 2) <> ""
If Cells(i, 2) = ComboBox1.Value Then
a = 1
End If
Loop
If a = "" Then
Cells(i, 2) = ComboBox1.Value
End If
a = ""
End Sub
Et lorsque je test il y a un bug et ça surligne en jaune la ligne
"Do While Sheets("Feuil46").Cells(i, 2) <> "" "
et je n'arrive pas à comprendre pourquoi!
16 mai 2011 à 12:14