Userform Excel : Trouver si 2 valeurs différentes [Résolu]

Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
- - Dernière réponse : vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
- 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
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
6285
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 octobre 2019
87
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
Bonjour,
Non, ce n'est jamais le même code. il y a environ une centaine de codes différents
vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68 > 1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
Bonjour !
As-tu essayé le code que je t'ai fourni ?
1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
En utilisant ton code ça fonctionne (uniquement pour le code 41-086-33, normal)
vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68 > 1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
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
1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
Bjr,
Toujours un chiffre à la place des X
Commenter la réponse de cs_Le Pivert
Messages postés
6285
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 octobre 2019
87
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
1
Merci
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. 

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
0
Merci
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
1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
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)
Commenter la réponse de vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
0
Merci
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
1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
"Erreur de compilation: Erreur de syntaxe"
Dim Ok As Boolean = false
vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68 > 1Alexiiis
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
-
Salut
false avec un F majuscucle à mon avis
Commenter la réponse de vb95
Messages postés
43
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
9 juillet 2019
0
Merci
Nickel, merci à vous 2 pour votre aide :)
Commenter la réponse de 1Alexiiis