VBA : formulaire et correspondance

Résolu
chrisdemontigny Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai des nombres qui se suivent dans la colonne A. J'ai créé un userform très simple avec une zone de texte pour vérifier si la valeur indiquée dans le formulaire se trouve dans la colonne de nombres.
Si c'est le cas, un message doit s'afficher et la valeur de la zone de texte du formulaire doit se mettre à 0... sauf que cela ne fonctionne pas: il ne se passe rien

J'ai joint le code ci-dessous.

Private Sub CommandButton1_Click()
Dim lg1 As Long, lg2 As Long
lg1 = 1
lg2 = Sheet1.Cells(lg1, 1).End(xlDown).Row
While lg1 <= lg2
lg1 = lg1 + 1
If Sheet1.Cells(lg1, 1).Value = UserForm1.TextBox1.Value Then
MsgBox "c'est super!"
UserForm1.TextBox1.Value = 0
End If
Wend
End Sub

Je suis un peu désespéré de ne toujours pas savoir écrire un code sans demander d'assistance.
Merci pour votre aide.

Cordialement.

4 réponses

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonsoir chrisdemontigny,

    Essaie ceci:
    Private Sub CommandButton1_Click()
    	Dim lg1 As Long, lg2 As Long
    	'
    	lg1 = 1
    	lg2 = Worksheets("F1").Cells(lg1, 1).End(xlDown).Row
    	MsgBox ("lg2: " & lg2)
    	While lg1 <= lg2
    		lg1 = lg1 + 1
    		If Worksheets("F1").Cells(lg1, 1).Value = Int(Val(UserForm1.TextBox1.Value)) Then
    			MsgBox "c'est super!"
    			UserForm1.TextBox1.Value = 0
    		End If
    	Wend
    EndSub
    0
  2. chrisdemontigny Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Heliotte,

    je vois que le changement de type de données sur le formulaire a arrangé la chose.
    Peux-tu m'expliquer pourquoi?

    Encore merci
    0
  3. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonsoir chrisdemontigny,

    Excuse-moi si j'ai changé un type de données .. c'est une erreur de ma part .. mais je pense n'avoir changé que "Worksheets("F1")" à la place de "Sheet1".

    Pour un accès à une cellule, groupe de cellules, 'Range', il est préférable d'appeler la feuille .. Worksheets("F1") .. "F1" est le nom de la feuille .. tu peux évidemment changé le nom !

    Autre chose, si la colonne, dont tu souhaite trouvé la dernière ligne, ne contient aucune donnée .. ton code va râler, car 'lg1' va dépasser 'lg2' !!
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    une zone de texte (textbox) renvoie... du texte
    dans ta cellule, tu as un nombre,
    le test renvoie donc FAUX

    tu peux écrire
    If Cells(lg1, 1)= TextBox1*1 Then MsgBox "gagné"

    remarque=
    la fonction VAL ne prend que la partie entière du nombre et int(val.... est inutile (on cherche la partie entière d'un nombre entier)

    tu peux tester cette petite maquette vite faite (un textbox et un bouton)
    Private Sub CommandButton1_Click()
    xxx = Val(TextBox1)
    MsgBox xxx
    If Range("B3") = TextBox1 * 1 Then MsgBox "gagné"
    Unload Me
    End Sub
    
    Private Sub UserForm_Initialize()
    TextBox1 = 12.37
    End Sub

    0