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

1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 25 août 2018 à 19:10 - Dernière réponse : vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention
- 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 

Votre réponse

15 réponses

Meilleure réponse
cs_Le Pivert 5363 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention - 26 août 2018 à 08:03
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

Merci cs_Le Pivert 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 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
vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention > 1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 27 août 2018 à 18:27
Bonjour !
As-tu essayé le code que je t'ai fourni ?
1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 27 août 2018 à 18:53
En utilisant ton code ça fonctionne (uniquement pour le code 41-086-33, normal)
vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention > 1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 27 août 2018 à 19:43
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 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 27 août 2018 à 19:53
Bjr,
Toujours un chiffre à la place des X
Commenter la réponse de cs_Le Pivert
Meilleure réponse
cs_Le Pivert 5363 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention - 27 août 2018 à 22:20
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

Merci cs_Le Pivert 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
Meilleure réponse
vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention - 27 août 2018 à 22:36
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. 

Merci vb95 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de vb95
vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention - 25 août 2018 à 21:38
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 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 25 août 2018 à 22:21
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
vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention - 26 août 2018 à 04:05
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 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 27 août 2018 à 18:11
"Erreur de compilation: Erreur de syntaxe"
Dim Ok As Boolean = false
vb95 1669 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 24 septembre 2018 Dernière intervention > 1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 29 août 2018 à 22:55
Salut
false avec un F majuscucle à mon avis
Commenter la réponse de vb95
1Alexiiis 25 Messages postés vendredi 14 juin 2013Date d'inscription 29 août 2018 Dernière intervention - 29 août 2018 à 22:51
0
Merci
Nickel, merci à vous 2 pour votre aide :)
Commenter la réponse de 1Alexiiis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.