Bonjour à tous.
Je suis nouveau ici, et débutant en VBA, aussi, je me retrouve confronter à
un problème comme nombres de débutant.
En fait, je voudrais que lorsque je tapes du texte dans une textbox, il me
recherche la chaine de caractères equivalente dans une listbox (je pourrais
faire dans une combobox, mais, ça ne correspond pas à ce que je veux). Et
s'il ne trouve pas qu'il ne parte pas dans tous les sens comme c'est
actuellement le cas. Je n'ose même pas mettre mon code tellement il me
parait mauvais.
Voilà merci d'avance à tous.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis Michon
Bonjour Ticker,
Es-tu dans un formulaire ?
Si tes contrôles sont directement dans la feuille, ils émanent de quelle barre d'outils: "Formulaire" ou "Contrôle" ?
Salutations!
"Ticker" a écrit dans le message de news: Bonjour à tous. Je suis nouveau ici, et débutant en VBA, aussi, je me retrouve confronter à un problème comme nombres de débutant. En fait, je voudrais que lorsque je tapes du texte dans une textbox, il me recherche la chaine de caractères equivalente dans une listbox (je pourrais faire dans une combobox, mais, ça ne correspond pas à ce que je veux). Et s'il ne trouve pas qu'il ne parte pas dans tous les sens comme c'est actuellement le cas. Je n'ose même pas mettre mon code tellement il me parait mauvais. Voilà merci d'avance à tous.
Bonjour Ticker,
Es-tu dans un formulaire ?
Si tes contrôles sont directement dans la feuille, ils émanent de quelle barre d'outils: "Formulaire" ou "Contrôle" ?
Salutations!
"Ticker" <nospam-ticker.alpha@wanadoo.fr> a écrit dans le message de news:OvzmGhEiDHA.2120@TK2MSFTNGP10.phx.gbl...
Bonjour à tous.
Je suis nouveau ici, et débutant en VBA, aussi, je me retrouve confronter à
un problème comme nombres de débutant.
En fait, je voudrais que lorsque je tapes du texte dans une textbox, il me
recherche la chaine de caractères equivalente dans une listbox (je pourrais
faire dans une combobox, mais, ça ne correspond pas à ce que je veux). Et
s'il ne trouve pas qu'il ne parte pas dans tous les sens comme c'est
actuellement le cas. Je n'ose même pas mettre mon code tellement il me
parait mauvais.
Voilà merci d'avance à tous.
Si tes contrôles sont directement dans la feuille, ils émanent de quelle barre d'outils: "Formulaire" ou "Contrôle" ?
Salutations!
"Ticker" a écrit dans le message de news: Bonjour à tous. Je suis nouveau ici, et débutant en VBA, aussi, je me retrouve confronter à un problème comme nombres de débutant. En fait, je voudrais que lorsque je tapes du texte dans une textbox, il me recherche la chaine de caractères equivalente dans une listbox (je pourrais faire dans une combobox, mais, ça ne correspond pas à ce que je veux). Et s'il ne trouve pas qu'il ne parte pas dans tous les sens comme c'est actuellement le cas. Je n'ose même pas mettre mon code tellement il me parait mauvais. Voilà merci d'avance à tous.
Denis Michon
Bonjour Ticker,
Essaie ceci : Adapte le nom des contrôles si nécessaire.
'-------------------------------------- Private Sub TextBox1_Change()
Dim MaList(), Nb As Integer, A As Integer Dim C As String, B As Variant Nb = Me.ComboBox1.ListCount - 1
ReDim Preserve MaList(Nb) For A = 0 To Nb MaList(A) = Left(Me.ComboBox1.List(A), Len(Me.TextBox1)) Next
C = Me.TextBox1.Text B = Application.Match(C, MaList, 0)
If Not IsError(B) Then Me.ComboBox1.Value = Me.ComboBox1.List(B - 1) End If
End Sub '--------------------------------------
Salutations!
"Ticker" a écrit dans le message de news: J'utilise 1 userform pour réaliser ce programme. Je mets quand même mon code (je précise que je fais du VBA depuis vendredi dernier :o) ) Ce code que j'ai modifié depuis la dernière fois marche à peu près. Mais si le mot n'est pas dans la liste, il selectionne le dernier mot. j'ai encore cherché, mais impossible pour moi de lui dire de rester sur le dernier mot trouvé :-( Il ne revient au bon endroit que si on corrige pour qu'il trouve une chaine correcte.
----------------------------------------------------------------------------------------- Public C As Integer ---------------------------------- Private Sub UserForm_Initialize() Dim i As Integer
# J'ai mis 10 pour C car je travaille sur un exemple, ce n'est pas mon programme que je fais actuellement
C = 10
# Je crée ma petite liste
For i = 1 To 50 C = C + 1 ListBox1.AddItem C & "Choice" & (ListBox1.ListCount + 1) Next i
# Par defaut, l'index est à -1,c'est pour ça que j'ai ajouté 1 (je sais pas si c'est vraiment utile)
# C me permet de connaitre la valeur maximum de l'index, sinon il y a un bug. Il compte le nombre de mot dans ma liste # Dans la boucle While je cherche une chaine equivalente à celle tapée
While LCase(TextBox1.Text) <> LCase(Left(ListBox1.Text, Longueur)) And ListBox1.ListIndex < C - 12 ListBox1.ListIndex = ListBox1.ListIndex + 1
# L'instruction If est une tentative de sauvegarde de la dernière valeur correct de l'index, pour ne pas qu'il descende jusqu'au dernier mot
If TextBox1.Text = Left(ListBox1.Text, Longueur) Then Sauve = ListBox1.ListIndex: Exit Sub Wend ListBox1.ListIndex = Sauve
End Sub ----------------------------------- Si vous avez besoin d'autres informations pour m'aider, n'hésitez pas. Merci beaucoup A bientôt!
Bonjour Ticker,
Essaie ceci : Adapte le nom des contrôles si nécessaire.
'--------------------------------------
Private Sub TextBox1_Change()
Dim MaList(), Nb As Integer, A As Integer
Dim C As String, B As Variant
Nb = Me.ComboBox1.ListCount - 1
ReDim Preserve MaList(Nb)
For A = 0 To Nb
MaList(A) = Left(Me.ComboBox1.List(A), Len(Me.TextBox1))
Next
C = Me.TextBox1.Text
B = Application.Match(C, MaList, 0)
If Not IsError(B) Then
Me.ComboBox1.Value = Me.ComboBox1.List(B - 1)
End If
End Sub
'--------------------------------------
Salutations!
"Ticker" <nospam-ticker.alpha@wanadoo.fr> a écrit dans le message de news:eJhvsDOiDHA.2120@TK2MSFTNGP10.phx.gbl...
J'utilise 1 userform pour réaliser ce programme. Je mets quand même mon code (je précise que je fais du VBA depuis
vendredi dernier :o) )
Ce code que j'ai modifié depuis la dernière fois marche à peu près. Mais si le mot n'est pas dans la liste, il
selectionne le dernier mot. j'ai encore cherché, mais impossible pour moi de lui dire de rester sur le dernier mot
trouvé :-(
Il ne revient au bon endroit que si on corrige pour qu'il trouve une chaine correcte.
-----------------------------------------------------------------------------------------
Public C As Integer
----------------------------------
Private Sub UserForm_Initialize()
Dim i As Integer
# J'ai mis 10 pour C car je travaille sur un exemple, ce n'est pas mon programme que je fais actuellement
C = 10
# Je crée ma petite liste
For i = 1 To 50
C = C + 1
ListBox1.AddItem C & "Choice" & (ListBox1.ListCount + 1)
Next i
# Par defaut, l'index est à -1,c'est pour ça que j'ai ajouté 1 (je sais pas si c'est vraiment utile)
# C me permet de connaitre la valeur maximum de l'index, sinon il y a un bug. Il compte le nombre de mot dans ma liste
# Dans la boucle While je cherche une chaine equivalente à celle tapée
While LCase(TextBox1.Text) <> LCase(Left(ListBox1.Text, Longueur)) And ListBox1.ListIndex < C - 12
ListBox1.ListIndex = ListBox1.ListIndex + 1
# L'instruction If est une tentative de sauvegarde de la dernière valeur correct de l'index, pour ne pas qu'il descende
jusqu'au dernier mot
If TextBox1.Text = Left(ListBox1.Text, Longueur) Then Sauve = ListBox1.ListIndex: Exit Sub
Wend
ListBox1.ListIndex = Sauve
End Sub
-----------------------------------
Si vous avez besoin d'autres informations pour m'aider, n'hésitez pas.
Merci beaucoup
A bientôt!
Essaie ceci : Adapte le nom des contrôles si nécessaire.
'-------------------------------------- Private Sub TextBox1_Change()
Dim MaList(), Nb As Integer, A As Integer Dim C As String, B As Variant Nb = Me.ComboBox1.ListCount - 1
ReDim Preserve MaList(Nb) For A = 0 To Nb MaList(A) = Left(Me.ComboBox1.List(A), Len(Me.TextBox1)) Next
C = Me.TextBox1.Text B = Application.Match(C, MaList, 0)
If Not IsError(B) Then Me.ComboBox1.Value = Me.ComboBox1.List(B - 1) End If
End Sub '--------------------------------------
Salutations!
"Ticker" a écrit dans le message de news: J'utilise 1 userform pour réaliser ce programme. Je mets quand même mon code (je précise que je fais du VBA depuis vendredi dernier :o) ) Ce code que j'ai modifié depuis la dernière fois marche à peu près. Mais si le mot n'est pas dans la liste, il selectionne le dernier mot. j'ai encore cherché, mais impossible pour moi de lui dire de rester sur le dernier mot trouvé :-( Il ne revient au bon endroit que si on corrige pour qu'il trouve une chaine correcte.
----------------------------------------------------------------------------------------- Public C As Integer ---------------------------------- Private Sub UserForm_Initialize() Dim i As Integer
# J'ai mis 10 pour C car je travaille sur un exemple, ce n'est pas mon programme que je fais actuellement
C = 10
# Je crée ma petite liste
For i = 1 To 50 C = C + 1 ListBox1.AddItem C & "Choice" & (ListBox1.ListCount + 1) Next i
# Par defaut, l'index est à -1,c'est pour ça que j'ai ajouté 1 (je sais pas si c'est vraiment utile)
# C me permet de connaitre la valeur maximum de l'index, sinon il y a un bug. Il compte le nombre de mot dans ma liste # Dans la boucle While je cherche une chaine equivalente à celle tapée
While LCase(TextBox1.Text) <> LCase(Left(ListBox1.Text, Longueur)) And ListBox1.ListIndex < C - 12 ListBox1.ListIndex = ListBox1.ListIndex + 1
# L'instruction If est une tentative de sauvegarde de la dernière valeur correct de l'index, pour ne pas qu'il descende jusqu'au dernier mot
If TextBox1.Text = Left(ListBox1.Text, Longueur) Then Sauve = ListBox1.ListIndex: Exit Sub Wend ListBox1.ListIndex = Sauve
End Sub ----------------------------------- Si vous avez besoin d'autres informations pour m'aider, n'hésitez pas. Merci beaucoup A bientôt!
Ticker
Le code fonctionne encore mieux que ce que j'esperais. Un grand merci, j'ai déjà mis votre nom dans les remerciements.
Le code fonctionne encore mieux que ce que j'esperais.
Un grand merci, j'ai déjà mis votre nom dans les remerciements.