code vba formulaire de recherche erreur 13

yohan60

XLDnaute Nouveau
Bonjour,

j'ai crée un formulaire de recherche mais j'ai une erreur qui apparait, j'apprend de jour en jour mais je suis pas encore un expert en vba quelqu'un peux me dire d'ou vient l'erreur et m'aider à la corriger.

merci d'avance essai1.JPG
 

Pièces jointes

  • Essai1.xlsm
    32.7 KB · Affichages: 22

mutzik

XLDnaute Barbatruc
Bonjour

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
 

Rhysand

XLDnaute Junior
Bonsoir à tous


Une autre idée différente


VB:
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
 

yohan60

XLDnaute Nouveau
Bonjour

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
Bonsoir à tous

je vous remercie d'avoir pris du temps pour m'expliquer.

à bientôt
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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.
  • si ce qu'on saisit dans textbox1 (majuscules ou minuscules) 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
Le code est un peu commenté.

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
 

Pièces jointes

  • yohan60- Essai1- v1.xlsm
    26.9 KB · Affichages: 7
Dernière édition:

yohan60

XLDnaute Nouveau
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.
  • 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
Le code est un peu commenté.

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,

ton code est super je vais surement m'en servir, mais le format date donne ça:
 

Pièces jointes

  • 001.JPG
    001.JPG
    12.1 KB · Affichages: 5

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
mais le format date donne ça:
1605128642532.png

Je n'avais même pas prêté attention au format de la date :confused:
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
 

Pièces jointes

  • yohan60- Essai1- v1a.xlsm
    26.1 KB · Affichages: 12

yohan60

XLDnaute Nouveau
Je n'avais même pas prêté attention au format de la date :confused:
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
encore merci c'est super tout ça beau boulot.
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 183
Membres
112 677
dernier inscrit
Justine11