Comment utiliser la valeur d'une cellule dans un "find" par macro

Mers

XLDnaute Junior
Boujour à tous,

J'ai une macro à l'intérieur de laquelle j'utilise la fonction find mais je ne sais pas comment fait pour identifier que la valeur à utiliser pour faire la recherche est dans la cellule M2.

La macro vas comme suit:

Code:
Sub Recherche()

    Sheets("BoM").Select
    Columns("O:O").Select
    Selection.Find(What:=[COLOR="Red"]Valeur en M2[/COLOR], After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
End Sub

Merci d'avance de votre aide.

M.
 

Pierrot93

XLDnaute Barbatruc
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Bonjour mers

regarde le code ci-dessous, si cela peut t'aider, pour une recher dans la colonne o de la feuille active :

Code:
Dim x As Range
Set x = Range("O:O").Find(Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then MsgBox "la valeur recherchée est en " & x.Address

bon après midi
@+
 

Mers

XLDnaute Junior
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Bonjour mers

regarde le code ci-dessous, si cela peut t'aider, pour une recher dans la colonne o de la feuille active :

Code:
Dim x As Range
Set x = Range("O:O").Find(Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then MsgBox "la valeur recherchée est en " & x.Address

bon après midi
@+

Merci de m'avoir répondu Pierrt93.

Le problème est que la valeur à utiliser est sous la feuille "Analyse" et que le find se fait dans la feuille "BoM".

M.
 

Pierrot93

XLDnaute Barbatruc
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Re

modifies comme suit :

Code:
Dim x As Range
Set x = Sheets("BoM").Range("O:O").Find(Sheets("Analyse").Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then MsgBox "la valeur recherchée est en " & x.Address

@+
 

Mers

XLDnaute Junior
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Re

modifies comme suit :

Code:
Dim x As Range
Set x = Sheets("BoM").Range("O:O").Find(Sheets("Analyse").Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then MsgBox "la valeur recherchée est en " & x.Address

@+

Super! On s'approche du but.

Je réalise que je n'ai pas été assez claire dans mon explication. Il faut, une fois la valeur trouvée, que je m'y rende (de la même manière qu'un find standard).

M.
 

Pierrot93

XLDnaute Barbatruc
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Re

peut être en modifiant ainsi :

Code:
Dim x As Range
Set x = Sheets("BoM").Range("O:O").Find(Sheets("Analyse").Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then x.Select

@+

Edition avais oublié le "then"...
 

Mers

XLDnaute Junior
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Re

peut être en modifiant ainsi :

Code:
Dim x As Range
Set x = Sheets("BoM").Range("O:O").Find(Sheets("Analyse").Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then x.Select

@+

Edition avais oublié le "then"...

J'apprécie beaucoup ton aide.

Le x.Select ne fonctionne pas (run-time error).

Sais-tu comment créer une variable? (moi toute mes macros sont faite en record donc je ne sais pas les termes de programmation). Si tu te réfères à mon message original, tout fonctionne bien si j'identifie une valeur dans la section que j'ai identifié en rouge. La seule chose est que je ne sais pas comment dire que la valeur de ma variable est en M2 et que cette variable est ce qui doit être utilisé dans la macro.

Il me semble que c'est qq chose du type:
Dim var as integer
set var as ....
et ensuite je n'ai qu'à appeler la variable à l'endroit qu'il faut dans la macro.

Peut-être que je vois ça plus simple que ce ne l'est en réalité...

M.
 

Pierrot93

XLDnaute Barbatruc
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Re

oui, fonctionne si la valeur trouvée est sur la feuille active, si c'est pas le cas ca bogue... il faut modifier comme suit :

Code:
Option Explicit
Sub docaouvrir() 'fonction qui ouvre le fichier Excel généré par le logiciel Coriolis
Dim x As Range
Set x = Sheets("Feuil1").Range("O:O").Find(Sheets("Feuil2").Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then Application.Goto x
End Sub

Attention j'ai modifié le nom des feuilles pour test...

@+
 

Mers

XLDnaute Junior
Re : Comment utiliser la valeur d'une cellule dans un "find" par macro

Re

oui, fonctionne si la valeur trouvée est sur la feuille active, si c'est pas le cas ca bogue... il faut modifier comme suit :

Code:
Option Explicit
Sub docaouvrir() 'fonction qui ouvre le fichier Excel généré par le logiciel Coriolis
Dim x As Range
Set x = Sheets("Feuil1").Range("O:O").Find(Sheets("Feuil2").Range("M2").Value, , xlValues, xlPart, , , False)
If Not x Is Nothing Then Application.Goto x
End Sub

Attention j'ai modifié le nom des feuilles pour test...

@+

Tout fonctionne à merveille! Merci beaucoup.

M.
 

Discussions similaires

Réponses
12
Affichages
561