Liste déroulante demi saisie
Bonjour,
J'ai un problème avec la liste déroulante demi saisie.
En effet d'après les tutoriels avec =DECALER
Rien ne se fait.
J'ai crée un gestionnaire de noms : Nom et catégorie, et j'aimerai l'intégré dans Inventaire Banque
Comment résoudre ce problème ?
Merci d'avance
Bonjour
Tu ne peux que traiter la colonne B
Tu sélectionnes B3:B37
Ruban --> Onglet Données -->Validation des données -->Liste et formule
=DECALER(Nom;EQUIV(B3&"*";Nom;0)-1;;NB.SI(Nom;B3&"*"))
Attention ce n'est pas la même qui était en place, tu avais B5 à la place de B3
Ensuite il faut trier la colonne Nom de la page "Base de Donnée"
Merci de ta réponse,
Cependant, je rencontre un problème.
Une fois le nom mis, y'a pas la catégorie qui se met automatiquement par rapport au nom.
Comment y remédier à ça ?
Cordialement
Bonjour
Supprime d'abord les listes de validation en colonne C
Copie cette formule dans la colonne C à partir de C3
=SIERREUR(RECHERCHEV(B3;Tableau10[#Tout];2;FAUX);"")
Super,
Juste une dernière chose, j'aimerai bien avoir liste de cascade saisie semai-automatique type google.
Comme ce document çi-joint :
Celui qui m'intéresse le plus est celui de la colonne B. Évidemment, la console m'indique une erreur vu que je suis encore une novice dans le domaine de VBA.
Voici mon code :
Dim TblNom()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([b3:b10000], Target) Is Nothing And Target.Count = 1 Then
b = Sheets("Base de Donnée").Range("Nom").Value
Set d1 = CreateObject("Scripting.Dictionary")
For Each c In b
d1(c) = ""
Next c
TblDep = d1.keys
Me.ComboBox1.List = d1.keys
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
If Target <> "" Then SendKeys "{esc}"
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" Then
Set d1 = CreateObject("Scripting.Dictionary")
tmp = UCase(Me.ComboBox1) & "*"
For Each c In TblDep
If UCase(c) Like tmp Then d1(c) = ""
Next c
Me.ComboBox1.List = d1.keys
Me.ComboBox1.DropDown
End If
ActiveCell.Value = Me.ComboBox1
End Sub
Et dans le module 2 (car la module 1 est déjà présent pour une autre feuille)
Sub xx()
For Each c In Selection
c.Value = Trim(c)
Next c
End Sub
Et celui ci pour le module 1 en cas où si besoin
Sub Recherche()
Dim Ligne
Ligne = Application.Match(CSng(Date), Columns("B"), 0)
If Not IsError(Ligne) Then
On Error Resume Next
Rows(Ligne).ShowDetail = True
On Error GoTo 0
Range("B" & Ligne).Select
End If
End Sub
Cordialement
Bonjour,
- Frapper des lettres contenues dans le nom (chat e.g.)
- Le combobox affiche tous les noms qui contiennent chat
- un double-clic affiche tous les noms
Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([B3:B1000], Target) Is Nothing And Target.Count = 1 Then
a = Application.Transpose(Sheets("base de donnée").Range("nom"))
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule (optionel)
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
End If
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = a
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub
Ceuzin
Bonjour,
Super, le problème est résolu et merci beaucoup à vous !
Bonne journée