OVH Cloud OVH Cloud

fonction match

7 réponses
Avatar
jeclephi
Bonsoir,

pour repérer la position d'une chaine dans une plage verticale de deux
colonnes et une tripotées de rangées j'emploie la formule suivante:

position = Application.WorksheetFunction.Match("chaine",
Activesheet.Range("nomplage"),0)

La chaine recherchée se trouve dans la première colonne de la plage.
Cela marche avec une plage d'une colonne mais pas avec plus de colonnes.
Si c'est normal comment faire pour obtenir la position de ma chaine?
Peux-être une autre fonction?
Merci et bonne soirée à tous
Jcp

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace à la
fonction "Worksheetfunction" est un peu lacunaire
Est ce qu'il y a un site qui se serait penché sur la question?
C'est fini, et merci
Bonne nuit

7 réponses

Avatar
Daniel
Bonsoir.
Oui, c'est normal. Utilise Find.
Cordialement.
Daniel
"jeclephi" a écrit dans le message de news:

Bonsoir,

pour repérer la position d'une chaine dans une plage verticale de deux
colonnes et une tripotées de rangées j'emploie la formule suivante:

position = Application.WorksheetFunction.Match("chaine",
Activesheet.Range("nomplage"),0)

La chaine recherchée se trouve dans la première colonne de la plage.
Cela marche avec une plage d'une colonne mais pas avec plus de colonnes.
Si c'est normal comment faire pour obtenir la position de ma chaine?
Peux-être une autre fonction?
Merci et bonne soirée à tous
Jcp

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace à la
fonction "Worksheetfunction" est un peu lacunaire
Est ce qu'il y a un site qui se serait penché sur la question?
C'est fini, et merci
Bonne nuit



Avatar
jeclephi
Merci pour ta réponse, mais Find, d'aprés ce que j'ai pu voir, ne me donne
pas la position dans la colonne mais la valeur dans une cellule
qui remplit les conditions de recherche.
S'il n'existe pas de fonction genre "match" , je suis obligé de bidouiller
et de construire une plage à une colonne à partir de l'adresse de la plage à
deux colonnes.
c'est poussif mais je pense que ça marchera
A la prochaine
Jcp

"Daniel" a écrit dans le message de news:

Bonsoir.
Oui, c'est normal. Utilise Find.
Cordialement.
Daniel
"jeclephi" a écrit dans le message de news:

Bonsoir,

pour repérer la position d'une chaine dans une plage verticale de deux
colonnes et une tripotées de rangées j'emploie la formule suivante:

position = Application.WorksheetFunction.Match("chaine",
Activesheet.Range("nomplage"),0)

La chaine recherchée se trouve dans la première colonne de la plage.
Cela marche avec une plage d'une colonne mais pas avec plus de colonnes.
Si c'est normal comment faire pour obtenir la position de ma chaine?
Peux-être une autre fonction?
Merci et bonne soirée à tous
Jcp

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace à la
fonction "Worksheetfunction" est un peu lacunaire
Est ce qu'il y a un site qui se serait penché sur la question?
C'est fini, et merci
Bonne nuit







Avatar
poy-poy
Bonjour,

En fait, Find te trouve la cellule contenant la chaine que tu cherches.
Ensuite à toi de prendre ce que tu veux comme propriété sur la cellule : la
valeur (value), l'emplacement (address), la ligne (row), la colonne (column),
etc... Donc, utilise la propriete qu'il te faut :). Attention, si ta chaine
apparait plusieurs fois dasn ta plage, find te ramenera la première cellule
la contenant.

position = range("plage").find("chaine").address/row/column

Cordialement
Benjamin

PS: Petite question subsidiaire, si ma plage est pile-poil ce dans quoi je
dois chercher et que la chaine apparait plusieurs fois dedans et notamment en
première position de la plage (en haut à gauche), excel me renvoit l'adresse
de la seconde cellule le contenant et non de la première. Comment se fait-ce ?

"jeclephi" wrote:

Merci pour ta réponse, mais Find, d'aprés ce que j'ai pu voir, ne me donne
pas la position dans la colonne mais la valeur dans une cellule
qui remplit les conditions de recherche.
S'il n'existe pas de fonction genre "match" , je suis obligé de bidouiller
et de construire une plage à une colonne à partir de l'adresse de la plage à
deux colonnes.
c'est poussif mais je pense que ça marchera
A la prochaine
Jcp

"Daniel" a écrit dans le message de news:

Bonsoir.
Oui, c'est normal. Utilise Find.
Cordialement.
Daniel
"jeclephi" a écrit dans le message de news:

Bonsoir,

pour repérer la position d'une chaine dans une plage verticale de deux
colonnes et une tripotées de rangées j'emploie la formule suivante:

position = Application.WorksheetFunction.Match("chaine",
Activesheet.Range("nomplage"),0)

La chaine recherchée se trouve dans la première colonne de la plage.
Cela marche avec une plage d'une colonne mais pas avec plus de colonnes.
Si c'est normal comment faire pour obtenir la position de ma chaine?
Peux-être une autre fonction?
Merci et bonne soirée à tous
Jcp

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace à la
fonction "Worksheetfunction" est un peu lacunaire
Est ce qu'il y a un site qui se serait penché sur la question?
C'est fini, et merci
Bonne nuit












Avatar
jeclephi
Bonjour,
Je vais illico essayer "find" de la manière que m'indique

Merci Benjamin

Jcp

"poy-poy" a écrit dans le message de
news:
Bonjour,

En fait, Find te trouve la cellule contenant la chaine que tu cherches.
Ensuite à toi de prendre ce que tu veux comme propriété sur la cellule :
la
valeur (value), l'emplacement (address), la ligne (row), la colonne
(column),
etc... Donc, utilise la propriete qu'il te faut :). Attention, si ta
chaine
apparait plusieurs fois dasn ta plage, find te ramenera la première
cellule
la contenant.

position = range("plage").find("chaine").address/row/column

Cordialement
Benjamin

PS: Petite question subsidiaire, si ma plage est pile-poil ce dans quoi je
dois chercher et que la chaine apparait plusieurs fois dedans et notamment
en
première position de la plage (en haut à gauche), excel me renvoit
l'adresse
de la seconde cellule le contenant et non de la première. Comment se
fait-ce ?

"jeclephi" wrote:

Merci pour ta réponse, mais Find, d'aprés ce que j'ai pu voir, ne me
donne
pas la position dans la colonne mais la valeur dans une cellule
qui remplit les conditions de recherche.
S'il n'existe pas de fonction genre "match" , je suis obligé de
bidouiller
et de construire une plage à une colonne à partir de l'adresse de la
plage à
deux colonnes.
c'est poussif mais je pense que ça marchera
A la prochaine
Jcp

"Daniel" a écrit dans le message de news:

Bonsoir.
Oui, c'est normal. Utilise Find.
Cordialement.
Daniel
"jeclephi" a écrit dans le message de news:

Bonsoir,

pour repérer la position d'une chaine dans une plage verticale de
deux
colonnes et une tripotées de rangées j'emploie la formule suivante:

position = Application.WorksheetFunction.Match("chaine",
Activesheet.Range("nomplage"),0)

La chaine recherchée se trouve dans la première colonne de la plage.
Cela marche avec une plage d'une colonne mais pas avec plus de
colonnes.
Si c'est normal comment faire pour obtenir la position de ma chaine?
Peux-être une autre fonction?
Merci et bonne soirée à tous
Jcp

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace à la
fonction "Worksheetfunction" est un peu lacunaire
Est ce qu'il y a un site qui se serait penché sur la question?
C'est fini, et merci
Bonne nuit














Avatar
jeclephi
Salut Daniel et Benjamin
Me revoilou pour vous dire que vos efforts n'ont pas été vains
et que ma macro qui était obèse a retrouvé sa ligne.
A la prochaine
Jcp
Avatar
AV
Ou bien..
Pour trouver l'adresse de la cellule contenant la valeur "zz" dans la
plage nommée "plG" :
MsgBox [address(max(row(plg)*(plg="zz")),max(column(plg)*(plg="zz")))]

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace à la
fonction "Worksheetfunction" est un peu lacunaire



PS : Nul besoin d'une "doc particulière" puisque l'aide existe à partir de
la feuille de calcul !

AV


Avatar
jeclephi
Je suis d'accord que, aprés avoir décrypter sur VBA la liste alphabétique
des fonctions excel utilisées sur VBA, on peut s'en sortir l'aide de la
feuille de calcul.
Le hic pour moi qui ne suis pas un anglophone averti c'est la traduction
car,si cette liste alphabétique a été traduite de l'anglais en français, les
fonctions avec leur nom français sont restées à l'emplacement alphabétique
anglais( "equiv" est dans le "m" comme "Match" par exemple)
Je parle de Excel 2002 car la version 2000 était de ce coté là et sauf
erreur de ma part, me semble-t-il, mieux finie. Mais c'est un détail et je
remercie AV pour sa formule qui est d'une rare concision . Je vais essayer
maintenant de l'inserer dans mon code
Jcp

"AV" a écrit dans le message de news:

Ou bien..
Pour trouver l'adresse de la cellule contenant la valeur "zz" dans la
plage nommée "plG" :
MsgBox
[address(max(row(plg)*(plg="zz")),max(column(plg)*(plg="zz")))]

PS: la doc en ligne sur les fonctions Excel utiliées en VBA grace
à la


fonction "Worksheetfunction" est un peu lacunaire



PS : Nul besoin d'une "doc particulière" puisque l'aide existe à
partir de
la feuille de calcul !

AV