Rechercher une valeur sous condition d'une valeur dans une autre colonne

Bonjour tout le monde,

Petit nouveau sur le forum, je débarque avec un problème épineux pour mon modeste niveau tout sauf "Excel-lent"...

Je vous explique mon souci :

Je suis en train de construire un fichier clients constitué d'une feuille par client (dossiers perso) et une feuille récap de l'ensemble du fichier clients (passés et présents).

Ce dernier fichier clients étant déjà rempli des coordonnées de chacun, je souhaiterais que ces coordonnées (nom, prénom etc) soient reprises dans la fiche de chacun des clients de l'année (là où sans base de données existantes j'aurais procédé des dossiers perso vers la base de données).

SAUF que (c'est là que ça se complique pour moi), chaque client ne se voit attribuer une fiche personnelle que sous condition d'être client cette année.

J'ai donc créé une colonne "n° dossier" dans mon fichier global afin d'y indiquer le numéro de fiche personnelle (19-001 ; 19-002 ; etc.) attribué pour cette année. Suite à quoi j'aimerais que la feuille (dossier personnel) du même nom (19-001 etc.) reprenne ses coordonnées personnelles dans des cellules distinctes (nom, prénom, adresse, etc.).

Avec une RechercheV via son n° client ça doit marcher mais ça m'oblige à remplir une case dans le tableau global (Num de fiche personnelle) et une dans sa fiche individuelle (Num client l'identifiant d'une année sur l'autre) c'est donc plus chiant que cette dernière idée... Sauf que je n'ai pas la solution grrrr

Suis preneur de toute suggestion ! 😋🤞 A votre dispo si ma recherche n'est pas claire. Merci chers forumeurs !

Bonjour,

Un petit fichier d'exemple et ça se fera rapidement

Bonjour,

Tu ne fournis pas de fichier illustrant ta configuration, on ne peut donc donner un avis que sur des hypothèses.

Il semble donc que tu disposes d'une base de données clients, dont on peut supposer qu'elle contient toutes les informations que tu conserves par client.

Distinguer les clients de l'année de ceux qui ne le sont pas, n'est qu'une question de filtrage de ta base, dès lors qu'un champ permet de filtrer sur ce critère.

Rien à faire donc ! Tu peux réaliser à tout moment toute extraction ponctuelle selon besoins du moment, dès lors que ta base demeure à jour (c'est le seul élément qui compte).

Une fiche par client de l'année, ce n'est qu'un mode de présentation spécifique des données dont tu disposes dans ta base. Il te faut donc un modèle de fiche à partir de laquelle tu pourras générer une fiche client selon besoin : la consulter, la communiquer, l'imprimer...

Vouloir établir et stocker une fiche pour chaque client de l'année ne fait que doublonner tes données et alourdir ton classeur, c'est donc d'une inutilité absolue !

La seule chose d'intérêt est que dans la seconde (pour ne pas dire moins) où tu souhaites voir telle fiche, tu l'aies !

En conclusion, ta base de données tenue à jour et un modèle de fiche, tu n'as besoin de rien d'autre !

Cordialement.

Merci pour ce premier et prompt retour !

L'intérêt des fiches individuelles est d'y recenser l'ensemble de leurs choix (hébergement, resto etc) en un fichier client complet qui renvoie ensuite vers divers tableaux récapitulatifs thématiques (nombre de repas, nombre de chambres etc.) J'ai donc bien besoin de cette construction de fichier.

Voici mon souci sous forme d'un tableau simple :

1. Feuille "base de données globales"

N° feuille perso. Nom. Prénom.

Martin Jean

19-001 Dupont. Michel

Durand. Marie

Schmilblik. Coluche

2. Feuille perso client intitulée 19-001

Nom : "renvoyer la valeur de la cellule NOM lorsque sur la même ligne il y a 19-001 dans la première colonne"

Prénom : "renvoyer la valeur de la cellule PRENOM lorsque sur la même ligne il y a 19-001 dans la première colonne"

J'espère que cette explication vous aidera à omprendre ma problématique ?

Thanks !

Donc, visiblement, toujours pas de fichier en exemple !

Je vous ai fait un extrait de tableau au-dessus. Je vous envoie un extrait de fichier excel plus tard en journée (suis sur le tel).

Re,

Non ! Je ne vois pas ta problématique (imaginaire !)

Il me semble que tu confonds deux choses qu'il est primordial de distinguer : données brutes et données mises en situation.

Les données brutes, ce sont celles que tu recueilles et conserves, avec lesquelles tu travailleras, on les stocke sous forme de bases de données car l'on n'a pas de moyen plus économique de le faire ni de mode plus efficace pour n'importe quelle utilisation ultérieure.

Que tu aies une seule base de donnée regroupant tout ou que tu scindes en deux bases : base générale (tous clients, avec un nombre limité de champs d'information) et base clients annuels reliée à la première par un champ commun (un seul), et accueillant un plus grand nombre de champs d'information (sans faire doublon avec la base générale), c'est un choix d'organisation de tes données, qui t'incombe, à faire à mon sens en relation avec l'ensemble des utilisations projetées, de façon que l'organisation retenue les facilite.

Les données brutes, tu as à t'assurer de leur fiabilité, de leur mise à jour, de la sécurité de leur conservation, etc. mais tu n'as même pas besoin de les voir en tant que telles, et le mieux est d'ailleurs de ne pas les voir.

Maintenant lorsque tu veux voir tes données, tu consultes ta base, tu te les montres selon une mise en forme particulière, variable selon le travail que tu entends faire... Tu peux alors parler de fiche pour te les présenter, mais ladite fiche n'a besoin d'exister que le temps que tu la regardes ou t'en serve pour une chose ou l'autre. Le reste du temps, elle ne peut qu'encombrer inutilement !

Les données mises en situation doivent rester volatiles, appraître lorsque la situation l'exige, disparaître lorsqu'aucune situation ne les réclame...

Ce que je souhaite, lorsque j'ouvre un classeur, c'est qu'il réponde instantanément à mes moindres sollicitations, sans aucun délai perceptible de ma part. Ce que j'obtiens en veillant à le conserver aussi léger que possible. J'ai besoin de voir une fiche, j'actionne un dispositif de consultation, sur feuille ou au moyen d'un Userform, qui va me permettre de définir celle que je souhaite voir, soit directement, soit au moyens de critères multiples qui m'extraieront les enregistrements concernées de la base et me permettront de faire le choix final.

Et j'ai ma fiche instantanément sous les yeux une fois ma sélection faite !

J'ai vu ! Elle disparaît ! Détruite ! [non en fait, les données sont toujours présentes en mémoire, ce qui disparaît c'est la présence en mémoire de données mises en formes, doublant les données brutes permanentes...]

J'ai besoin de la voir 3 fois dans le quart d'heure ! Je la crée et détruis 3 fois ! Ou autant de fois qu'il m'est nécessaire.

Et dans ces conditions, je travaille en ayant toujours sous la main tout ce qu'il m'est nécessaire d'avoir à tout moment !

Si je me mets à stocker des données en double, en triple, voire plus, j'aurais un gros classeur, qui deviendra vite avec le temps peu malléable, ou mes manipulations vont finir par prendre plusieurs secondes pour être suivies d'effet, où des recalculs permanents vont me ralentir à chaque fois, où les délais d'affichage de mes fiches seront finalement plus longs, et avec lequel il deviendra de plus en plus inconfortable de travailler...

Tout est affaire de choix.

Cordialement.

Pour répondre à ton dernier message, je ne maîtrise pas les macro et autres userform (malheureusement car j'ai conscience que mes techniques ont leurs limites), d'où le fait que dans le cas présent j'ai un réel souci

Pour autant j'arrive à des résultats pas dégueu à coups de formules plus basiques que ci-dessus... Mais en effet ça alourdit et heureusement je n'ai que 150 clients par an à gérer!

Je vous ai sorti le tableau simplifié (en PJ) afin que vous puissiez y jeter un oeil quand vous aurez un moment.

Concrètement, la feuille 1 "Adhérents" est effectivement un classique base de données constituant mes données brutes client par client.

La feuille 2 et les suivantes (19-001 ; 19-002, etc.) constituant les fiches clients (réduite ici à leurs simples coordonnées mais au réel, comme dit précédemment j'y retrouve l'intégralité du contenu de leur commande, donnant lieu à des redispatches dans d'autres tableaux de synthèses entièrement automatisés).

Ma limite technique est simple, étant fainéant, je n'ai pas envie de taper les coordonnées dans les fiches de chacun alors que la base de données brutes est déjà existante ! (hors màj annuelles évidemment)

En 2019, lorsqu'un adhérent validera son inscription, je vais indiquer dans la 1ère colonne de la feuille adhérents, son numéro d'inscription soit "19-001" ou "19-002" dans le cas présent. Sur les 600 noms au réel de la base, je ne sais pas qui va s'inscrire ni dans quel ordre, je ne sais donc pas par avance quel sera ce numéro d'inscription pour chacun. Comment dois-je donc faire pour qu'une fois ce "19-001" détecté dans la colonne, cela complète les coordonnées de l'adhérent correspondant dans sa fiche personnelle correspondant à l'onglet "19-001" ?

Je suis chiant, je sais lol

Merci en tout cas pour vos premières réponses exhaustives et donnant à réfléchir

Ok,

Tu peux très simplement utiliser la fonction INDIRECT.

Dans la feuille Adhérents, dans la colonne B, tu peux inscrire :

=INDIRECT("'"&A9&"'!A2")

Pour le nom, dans la colonne C :

=INDIRECT("'"&A9&"'!A3")

Etc...

je ne maîtrise pas les macro et autres userform

La maîtrise releve d'apprentissages successifs et de l'utilisation des connaissances acquises...

Si tu maîtrisais ton projet, tu ne serais pas demandeur sur un Forum.

Si tu y viens seulement pour ne réaliser que ce que tu aurais pu faire sans cette démarche, ou quasiment, tu n'auras guère de valeur ajoutée au final.

Si tu tiens à ce que ta réalisation acquière un minimum de pérennité, cela passe toujours par la considération que la phase la plus importante d'un projet se situe toujours au niveau conception (qui ne demande aucune connaissance préalable en Excel...) dont il faut pousser l'élaboration au maximum avant de passer aux techniques de réalisation (qui ne nécessitent que des apprentissages additionnels et sur lesquelles tu trouveras de l'assistance...)

Jpbt : j'ai testé ta proposition en espérant que je ne la maîtrisais pas parfaitement précédemment mais ça ne marche pas.

Ma problématique c'est que ma colonne A dans la feuille "adhérents" voit chacune de ses cellules rester vide (si non inscrit cette année) ou prendre la valeur d'un des onglets (19-001;19-002;19-003 etc.) des fiches personnelles.

Ce caractère aléatoire sur une plage de données ne me semble pas pris en charge par INDIRECT. Si tel est le cas c'est que j'ai mal compris ta proposition.

La maîtrise releve d'apprentissages successifs et de l'utilisation des connaissances acquises...

Cela fait 33 ans et ma découverte de la marche au lieu du déplacement à 4 pattes que je l'ai compris... Merci quand même.

Je viens chercher un coup de pouce pour un blocage rencontré face à un projet, pas lire de longs pavés dont je ne peux rien retirer de particulier. Si ce coup de pouce débouche sur une séance de mise à niveau plus globale tant mieux, mais nul besoin de me faire sentir que si "je maîtrisais mon projet..."

Je maîtrise parfaitement les points d'entrée et de sortie et ma logique générale (j'ai tourné ici ma demande autour de mon probleme technique pour ne pas vous enquiquiner avec mon projet global). Ce dont je manque, comme beaucoup c'est de connaissances et de technique sur excel.

Comme tu l'auras compris, je ne goūte guère qu'un fin connaisseur d'un sujet me fasse comprendre que je n'ai pas compris et me laisse là-dessus, ça donne un côté donneur de leçon que je trouve désagréable. M'enfin, rien de bien grave.

Si tu as un tuto (ou autre) illustrant à ton sens très bien ce que je devrais faire en lieu et place de ma logique/construction actuelle, je suis preneur, évidemment 😉

Bonjour,

Il me semblait avoir été clair dans les indications génériques de mes deux premiers posts sur ton sujet !

Reprenons à partir de ton modèle inachevé...

Inachevé parce que les éléments annuels de ta fiche sont totalement absents. Eléments dont ma proposition n° 1, proposition technique (au cas où cela t'aurait échappé ) consiste à ne pas les mettre en fiches mais à en faire une base de données annuelles. On ne peut pour l'instant pas l'illustrer en l'absence des informations afférentes.

Le complément de cette proposition est de n'avoir qu'une fiche (modèle destiné à l'affichage sous forme de fiche), laquelle permettra l'affichage du client consulté. Les informations étant dans la base, elles n'ont nul besoin d'être dupliquées de façon permanente.

La configuration de la fiche sera à revoir sur un point : je ne suis pas puriste en matière de fusion de cellules (hors bases de données où les fusions doivent être totalement exclues), mais encore faut-il que cela réponde à un besoin réel et ne complique pas inutilement les tâches ultérieures.

Ici les fusions en lignes de 7 cellules n'ont (au moins pour l'instant) aucune justification... En tout état de cause, la configuration aboutit à placer 10 informations en colonne A et 2 autres en colonne E, informations provenant toutes de la base. L'utilité d'une même verticalité de cette série d'information est assez évidente, que l'on opère en formule ou par VBA, je pense donc qu'il convient de les rétablir sur une même colonne.

Le schéma formule pour ta configuration de fiche repose sur une classique couple INDEX-EQUIV :

  • recherche avec EQUIV du numéro annuel dans la première colonne de la base, ce qui fournira l'index de ligne,
  • appel pour chaque ligne de l'info voulue à partir d'un index de colonne figurant sur la ligne.
Mettons, en H tu places de H1 à H13 : 2, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15. (colonne à masquer dans ce cas).

En K1 tu places le n° de dossier (qui lui doit rester visible et dépendre d'un dispositif de recherche, que tu as occulté par ton projet de multiplier les fiches mais qui n'en sera pas moins nécessaire pour trouver la bonne fiche...)

Supposons la formule en colonne E, en E1 :

=INDEX(BAdh;EQUIV($K$1;NDoss;0);H1)

Formule à tirer jusqu'en E13, et le tour est joué.

J'ai supposé ta base nommée BAdh, prenant en compte les données à partir de la ligne 4 des colonnes B à Q, et la colonne A, sur un nombre de lignes équivalentes nommée NDoss. Noms dynamiques pour s'adapter à l'extension des données (ou bien utilisation d'un tableau Excel qui inclue ce caractère dynamique...)

Mais l'idée est de montrer qu'on peut opérer avec une formule simple, sous réserve de prendre quelques dispositions pour pouvoir le faire, le détail de ces dispositions pouvant être vu par la suite.

Pour ma part, j'inclinerais plutôt vers un code VBA : recherche de la ligne de la base à extraire, extraction globale des infos cherchées sous forme de tableau, affectation globale de ce tableau à la fiche.

En 3 lignes de code dont la durée d'exécution demeurera toujours imperceptible à l'utilisateur, on obtient la fiche à consulter...

Dans ce cas, je me contente de nommer la colonne B de la base, la plus adéquate (pour l'instant inutilisable car non servie) car cela suffit amplement en VBA pour atteindre n'importe quel point...

Reste à définir un dispositif de recherche, car la recherche sur un n° de dossier ou un n° d'adhérent n'est en général guère parlante, et il convient d'avoir d'autres critères...

Cordialement.

Jpbt : j'ai testé ta proposition en espérant que je ne la maîtrisais pas parfaitement précédemment mais ça ne marche pas.

Ma problématique c'est que ma colonne A dans la feuille "adhérents" voit chacune de ses cellules rester vide (si non inscrit cette année) ou prendre la valeur d'un des onglets (19-001;19-002;19-003 etc.) des fiches personnelles.

Ce caractère aléatoire sur une plage de données ne me semble pas pris en charge par INDIRECT. Si tel est le cas c'est que j'ai mal compris ta proposition.

La formule fonctionne, par contre si tu as une cellule vide, tu ajoutes un simple test :

SI(A2<>"";INDIRECT(......);"")

Rechercher des sujets similaires à "rechercher valeur condition colonne"