Userform Excel : Trouver si 2 valeurs différentes

Résolu
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020 - 25 août 2018 à 19:10
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 - 29 août 2018 à 22:55
Bonjour,

Contexte :
Je suis dans mon UserForm, je note le code dans ma TextBox et je clique sur mon bouton rechercher pour afficher les données de mes 21 TextBox.

Voici 2 exemples de formats différents pour les codes :
4108633 (sans tirets)
41-086-33 (avec des tirets)

Action :
Je note le code 41-086-33 dans ma TextBox3 et que je clique sur mon bouton rechercher :
>>> Résultat : Ok ; Ça me récupère bien les données de mes 21 TextBox.

Par contre, si je note ce même code mais sans les tirets 4108633 et que je clique sur mon bouton rechercher :
>>> Résultat : Ça ne me récupère rien (normal, puisque ce code est connu avec des tirets dans ma feuille Excel)

Ce que j'aimerais :
J'aimerais qu'en cliquant sur mon bouton de recherche, ça me trouve aussi bien le code avec que sans tirets.


Merci d'avance pour votre aide

Cordialement,
Alexis

6 réponses

cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
26 août 2018 à 08:03
Bonjour,

cela ne serait pas plus simple de faire cela:

Private Sub CommandButton1_Click()
If TextBox3.Text = "4108633" Then
TextBox3.Text = "41-086-33"
End If
MsgBox TextBox3.Text
End Sub



Où en es-tu avec ce post, as-tu trouvé la solution?


https://codes-sources.commentcamarche.net/forum/affich-10086698-signature-outlook-dans-macro-excel

1
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158
26 août 2018 à 11:10
Bonjour cs_Le Pivert
Effectivement mais rien ne nous dit que c'est toujours le même code à rentrer dans la TextBox !
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
27 août 2018 à 18:12
Bonjour,
Non, ce n'est jamais le même code. il y a environ une centaine de codes différents
0
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158 > 1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
27 août 2018 à 18:27
Bonjour !
As-tu essayé le code que je t'ai fourni ?
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
27 août 2018 à 18:53
En utilisant ton code ça fonctionne (uniquement pour le code 41-086-33, normal)
0
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158 > 1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
Modifié le 27 août 2018 à 19:45
bonjour

Les codes sont-ils toujours sous le format XX-XXX-XX où X représente un chiffre ?
Mon code ne spécifie aucun chiffre spécifiquement
0
cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
27 août 2018 à 22:20
une autre manière de procéder, forcer la saisie des tirets:

Option Explicit
Dim num As Boolean
Dim caract As String
Dim Valeur As Byte
Private Sub TextBox1_Change()
If num = True Then '1er caractère
'ancien
TextBox1.MaxLength = 9 'nb caracteres maxi dans textbox
 Valeur = Len(TextBox1)
If Valeur = 2 Or Valeur = 6 Then TextBox1 = TextBox1 & "-"
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
caract = Left(TextBox1.Value, 1)
If IsNumeric(caract) Then
num = True
Else
num = False '
End If
End Sub


Voilà tu as le choix
1
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158
27 août 2018 à 22:36
Bonsoir
J'ai modifié mon code car j'ai fait un oubli

Private Sub CommandButton3_Click()

Dim R As Range
Dim Chaine as String = Textbox3.Value ' code oublié 
Dim Ok as Boolean = false
' Test 9 caractères et si tirets en position 3 et 7 dans la Textbox
If Chaine.Length = 9 then
    If InStr(1,Chaine,,"-") = 3 And InStr(1,Chaine,"-") = 7 Then
        Ok = True ' la chaine est bien XX-XXX-XX
    End If
Else 
    ' Test si 7 Caractères et si la TextBox ne contient aucun tiret 
    If InStr(1, Chaine, "-") = 0 And Chaine.Length = 7 Then
        ' on insère les 2 tirets manquants
        Chaine = Chaine.Left(1,2) & "-" & Chaine.Mid(3,3) & "-" & Chaine(6,2)
        Ok = True
     End if
End If
If Ok = True Then
    Set R = Range("S1:a" & Range("A65536").End(xlUp).Row).Find(Chaine)
         If Not R Is Nothing Then
         Me.TextBox1 = R.Offset(0, -2).Text
         Me.TextBox2 = R.Offset(0, -1).Text
         Me.TextBox4 = R.Offset(0, 1).Text
         Me.TextBox5 = R.Offset(0, 2).Text
         Me.TextBox6 = R.Offset(0, 3).Text
         Me.TextBox7 = R.Offset(0, 31).Text
         Me.TextBox8 = R.Offset(0, 29).Text
         Me.TextBox9 = R.Offset(0, 6).Text
         Me.TextBox10 = R.Offset(0, 7).Text
         Me.TextBox11 = R.Offset(0, 8).Text
         Me.TextBox12 = R.Offset(0, 9).Text
         Me.TextBox13 = R.Offset(0, 10).Text
         Me.TextBox14 = R.Offset(0, 30).Text
         Me.TextBox15 = R.Offset(0, 23).Text
         Me.TextBox16 = R.Offset(0, 24).Text
         Me.TextBox17 = R.Offset(0, 25).Text
         Me.TextBox18 = R.Offset(0, 26).Text
         Me.TextBox19 = R.Offset(0, 27).Text
         Me.TextBox20 = R.Offset(0, 32).Text
         Me.TextBox21 = R.Offset(0, 16).Text
     End If
End If

End Sub
--
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
1
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158
25 août 2018 à 21:38
bonjour
ton bouton Recherche devrait faire la recherche 2 fois : une première fois avec les tirets et une seconde fois sans les tirets
Sans voir le code associé à ton bouton Rechercher difficile d'être plus précis
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
Modifié le 25 août 2018 à 22:57
Voici le code de mon bouton "Rechercher"

Private Sub CommandButton3_Click()
Dim R As Range
Set R = Range("S1:a" & Range("A65536").End(xlUp).Row).Find(TextBox3.Value)
        If Not R Is Nothing Then
        Me.TextBox1 = R.Offset(0, -2).Text
        Me.TextBox2 = R.Offset(0, -1).Text
        Me.TextBox4 = R.Offset(0, 1).Text
        Me.TextBox5 = R.Offset(0, 2).Text
        Me.TextBox6 = R.Offset(0, 3).Text
        Me.TextBox7 = R.Offset(0, 31).Text
        Me.TextBox8 = R.Offset(0, 29).Text
        Me.TextBox9 = R.Offset(0, 6).Text
        Me.TextBox10 = R.Offset(0, 7).Text
        Me.TextBox11 = R.Offset(0, 8).Text
        Me.TextBox12 = R.Offset(0, 9).Text
        Me.TextBox13 = R.Offset(0, 10).Text
        Me.TextBox14 = R.Offset(0, 30).Text
        Me.TextBox15 = R.Offset(0, 23).Text
        Me.TextBox16 = R.Offset(0, 24).Text
        Me.TextBox17 = R.Offset(0, 25).Text
        Me.TextBox18 = R.Offset(0, 26).Text
        Me.TextBox19 = R.Offset(0, 27).Text
        Me.TextBox20 = R.Offset(0, 32).Text
        Me.TextBox21 = R.Offset(0, 16).Text
        End If
End Sub


(Je précise que le code ci-dessus c'est une recherche liée a la TexBox3 car j'ai 2 autres recherches sur les TexBox1 et TexBox2)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158
26 août 2018 à 04:05
Bonjour
Il suffit d'utiliser la fonction Instr pour tester si la TextBox contient des tirets ou non
On vérifie aussi le nombre de caractères de la TextBox : 9 avec les tirets et 7 sans les tirets
Essaie ceci
Private Sub CommandButton3_Click()

Dim R As Range
Dim Chaine as String
Dim Ok as Boolean = false
' Test 9 caractères et si tirets en position 3 et 7 dans la Textbox
If Chaine.Length = 9 then
    If InStr(1,TextBox3.Value,"-") = 3 And InStr(1,Textbox3.Value,"-") = 7 Then
        Chaine = TextBox3.Value
        Ok = True
    End If
Else 
    ' Test si 7 Caractères et si la TextBox ne contient aucun tiret 
    If InStr(1, Chaine, "-") = 0 And Chaine.Length = 7 Then
        Chaine = TextBox3.Value
        ' on insère les 2 tirets manquants
        Chaine = Chaine.Left(1,2) & "-" & Chaine.Mid(3,3) & "-" & Chaine(6,2)
        Ok = True
     End if
End If
If Ok = True Then
    Set R = Range("S1:a" & Range("A65536").End(xlUp).Row).Find(Chaine)
         If Not R Is Nothing Then
         Me.TextBox1 = R.Offset(0, -2).Text
         Me.TextBox2 = R.Offset(0, -1).Text
         Me.TextBox4 = R.Offset(0, 1).Text
         Me.TextBox5 = R.Offset(0, 2).Text
         Me.TextBox6 = R.Offset(0, 3).Text
         Me.TextBox7 = R.Offset(0, 31).Text
         Me.TextBox8 = R.Offset(0, 29).Text
         Me.TextBox9 = R.Offset(0, 6).Text
         Me.TextBox10 = R.Offset(0, 7).Text
         Me.TextBox11 = R.Offset(0, 8).Text
         Me.TextBox12 = R.Offset(0, 9).Text
         Me.TextBox13 = R.Offset(0, 10).Text
         Me.TextBox14 = R.Offset(0, 30).Text
         Me.TextBox15 = R.Offset(0, 23).Text
         Me.TextBox16 = R.Offset(0, 24).Text
         Me.TextBox17 = R.Offset(0, 25).Text
         Me.TextBox18 = R.Offset(0, 26).Text
         Me.TextBox19 = R.Offset(0, 27).Text
         Me.TextBox20 = R.Offset(0, 32).Text
         Me.TextBox21 = R.Offset(0, 16).Text
     End If
End If

End Sub


Attention aucune vérification n'est faite sur les chiffres de la TextBox .
tu pourrais entrer autre chose que des chiffres : exemple 41-086-RR à la place de 41-086-33
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
27 août 2018 à 18:11
"Erreur de compilation: Erreur de syntaxe"
Dim Ok As Boolean = false
0
vb95 Messages postés 3060 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 28 septembre 2022 158 > 1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
Modifié le 29 août 2018 à 22:55
Salut
false avec un F majuscucle à mon avis
0
1Alexiiis Messages postés 48 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 14 décembre 2020
29 août 2018 à 22:51
Nickel, merci à vous 2 pour votre aide :)
0