Private Sub TextBox1_Change()
If Me.TextBox1.Value = "" Then: Me.TextBox2.Value = "": Me.TextBox3.Value = "": Me.TextBox4.Value = "": Exit Sub
Dim StartSearch As String
Dim MyLastRow As Integer
Dim i As Integer
MyLastRow = Application.ThisWorkbook.Worksheets("Nonexpedier").Cells(Application.ThisWorkbook.Worksheets("Nonexpedier").Rows.Count, "A").End(xlUp).Row
StartSearch = VBA.LCase("*" & Me.TextBox1.Text & "*")
With Application.ThisWorkbook.Worksheets("Nonexpedier")
For i = 2 To MyLastRow
If VBA.LCase(VBA.CStr(Cells(i, 1))) Like StartSearch Then
Me.TextBox2.Value = .Cells(i, 2).Value
Me.TextBox3.Value = .Cells(i, 3).Value
Me.TextBox4.Value = .Cells(i, 4).Value
Exit For
End If
Next i
End With
End Sub
Bonsoir à tousBonjour
toute entrée dans un userform est toujours du texte
Clng(textbox1) ne fonctionnera que si l'entrée dans textbox1 ressemble à un chiffre
sinon il faut séparer le texte des chiffres
par ex:
textebox1 = 'lkjui 12356'
t=split(textbox1," ") 'va séparer textebox1 en autant d'item qu'il y a d'espaces)
ici, t(0) = 'lkjui'
t(1)= '12356'
ensuite on peut utiliser chiffre=Clng(t(0))
edit bonsoir M12
Private Sub btnfermer_Click() 'bouton activé aussi par ESC (propriété Cancel à True)
Unload Me
End Sub
Private Sub TextBox1_AfterUpdate()
Recherche ' après une actualisation, on recherche
End Sub
Private Sub TextBox1_Change()
' après une modif de textBox1, on recherche
TextBox2 = "": TextBox3 = "": TextBox4 = "" 'on efface les résultats affichés dans les TextBox 2,3,4
If TextBox1 Like "???? ????" Then Recherche 'si le code route répond au modèle, on procède à une recherche
End Sub
Private Sub CommandButton1_Click() 'bouton activé par la touche Entrée (propriété Default à True)
Recherche
End Sub
Sub Recherche()
'avec le tableau "tableau3" structuré de la feuille "Nonexpedier"
With Sheets("Nonexpedier").Range("tableau3")
' .Columns(1) est la première colonne des valeurs de tableau3
If WorksheetFunction.CountIf(.Columns(1), TextBox1) = 0 Then
'on n'a pas trouvé la valeur
MsgBox "Ce code route n'existe pas", vbInformation + vbOKOnly
Else
'on a trouvé la valeur. On met les valeurs dans les textbox 2,3,4
TextBox2 = Application.VLookup(Me.TextBox1, .Cells, 2, 0)
TextBox3 = Application.VLookup(Me.TextBox1, .Cells, 3, 0)
TextBox4 = Application.VLookup(Me.TextBox1, .Cells, 4, 0)
End If
End With
End Sub
Bonsoir,Bonjour à tous,
Une autre vision.
J'ai considéré (c'est osé, je sais) que les codes route sont du format : 4 caractères suivis d'un espace suivi de 4 caractères.
Le code est un peu commenté.
- si ce qu'on saisit dans textbox1 a le format qu'il faut, on procède à la recherche automatiquement
- sinon la recherche est déclenchée par la touche Entrée ou un click sur le bouton ?
- si on tape sur la touche Esc alors on referme la fenêtre
VB:Private Sub btnfermer_Click() 'bouton activé aussi par ESC (propriété Cancel à True) Unload Me End Sub Private Sub TextBox1_AfterUpdate() Recherche ' après une actualisation, on recherche End Sub Private Sub TextBox1_Change() ' après une modif de textBox1, on recherche TextBox2 = "": TextBox3 = "": TextBox4 = "" 'on efface les résultats affichés dans les TextBox 2,3,4 If TextBox1 Like "???? ????" Then Recherche 'si le code route répond au modèle, on procède à une recherche End Sub Private Sub CommandButton1_Click() 'bouton activé par la touche Entrée (propriété Default à True) Recherche End Sub Sub Recherche() 'avec le tableau "tableau3" structuré de la feuille "Nonexpedier" With Sheets("Nonexpedier").Range("tableau3") ' .Columns(1) est la première colonne des valeurs de tableau3 If WorksheetFunction.CountIf(.Columns(1), TextBox1) = 0 Then 'on n'a pas trouvé la valeur MsgBox "Ce code route n'existe pas", vbInformation + vbOKOnly Else 'on a trouvé la valeur. On met les valeurs dans les textbox 2,3,4 TextBox2 = Application.VLookup(Me.TextBox1, .Cells, 2, 0) TextBox3 = Application.VLookup(Me.TextBox1, .Cells, 3, 0) TextBox4 = Application.VLookup(Me.TextBox1, .Cells, 4, 0) End If End With End Sub
Bonsoir,
mais le format date donne ça:
Private Sub btnfermer_Click() 'bouton activé aussi par ESC (propriété Cancel à True)
Unload Me
End Sub
Private Sub TextBox1_Change()
' après une modif de textBox1, on recherche
TextBox2 = "": TextBox3 = "": TextBox4 = "" 'on efface les résultats affichés dans les TextBox 2,3,4
If TextBox1 Like "???? ????" Then Recherche 'si le code route répond au modèle, on procède à une recherche
End Sub
Private Sub CommandButton1_Click() 'bouton activé par la touche Entrée (propriété Default à True)
Recherche
End Sub
Sub Recherche()
'avec le tableau "tableau3" structuré de la feuille "Nonexpedier"
With Sheets("Nonexpedier").Range("tableau3")
' .Columns(1) est la première colonne des valeurs de tableau3
If WorksheetFunction.CountIf(.Columns(1), TextBox1) = 0 Then
'on n'a pas trouvé la valeur
MsgBox "Ce code route n'existe pas", vbInformation + vbOKOnly
Else
'on a trouvé la valeur. On met les valeurs dans les textbox 2,3,4
TextBox2 = Format(Application.VLookup(Me.TextBox1, .Cells, 2, 0), "dd/mm/yyyy")
TextBox3 = Application.VLookup(Me.TextBox1, .Cells, 3, 0)
TextBox4 = Application.VLookup(Me.TextBox1, .Cells, 4, 0)
End If
End With
End Sub
encore merci c'est super tout ça beau boulot.Je n'avais même pas prêté attention au format de la date
Voici la v1a corrigée (et un peu simplifiée)
VB:Private Sub btnfermer_Click() 'bouton activé aussi par ESC (propriété Cancel à True) Unload Me End Sub Private Sub TextBox1_Change() ' après une modif de textBox1, on recherche TextBox2 = "": TextBox3 = "": TextBox4 = "" 'on efface les résultats affichés dans les TextBox 2,3,4 If TextBox1 Like "???? ????" Then Recherche 'si le code route répond au modèle, on procède à une recherche End Sub Private Sub CommandButton1_Click() 'bouton activé par la touche Entrée (propriété Default à True) Recherche End Sub Sub Recherche() 'avec le tableau "tableau3" structuré de la feuille "Nonexpedier" With Sheets("Nonexpedier").Range("tableau3") ' .Columns(1) est la première colonne des valeurs de tableau3 If WorksheetFunction.CountIf(.Columns(1), TextBox1) = 0 Then 'on n'a pas trouvé la valeur MsgBox "Ce code route n'existe pas", vbInformation + vbOKOnly Else 'on a trouvé la valeur. On met les valeurs dans les textbox 2,3,4 TextBox2 = Format(Application.VLookup(Me.TextBox1, .Cells, 2, 0), "dd/mm/yyyy") TextBox3 = Application.VLookup(Me.TextBox1, .Cells, 3, 0) TextBox4 = Application.VLookup(Me.TextBox1, .Cells, 4, 0) End If End With End Sub