EFFECTUER UNE RECHERCHE DANS UNE PLAGE DE CELLULES EXCEL
winvsmac
Messages postés84Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention14 décembre 2016
-
18 janv. 2010 à 08:37
winvsmac
Messages postés84Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention14 décembre 2016
-
19 janv. 2010 à 21:17
Bonjour à tout le monde
Voici sur quoi je me creuse les méninges depuis un petit moment, mais je n'arrive pas à trouver de solution.
Ceci concerne du VB6 + Excel.
Sur une feuille Excel, j'ai dans ma colonne A un prénom (dans la plage A1:A10, et il n'y a pas de doublon de prénom, ce qui donne A1 Alain, A2 Sophie ....)
Au préalable, disons que j'ai une variable (le_nom) qui contient le nom à rechercher dans la plage A1:A10. Exemple : Alain
Comment fait on pour tester chaque cellule de la plage, est dès qu'une cellule parcourue contient le prénom de ma variable je récupère les coordonnées de la cellule en question ?
Certes c'est tout bête mais je n'y arrive pas.
Merci bcp
Jerome
A voir également:
EFFECTUER UNE RECHERCHE DANS UNE PLAGE DE CELLULES EXCEL
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 janv. 2010 à 08:52
Onjour,
Intéresse-toi à la méthode Find, bien exposée dans l'aide d'Excel.
Voici un exemple d'utilisation :
Dim ou As Range, qui As String
qui = "Alain"
Set ou = Range("A1:A10").Find(qui, LookIn:=xlValues)
If Not ou Is Nothing Then
MsgBox "trouvé en " & ou.Address
Else
MsgBox "absent"
End If
Set ou = Nothing
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
winvsmac
Messages postés84Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention14 décembre 2016 19 janv. 2010 à 21:15
Bonsoir Ucfoutu,
Merci pour ton exemple de code.
J'ai pu l'adapter au mien de la façon suivante :
If rst.RecordCount > 0 Then
With rst
.MoveFirst
Do Until rst.EOF
qui = !nom
Set ou = Range("B4:B" & 4 + rst.RecordCount).Find(qui, lookin:=xlValues)
Msgbox ou.address
.MoveNext
Loop
End With
End If
J'arrive bien pour chaque enregistrement de mon jeu d'enregistrements (rst) de ma table (articles) à recherche la valeur du champ nom dans la plage excel "B4:B6". Et j'affiche les coordonnées de la cellule Excel.
J'ai besoin d'insérer une seconde recherche :
If rst.RecordCount > 0 Then
With rst
.MoveFirst
Do Until rst.EOF
T = Split(!article)
qui = T(0)
Set ou = Range("B4:B" & 4 + rst.RecordCount).Find(qui, lookin:=xlValues)
qui2 = Mid(!ladate, 1, 10)
Set ou2 = Range("C3:ZZ3").Find(qui2, lookin:=xlValues)
.MoveNext
Loop
End With
End If
En qui2 je récupère la date stockée dans le champ ladate et je la recherche
dans la plage "C3:ZZ3". Si je laisse le code tel que, ça fonctionne.
Mais si je rajouter une message box pour avoir les coordonnées de ou et ou2 j'ai une erreur 91 Variable Objet ou variable with non définie. Je ne comprends plus .....
Voici le code le code entier :
If rst.RecordCount > 0 Then
With rst
.MoveFirst
Do Until rst.EOF
T = Split(!article)
qui = T(0)
Set ou = Range("B4:B" & 4 + rst.RecordCount).Find(qui, lookin:=xlValues)
qui2 = Mid(!ladate, 1, 10)
Set ou2 = Range("C3:ZZ3").Find(qui2, lookin:=xlValues)
MsgBox ou.Address & " " & ou2.Address << ça plante là
.MoveNext
Loop
End With
End If