VBA : formulaire et correspondance

Résolu
chrisdemontigny Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 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

Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   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
chrisdemontigny Messages postés 64 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
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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