VBA recherche valeur sur ligne

Fermé
anthony - 7 juil. 2011 à 20:39
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 9 août 2014 à 09:00
Bonjour,

A travers un userform et textbox2 je fais uen recherche de la valeur se trouvant sur la ligne 1 et sur chaque feuille
La valeur cherchée ne peut jamais être dans la zone A1:P1
est ce que la recherche sur toute la ligne va faire perdre du temps par rapport à la recherche à partir de Q1 jusqu'à la dernière colonne non vide ?

j'ai fait le code pour toute la ligne mais je ne sais pas le faire pour lui dire regarde seulement dans chaque feuille de Q1 à la dernière colonne non vide

lot = TextBox2
For Each shFo In Worksheets
Set a = shFo.Rows(1).Find(lot, LookAt:=xlWhole)
If Not a Is Nothing Then
Worksheets(shFo.Name).Activate
UserForm1.Hide
Application.ScreenUpdating = True
Exit Sub
End If
Next
MsgBox "ce lot n'est pas référencé"
Application.ScreenUpdating = True

ensuite que faudrait il rajouter pour que le code active la colonne de la valeur cherchée ? (ainsi l'utilsateur a directement la colonne qui l'intéresse sous les yeux sans à parcourir la feuille)

merci pour votre aidé
A voir également:

3 réponses

Migou76 Messages postés 830 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 23 juillet 2011 20
7 juil. 2011 à 23:56
Bonsoir,

Qu'il cherche jusqu'à "Q" pour rien, n'est pas trop grave. Ce sont les centaines de cellules qui suivent qui peuvent poser problème.
Cela fait quelques années que je n'ai plus Excel et ne pourrait vérifier. Pour sortir de la boucle en cas de cellule vide c'est soit :
if cellule = "" ou
if selection = ""

Et ça donne un truc de ce genre là (à essayer) :
lot = TextBox2
For Each shFo In Worksheets
Set a = shFo.Rows(1).Find(lot, LookAt:=xlWhole)
If Not a Is Nothing Then
Worksheets(shFo.Name).Activate
UserForm1.Hide
Application.ScreenUpdating = True
Exit Sub
End If
if cellule = "" then
go to 2
Next
2
MsgBox "ce lot n'est pas référencé"
Application.ScreenUpdating = True
0
No need for VB, Hlookup + eventually array formula will solve it easily...
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
9 août 2014 à 09:00
Bonjour,

For Each shFo In Worksheets
    Set a = shFo.Rows(1).Find("tt", LookAt:=xlWhole)
    If Not a Is Nothing Then
        Application.Goto a, True
        UserForm1.Hide
        Exit Sub
    End If
Next
MsgBox "ce lot n'est pas référencé"


eric

0