Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de recherche + vba

8 réponses
Avatar
Flex
bonjour
j'ai un problème que j'ai qualifié de "recherche" mais je sais pas trop
comment l'appeler.
je vous l'explique:
sur ma feuille excel j'ai une base de données.
dans cette bdd 3 colonnes nous interresse:
colonne1: année (contient toutes les années)
colonne2: numEtab (contient le numéro des établissements) (c'est
l'équivalent de la clé primaire)
colonne3: nomEtab (contient le nom de tous les etablissements)

le problème c'est que souvent à un même numéro d'établissement correspond
des noms différents pour des années différentes.
c'est comme si on avait
année| numEtab| nomEtab
2000| e20120 | toto
2001| e20120 | tot'o
2002| e20120 | le toto

ou
année| numEtab| nomEtab
2000| e20140 | paris
2001| e20140 | le paris
2002| e20140 | paris
2002| e20140 | paris


ce que j'aurais voulu c'est créer une procédure vba qui me retourne le nom
de l'établissement correspondant à la dernière année d'activité en fonction
du numéro de l'établissement.
pour + de détails j'affiche mes données dans un TCD et puis une sub me
copie mon tableau sur une autre feuille et c'est la qu'interviendrait la
procédure en remplacant le numéro de l'établissment par son dernier nom
connu.

Quelqu'un peut il m'aider, svp.

Merci

version: excel2003

8 réponses

Avatar
isabelle
bonjour Flex,

si les enregistrements sont classés en ordre croissant sur la colonne "année"
=INDEX(C:C;EQUIV("e20140E";B:B;1))

isabelle


bonjour
j'ai un problème que j'ai qualifié de "recherche" mais je sais pas trop
comment l'appeler.
je vous l'explique:
sur ma feuille excel j'ai une base de données.
dans cette bdd 3 colonnes nous interresse:
colonne1: année (contient toutes les années)
colonne2: numEtab (contient le numéro des établissements) (c'est
l'équivalent de la clé primaire)
colonne3: nomEtab (contient le nom de tous les etablissements)

le problème c'est que souvent à un même numéro d'établissement correspond
des noms différents pour des années différentes.
c'est comme si on avait
année| numEtab| nomEtab
2000| e20120 | toto
2001| e20120 | tot'o
2002| e20120 | le toto

ou
année| numEtab| nomEtab
2000| e20140 | paris
2001| e20140 | le paris
2002| e20140 | paris
2002| e20140 | paris


ce que j'aurais voulu c'est créer une procédure vba qui me retourne le nom
de l'établissement correspondant à la dernière année d'activité en fonction
du numéro de l'établissement.
pour + de détails j'affiche mes données dans un TCD et puis une sub me
copie mon tableau sur une autre feuille et c'est la qu'interviendrait la
procédure en remplacant le numéro de l'établissment par son dernier nom
connu.

Quelqu'un peut il m'aider, svp.

Merci

version: excel2003







Avatar
isabelle
correction :
lire décroissant au liu de croissant

isabelle


bonjour
j'ai un problème que j'ai qualifié de "recherche" mais je sais pas trop
comment l'appeler.
je vous l'explique:
sur ma feuille excel j'ai une base de données.
dans cette bdd 3 colonnes nous interresse:
colonne1: année (contient toutes les années)
colonne2: numEtab (contient le numéro des établissements) (c'est
l'équivalent de la clé primaire)
colonne3: nomEtab (contient le nom de tous les etablissements)

le problème c'est que souvent à un même numéro d'établissement correspond
des noms différents pour des années différentes.
c'est comme si on avait
année| numEtab| nomEtab
2000| e20120 | toto
2001| e20120 | tot'o
2002| e20120 | le toto

ou
année| numEtab| nomEtab
2000| e20140 | paris
2001| e20140 | le paris
2002| e20140 | paris
2002| e20140 | paris


ce que j'aurais voulu c'est créer une procédure vba qui me retourne le nom
de l'établissement correspondant à la dernière année d'activité en fonction
du numéro de l'établissement.
pour + de détails j'affiche mes données dans un TCD et puis une sub me
copie mon tableau sur une autre feuille et c'est la qu'interviendrait la
procédure en remplacant le numéro de l'établissment par son dernier nom
connu.

Quelqu'un peut il m'aider, svp.

Merci

version: excel2003







Avatar
isabelle
correction :
lire décroissant au liu de croissant
et
=INDEX(C:C;EQUIV("e20140E";B:B;0))

isabelle


bonjour
j'ai un problème que j'ai qualifié de "recherche" mais je sais pas trop
comment l'appeler.
je vous l'explique:
sur ma feuille excel j'ai une base de données.
dans cette bdd 3 colonnes nous interresse:
colonne1: année (contient toutes les années)
colonne2: numEtab (contient le numéro des établissements) (c'est
l'équivalent de la clé primaire)
colonne3: nomEtab (contient le nom de tous les etablissements)

le problème c'est que souvent à un même numéro d'établissement correspond
des noms différents pour des années différentes.
c'est comme si on avait
année| numEtab| nomEtab
2000| e20120 | toto
2001| e20120 | tot'o
2002| e20120 | le toto

ou
année| numEtab| nomEtab
2000| e20140 | paris
2001| e20140 | le paris
2002| e20140 | paris
2002| e20140 | paris


ce que j'aurais voulu c'est créer une procédure vba qui me retourne le nom
de l'établissement correspondant à la dernière année d'activité en fonction
du numéro de l'établissement.
pour + de détails j'affiche mes données dans un TCD et puis une sub me
copie mon tableau sur une autre feuille et c'est la qu'interviendrait la
procédure en remplacant le numéro de l'établissment par son dernier nom
connu.

Quelqu'un peut il m'aider, svp.

Merci

version: excel2003







Avatar
Flex
le seul hic c'est que les données sont classéees en ordre croissant
Alors comment gérer ça en vba?
merci

correction :
lire décroissant au liu de croissant
et
=INDEX(C:C;EQUIV("e20140E";B:B;0))

isabelle


Avatar
AV
En supposant les noms de champs en ligne 1 et les années croissantes :
Matrielle (validation par ctrl+maj+entrée)
=INDEX(nomEtab;MAX((numEtab=G1)*LIGNE(numEtab))-1)

Exemple là : http://cjoint.com/?iwqS2kqawc
Si tu le veux par vba, relance...

AV
Avatar
Flex
Je crois que tu m'a bien compris puisque la soluce est bonne par contre je
ne sais pas comment traduire cette formule en vba
Si tu peux m'aider.
Merci


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

En supposant les noms de champs en ligne 1 et les années croissantes :
Matrielle (validation par ctrl+maj+entrée)
=INDEX(nomEtab;MAX((numEtab=G1)*LIGNE(numEtab))-1)

Exemple là : http://cjoint.com/?iwqS2kqawc
Si tu le veux par vba, relance...

AV





Avatar
AV
Je crois que tu m'a bien compris puisque la soluce est bonne par contre je
ne sais pas comment traduire cette formule en vba


Avec l'exemple joint et les plages nommées
(la plage contenant la valeur cherchée est nommée "ValeurCherchée")

MsgBox [index(nomEtab,max((numEtab=ValeurCherchée)*row(numEtab))-1)]

AV

Avatar
Flex
ok je te remercie.
je cours essayer tout ca

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

Je crois que tu m'a bien compris puisque la soluce est bonne par contre
je
ne sais pas comment traduire cette formule en vba


Avec l'exemple joint et les plages nommées
(la plage contenant la valeur cherchée est nommée "ValeurCherchée")

MsgBox [index(nomEtab,max((numEtab=ValeurCherchée)*row(numEtab))-1)]

AV