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

Excel Discussion :

[E-02] Rechercher une donnée à partir d'une référence


Sujet :

Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut [E-02] Rechercher une donnée à partir d'une référence
    Bonjour,

    J'ai en pièce jointe un fichier excel. En "Feuil 1", j'ai un bordereau d'envoi. je voudrais que en fonction du code postal que je mettrais en "D18", qu'apparaisse l'adresse qui est lié sur la "Feuil 2". Mais voila, il y a plusieurs codes postaux par départements, pour celà, je voudrais que la recherche se fasse sur les deux premier caractères de D18 et que l'adresse se colle aux cellules "E36", "E37" et "E39".

    Merci d'avance de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Bigboss60,

    Le plus simple serait d'utiliser la fonction "RECHERCHEV" mais pour cela il faut :
    -que votre feuille 2 soit triée dans l'ordre ascendant sur la colonne "N° de département".
    -si on ne veut pas trop compliquer la formule la colonne "Adresse" devrait être décomposée en 3 colonnes : Adresse, Code postal, Ville.

    Sur votre exemple vous indiquez une adresse en feuille1 qui n'a rien avoir avec les adresses de la feuille2 ?

  3. #3
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir,

    En définissant ainsi les noms CP et Adresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CP		=Feuil2!$D$2:$D$99
    Adresses	=DECALER(CP;0;-1)
    On peut ensuite combiner INDEX() et EQUIV() pour récupérer l’adresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(Adresses;EQUIV(GAUCHE(D18;2);CP;0))

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir Bigalo,

    Bien sûr on peut utiliser décaler et les cellules nommées (mais à mon avis non obligatoire) pour la recherche puisqu'il ne faut prendre que les 2 premiers caractères sur la feille1 en D18 mais le problème est sur la feuille2 où l'adresse comprend BP50000, le Code postal et la ville qu'il faut ensuite affecter dans 3 cellules différentes sur la feuille1.

    Si BP est toujours 50000 pas de problème mais ce sera toujours le cas (si oui on peut là aussi utiliser décaler, puis pour le Code postal, puis pour la ville) ?

    Un peu lourd comme formule alors que cela pourrait être très simple, non ?

    D'autre part l'exemple d'adresse sur la feuille1 ne semble pas le prouver !

  5. #5
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir jacques_jean,

    Citation Envoyé par jacques_jean Voir le message
    on peut utiliser décaler et les cellules nommées (mais à mon avis non obligatoire)
    Pas obligatoire, c’est évident, mais les cellules nommées permettent se simplifier les formules ET d’améliorer leur lisibilité. Quant à DECALER() dans la référence associée à Adresses, cela rend plus claire la relation entre CP, (que j’aurais dû appeler Dép), et Adresses.

    Citation Envoyé par jacques_jean Voir le message
    puisqu'il ne faut prendre que les 2 premiers caractères sur la feuille1 en D18
    Que change le fait de ne devoir prendre que les 2 premiers caractères ?

    Citation Envoyé par jacques_jean Voir le message
    mais le problème est sur la feuille2 où l'adresse comprend BP50000, le Code postal et la ville qu'il faut ensuite affecter dans 3 cellules différentes sur la feuille1
    Quel problème ? Sur Feuille2, l’adresse est dans une cellule unique qui regroupe une boite postale, un code postal et la ville. Elle est donc facile à récupérer avec une formule unique. Qu’ensuite, on utilise cette formule dans 3 cellules distinctes devant afficher chacune la même info ne présente aucune difficulté particulière !

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Ce qu'il me faudrait je pense, ce serait une fonction qui va comparé les deux premier caractère de mon code postale en D18 et ensuite faire une recherche sur la colonne D de la feuille 2, une fois l'équivalent trouvé, il va me copié l'adresse dans la feuille 1 en cellule E37. Vu que les colonnes nom et service sont toute pareils, je n'ai juste qu'a collé la colonne adresse correspondant au bon numéro de département. Est-ce possible de réaliser une telle fonction et comment l'écrire? J'utilise plus Excel en VBA et rarement les fonctions dans les tableau Excel. Merci beaucoup de votre aide.

    Cordialement

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Excusez moi pour l'adresse que j'ai mis en Feuille 1, j'avais mis ca en exemple.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Pour chaque département il y a une adresse de destination et ce que tu souhaites c'est la récupérer en saisissant uniquement le code postal. Ai-je bien compris?

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Oui c'est tout à fait ca.

  10. #10
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Ma solution sans VBA ne te convient pas ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Regarde si cela te convient. J'ai changé la base qui s'appelle "Adresses", car il est plus facile de concaténer que de d'extraire. Si tu as besoin d'explications, n'hésites pas.

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    En fait je n'ai pas compris ta méthode sans VBA. Peut tu m'écrire la fonction, j'utilise rarement les fontions excel et j'ai un peu de mal à comprendre ton explication.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Tout d'abord, as-tu compris le rôle de la cellule I5, c'est comme si nous avions 2 parties dans ta feuille 1,
    - A gauche la zone que tu vas imprimer (non définie ici) et
    - A droite une zone de saisie pour les variables. Dans cette partie j'ai fait figurer l'adresse variable car je ne sais pas où elle doit aller.
    J'ai créé une base de donnée, onglet "Adresse".Cette base est une zone qui va de A2 à G101 et porte le nom "Département".
    Si tu regardes le code de la cellule :
    =SI($I$5="";"";RECHERCHEV($I$5;Département;2))
    Traduction : si la cellule I5 est vide, alors afficher vide,sinon rechercher la valeur I5 dans la zone "Département" et lire la deuxième cellule sur la ligne.
    (La présence des $ n'est pas impérative ici, c'est pour pouvoir tirer la cellule vers le bas et faire toujours référence à la cellule I5 (position absolue).)
    Idem pour la seconde ligne.
    Pour la ligne 3, c'est presque la même chose, avec un assemblage de "BP" + le résultat de la recherche de la boite postale qui se trouve en 4 ème position sur la ligne.
    =SI($I$5="";"";"BP "&RECHERCHEV($I$5;Département;4))

  14. #14
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Re,

    Citation Envoyé par bigboss60 Voir le message
    En fait je n'ai pas compris ta méthode sans VBA.
    Quelle version d'Excel utilises-tu ? Etant donné que l'interface de la version 2007 est complètement différente, cette info me permettra d'adapter les explications.

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    J'utilise la version 2002, ta technique semble nikel Marc mais le problème c'est que je suis obligé de coupé mon code postal par exemple au lieux de mettre 60000 je dois écrire 60 000 et celà risque de ne pas trop plaire aux utilisateur qui préfèrerais tout saisir d'un coup avoir à changer de cellules pour écrire la suite du code postal. Merci beaucoup de votre aide.

  16. #16
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Re,
    • Sélectionne la Feuil2 puis la plage D2:99
    • Ensuite, dans le menu Insertion, puis dans le sous-menu Nom, choisis Définir...
    Dans la fenêtre de dialogue, entre comme nom Dép. En principe, la zone Fait référence à doit être ainsi préremplie :

    Répète l'opération, en définissant le nom Adresses, associé à :

    ce qui correspond aux cellules sur la même ligne que la plage Dép, mais une colonne avant (plus à gauche).


    Tu peux ensuite combiner INDEX() et EQUIV() pour récupérer l’adresse, en entrant cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     =INDEX(Adresses;EQUIV(GAUCHE(D18;2);CP;0))
    Dans les 3 cellules où l'adresse doit apparaître.


    Citation Envoyé par bigboss60 Voir le message
    J'utilise la version 2002

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Je ne coupe pas le code postal, tu veux peut-être parler de la boite postale?
    Si c'est la cas, ce n'est pas coupé à la saisie, c'est le formatage qui l'affiche ainsi après saisie, donc pas de problème.
    Combien d'adresses différentes en tout? 1 par département ou 1 pour plusieurs départements?

  18. #18
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Une pour plusieurs départements

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Combien d'adresses différentes, 3, 10,30?, cette question pour savoir s'il faut optimiser la base ou pas.

  20. #20
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Il y a trois adresses diférentes, en fait j'ai réussi à le faire fonctionner avec la technique de Bigalo. Encore merci à vous tous de votre aide. J'ai pu voir qu'il est aussi possible de faire pas mal de chose sans avoir à passer par du VBA.

    Encore merci pour vos réponse.


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2013] renvoyer une donnée à partir d'une grille
    Par jeromeq07 dans le forum Access
    Réponses: 8
    Dernier message: 25/06/2015, 08h42
  2. Récupérer une donnée à partir d'une URL
    Par pv77164 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/08/2011, 10h39
  3. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  4. Renvoyer une donnée à partir d'une matrice
    Par supertoms dans le forum Excel
    Réponses: 1
    Dernier message: 16/02/2011, 18h18
  5. [MySQL] Extraire les données à partir d'une liste déroulante dans une autre liste deroulante
    Par Amel_B dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/11/2008, 13h20

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