[VBA] Corriger code - vérifier valeur dans plage

Bonsoir,

Je n'arrive pas à comprendre ce qui cloche dans mon code qui est supposé vérifier la présence, de ce qui est renseigné dans une textbox, dans une plage de donnée.

Si la valeur existe, alors le code doit se poursuivre ; mais si la valeur n'existe pas, alors il doit me l'indiquer.

Le problème c'est qu'il m'indique que la valeur est absente, même lorsque ce n'est pas le cas :/

Voici le code en question :

Dim re As Worksheet, co As Worksheet

Private Sub TextBox1_Change()
n = TextBox1.Value
End Sub

Private Sub CommandButton1_Click()
Set re = Worksheets("Regroupement")
Set co = Worksheets("Correspondances")

lrre = re.Cells(Rows.Count, 1).End(xlUp).Row

Dim vari As Range, plge As Range

'Tester mes variables
'Cells(2, 2).Value = n
'Cells(2, 2).Value = lrre

    Set plge = re.Range("B1:B" & lrre)
    'Worksheets("Regroupement").Range(Cells(2, 2), Cells(lrre, 2))
    For Each vari In plge 'plge '("B2:B150") '
    If vari.Value <> n Then MsgBox "L'étude recherchée n'existe pas"
    Exit Sub
'End If
Next

Col = "B"
NumLig = 1
    With Sheets("Regroupement")
    NbrLig = lrre
        For Lig = 1 To NbrLig
            If .Cells(Lig, Col).Value = n Then
            .Cells(Lig, Col).EntireRow.Copy
            NumLig = NumLig + 1
            Sheets("Correspondances").Cells(NumLig, 1).Insert Shift:=xlDown
            End If
        Next
    End With

Columns(4).Insert
Cells(1, 4).Value = "Correspondance"

End Sub

Private Sub Userform_activate()
Me.TextBox1.Value = n
End Sub

J'ai vérifié ce que je pouvais, notamment la valeur des variables ; tout est bon...

J'ai fait un petit document Excel qui reprend cette partie du code pour que vous puissiez y voir peut-être plus clair.

Bonne soirée !

Ça n'est certainement pas grand chose ! Si je trouve une solution d'ici là je posterai à la suite du post.

Merci de votre attention.

4test-lignes.xlsm (26.24 Ko)

Bonjour,

Un premier point : si tu veux que la valeur de n passe d'une macro à l'autre ... tu dois déclarer n en haut du module ... tels : re et co.

Ensuite, ajoute un point d'arrêt au début puis continue en pas-à-pas (touche F8) ... c'est un bon dépanneur.

Sauf erreur de ma part, ceci est inutile puisque l'information est saisie dans le Textbox1après l'activation du Userform.

Private Sub Userform_activate()
Me.TextBox1.Value = N
End Sub

ric

Merci pour la réponse !

Un premier point : si tu veux que la valeur de n passe d'une macro à l'autre ... tu dois déclarer n en haut du module ... tels : re et co.

Ah oui j'ai oublié de faire ça en créant un nouveau document.

Dans mon document d'origine, n est bien déclaré avant, comme le reste.

Private Sub Userform_activate()
Me.TextBox1.Value = N
End Sub

Oui sans intérêt, je le met en espérant voir s'afficher la valeur de n dans la textbox (ce qui ne fonctionne pas d'ailleurs..)

J'ai mis à jour mon document avec n déclaré en haut du module, mais, bien évidemment le problème ne vient pas de là :/

EDIT : (re)Maj du document Excel

A plus tard !

2test-lignes.xlsm (27.62 Ko)

Bonjour,

Ton test pour vérifier la présence de l’étude ne peut pas fonctionner

Set plge = re.Range("B1:B" & lrre)
    For Each vari In plge 'plge '("B2:B150") '
        If vari.Value <> n Then MsgBox "L'étude recherchée n'existe pas"
    Exit Sub
Next

Lors du balayage de la colonne B, à la première cellule ne contenant pas la valeur indiquée le code va envoyer le message et mettre fin à la procédure.

Tu peux remplacer cette partie de code par

If Application.CountIf(re.Range("B1:B" & lrre), TextBox1.Value) = 0 Then
    MsgBox "L'étude recherchée n'existe pas"
    Exit Sub
End If

Cordialement.

Bonsoir,

Merci pour votre aide ! L'exécution de ce code fonctionne et permet du coup de lancer tout le reste.

Tout ça avec un code encore plus court.

Bonne soirée !

Rechercher des sujets similaires à "vba corriger code verifier valeur plage"