VBA : formulaire et correspondance

Résolu/Fermé
chrisdemontigny Messages postés 64 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 17 mars 2015 - Modifié par chrisdemontigny le 11/12/2012 à 23:07
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 12 déc. 2012 à 08:04
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
12 déc. 2012 à 00:10
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 mercredi 19 septembre 2012 Statut Membre Dernière intervention 17 mars 2015
12 déc. 2012 à 00:30
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
12 déc. 2012 à 01:08
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
12 déc. 2012 à 08:04
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