Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
La Solution de PierreJean me semble celle que tu as demandé...
Mais je mettrais un bemol: Comment va tu travailler si ta liste deviens fort longue.
J'ai developpé en son temps une macro qui permettais de selectionner façilement sur base de critères au sein d'une liste.
Comment voir le résultat: entre "1000" ou "Jean" .
A chaque caractère ajouté la liste des clients va se réduire ... et tu peux sélectionner celui qui te conviens .
Il faut avoir compris une fois pour toutes qu'une liste de validation de données n'a que 2 possibilités :
- soit la liste est définie "en dur" (comme le fait pierrejean) et dans ce cas la liste est limitée à 255 caractères (y compris les séparateurs ";")
- soit la liste est définie par une plage de cellules dans la feuille (comme le fait JHA) ou dans une autre feuille.
On peut utiliser une ComboBox qui offre 3 méthodes de définition de sa liste : AddItem, ListFillRange, List.
Voyez le fichier joint avec la méthode AddItem (qui prend plus de temps que les 2 autres) :
Code:
Private Sub ComboBox1_GotFocus()
Dim t, i&
t = [A1].CurrentRegion.Resize(, 2)
ComboBox1.Clear 'RAZ
For i = 2 To UBound(t)
ComboBox1.AddItem t(i, 1) & " " & t(i, 2)
Next
ComboBox1.DropDown
End Sub
Il vaut beaucoup mieux utiliser la méthode List, elle est très rapide :
Code:
Private Sub ComboBox1_GotFocus()
Dim t, a$(), i&
t = [A1].CurrentRegion.Resize(, 2)
If UBound(t) = 1 Then ComboBox1.Clear: Exit Sub
ReDim a(1 To UBound(t) - 1)
For i = 2 To UBound(t)
a(i - 1) = t(i, 1) & " " & t(i, 2)
Next
ComboBox1.List = a
ComboBox1.DropDown
End Sub
Oui, je l'ai remarqué et changé par Change. J'ai ajouté à la fin Combobox1.Select pour enlever le focus(enfin je crois que c'est comme ça quon dit)
VB:
Option Explicit
Private Sub ComboBox1_Change()
If ComboBox1.Text <> "" Then
Call Insert
Else
Exit Sub
End If
End Sub
Sub Insert()
Dim t, a$(), i&
t = [A1].CurrentRegion.Resize(, 4)
If UBound(t) = 1 Then ComboBox1.Clear: Exit Sub
ReDim a(1 To UBound(t) - 1)
For i = 2 To UBound(t)
a(i - 1) = t(i, 1) & " - " & t(i, 2) & " - " & t(i, 3) & " - " & t(i, 4)
Next
ComboBox1.List = a
ComboBox1.Select
End Sub
- 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