IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer valeur d'une ligne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 26
    Points
    26
    Par défaut Récupérer valeur d'une ligne
    Bonjour,

    Voilà mon problème, j'ai deux feuilles ("Orchestre" et "SI").

    Pour toutes les valeurs de la colonne A de la feuille "Orchestre", je veux vérifier premièrement que la valeur existe dans la colonne B de "SI", et si elle existe, entrer dans la colonne C de "Orchestre" la valeur de la cellule de la colonne A de "SI" correspondant à la ligne trouvée.

    Exemple :

    1) je cherche chose (A5 d'Orchestre")
    2) je trouve cette valeur dans la colonne B de "SI" sur la ligne 1
    3) je veux que dans C5 de "Orchestre" apparaisse la valeur de A2 de "SI"

    Merci d'avance !!! Je débute vraiment, et je galère pas mal...

    P.S : difficulté supplémentaire chose peut apparaitre plusieurs fois dans "SI" (mais toujours avec la même valeur)
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une RechercheV permet de répondre à la demande

    Edit, je viens de voir la disposition de ton fichier, essaies plutôt avec Index et Equiv
    En C2 d'Orchestre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(INDEX(SI!$A$2:$A$200;EQUIV(A2;SI!$B$2:$B$200;0))=0;"";INDEX(SI!$A$2:$A$200;EQUIV(A2;SI!$B$2:$B$200;0)))
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    merci d'abord pour ta réponse
    la formule est bonne....la plupart du temps
    je m'explique, dans mon tableau (celui sur lequel je bosse, pas l'exemple ), j'ai plusieurs milliers de lignes. Je peux donc avoir des références de "Orchestre" qui n'existe pas dans "SI" et comme en étendant la formule à toutes les lignes, excel incrémente automatiquement le range (par exemple il passe de A2:A200 à A3:A201), je me retrouve avec plein de #N/A (c'est le match qui ne trouve pas la valeur apparemment). J'ai tenter de corriger à la main en modifiant le range pour qu'il reste le même (mais en incrémentant le 1er champ du EQUIV), et là ça marche.
    Question : y a t-il un moyen d'étendre une formule à des milliers de lignes sans que le range soit modifier pour une seule partie du EQUIV (le 1er champ du EQUIV devant lui s'incrémenter)

    MERCI D'AVANCE !!!

    P.S 1: il y a peut être une autre formule qui éviterait la "question" (dont je pense la réponse est "impossible" )

    P.S 2: désolé pour le nom de la feuille "SI", je suis sur un excel en anglais, donc je n'avais pas penser au "SI" de la formule

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Pour figer les plages (comme dans la formules), il faudra écrire $A$2:$A$200 à la place de A2:A200

    En Anglais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(INDEX(SI!$A$2:$A$200,MATCH(A2,SI!$B$2:$B$200,0))=0,"",INDEX(SI!$A$2:$A$200,MATCH(A2,SI!$B$2:$B$200,0)))
    Remarque les $

    Pour les erreurs #NA au cas où un élément n'existe pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTNA(EQUIV(A2;SI!$B$2:$B$200;0));"";INDEX(SI!$A$2:$A$200;EQUIV(A2;SI!$B$2:$B$200;0)))
    En version anglaise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(ISNA(MATCH(A2,SI!$B$2:$B$200,0)),"",INDEX(SI!$A$2:$A$200,MATCH(A2,SI!$B$2:$B$200,0)))
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Un grand merci ! En effet, je n'avais pas fait attention aux "$" et là ça change tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer valeurs d'une ligne ajoutée automatiquement dans un tableau
    Par lastarfane dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 04/10/2013, 16h20
  2. [DisplayTag] Récupérer valeur d'une ligne
    Par chris78 dans le forum Taglibs
    Réponses: 0
    Dernier message: 30/05/2013, 19h54
  3. Réponses: 1
    Dernier message: 05/05/2009, 10h40
  4. [DOM] Comment récupérer la valeur d'une ligne cliquée dans un <DIV>?
    Par insane_80 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2007, 16h11
  5. Récupérer la valeur d'une ligne dans une procédure stockée
    Par mobscene dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 07/12/2006, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo