EXCEL VBA - recherche d'une valeur [Résolu/Fermé]

Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
- - Dernière réponse : olive60
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
- 16 juil. 2009 à 18:13
Bonjour à tous!

(Sous VBA et excel 2007)

bon je fais appel à vous car je bloque complètement sur ce problème, j'ai essayé tout un tas de truc mais cela ne fonctionne pas.

sur ma feuille 1 j'ai une Textbox4 dans laquelle je rentre un chiffre entier.

sur ma feuille 1 j'ai un commandbutton.

dans ma colonne 2 j'ai des chiffres entier (le fruit d'une formule)

=> j'aimerais simplement que le chiffre entré dans la textbox soit recherché dans la colonne 2 a partir du moment ou je clique sur mon bouton.

merci si vous pouvez faire quelquechose pour moi ou simplement me mettre sur la bonne piste
Afficher la suite 

18 réponses

Meilleure réponse
Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2832
1
Merci
Bonjour,

un peu à la bourre
à adapter à 2007: 65536 ----> nbre de lignes sur 2007 (je sais pas car j'ai pas)

Private Sub CommandButton1_Click()

On Error Resume Next
cellule = Columns(2).Find(CLng(TextBox1), Range("B65536")).Select
If Err.Number > 0 Then: MsgBox "inconnu"

End Sub

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64206 internautes nous ont dit merci ce mois-ci

Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1027
0
Merci
Bonjour,
Une solution parmi d'autre !!
Private Sub CommandButton1_Click()

Dim Lig As Long
For Lig = 1 To Range("B65536").End(xlUp).Row
If Cells(Lig, 2) = textbox4 Then
Cells(Lig, 2).Select
Exit Sub
End If
Next Lig
End Sub
A+
Messages postés
5
Date d'inscription
jeudi 2 juillet 2009
Statut
Membre
Dernière intervention
23 juillet 2009
1
0
Merci
M
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
Salut Lermitte,

Le code me parait bon mais lorsque je clique sur mon bouton il n'y a aucune action... bizarre!!!
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1027
0
Merci
Met un stop dans la boucle pour voir s'il y arrive bien...
C'est bien la colonne B et la même feuille que le bouton ?
C'est bien des nombre entier ?
Pas avec des décimales ?
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
oui c'est bien la colonne B et les chiffres inscrits dans les cellules de cette colonne sont bien entiers, par contre il y a une formule derrière ces chiffres... (le chiffre est le résultat d'une formule en d'autre mots)
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1027
0
Merci
Compris, ton affichage est sans décimale mais si tu a des divisions tu a des décimales cachées dans tes cellules.
Corige la ligne
If Int(Cells(Lig, 2)) = textbox4 Then

Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
je ne comprends vraiment pas...

j'ai bien remplacé la ligne en question mais toujours aucune réaction.

quand je fais une execution du code en "pas à pas" je remarque que la ligne Cells(Lig, 2).Activate n'est pas surlignée en jaune...

Cela veut il dire que le code ne trouve pas la valeur recherchée?
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
Merci michel de ta réponse.

Comment déclare tu ta variable cellule? en As integer?

j'ai essayé comme cela et cela fonctionne bien! Merci!

par contre j'ai pas compris pourquoi le code de Lermitte ne fonctionne pas...
Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2832
0
Merci
ce n'est pas la cellule qu'il fallait transformer en entier mais le textbox, comme son nom l'indique textbox renvoie du texte... (clng(textbox1)
il valait mieux transformer en Long qu'en integer surtout avec 2007
A propos, en guise de redevance ;-) pourrais tu me dire le nombre de lignes sur 2007? d'avance, merci

pour le type de "cellule" je tenterais bien as range (je n'ai pas sauvegardé)
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
1 048 576...

légèrement plus que 2003!

Merci Michel pour les infos et le coup de main...


MErci aussi à Lermitte!
Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2832
0
Merci
1 048 576... c'est noté Merci du tuyau
a+ pour de nouvelles aventures!
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1027
0
Merci
Pour Info..
Cellule renvoi le contenu de la cellule trouvée, alors vaux mieux la dimentionner en variant.
A+
Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2832
0
Merci
Salut Lermite, ca va?
excuses moi je ne t'avais pas salué.

OK c'est noté, merci
Messages postés
8714
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
24 novembre 2019
1027
0
Merci
Bonjour michel :D
de nouveau pour info...
il fallait mettre
        If Int(Cells(Lig, 2)) = Val(TextBox1) Then

Normalement VB fait la traduction pour nous mais pas cette fois !!
A+
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
Merci lermitte pour l'info

je me disais bien qu'il y avait un truc manquant à ce niveau, j'avais meme essayé:

If Int(Cells(Lig, 2)) = TextBox1.value Then

sans succès...

Par ailleurs je me demandais ce que voulais dire CLng dans le code de Michel, à cette ligne:

cellule = Columns(2).Find(CLng(TextBox1), Range("B65536")).Select

A+
Messages postés
16002
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
5 décembre 2019
2832
0
Merci
aie, aie, aie !!!

CLng est une fonction de conversion vers une donnée de type long; or tu as,( j'ai déjà oublié!!!) >1 million de lignes.
on marque Long quand on ne sait le nombre de lignes utilisées; quand on sait on adapte...( 4 octet en mémoire pour un "long", 2 pour un "integer", 1 pour un byte)

La fonction VAL est utile quand tu as un nombre suivi d'un texte par exemple VAL("1000 machins") te renvoie 1000 sous forme de type numérique double ( 8 octets en mémoire, 4 pour un lsingle)
c'est à manier avec précaution dans le cas de nombre à virgule car VAL ne connait que les points comme séparateur. il vaut mieux utiliser Cdbl ou Csng (double ou single). on l'utilise aussi pour les dates par fainéantise ( je l'utilise donc souvent) dûe au sempiternel b.... de manipulation de ces dernières

ici, le contexte est un entier sec sans texte: utiliser VAL est inapproprié...
Messages postés
253
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
21 décembre 2010
22
0
Merci
Merci pour l'explication michel!