EXCEL : Recherche contacts par catégorie(s)

Résolu/Fermé
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 - 1 avril 2014 à 22:32
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 - 7 avril 2014 à 09:40
Bonjour,

je cherche à me faire un tableau de contacts que je peux classer et rechercher par catégorie, sachant qu'un même contact peut faire partie d'une ou plusieurs catégories (par exemple : Famille, Amis, Asso X, Asso Y, Asso Z, ...). Quel est, pour vous le meilleur outil Excel (Recherchev, Index, macro ?) ? et la meilleure organisation (une feuille de données + une feuille de recherche, un tableau croisé dynamique, autre) ?
Merci d'avance à tous
Alain

A voir également:

9 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
2 avril 2014 à 09:01
Bonjour alainjjb,

Le meilleur outil est surtout un outil adapté à celui qui l'utilise ! ;-)

En fonction de ta description, je pencherai pour une feuille base de données avec un tableau croisé dynamique avec tes catégories en filtre de rapport. Le TCD est très modulable aussi bien en esthétique, disposition, sélection, etc et n'a besoin d'aucune formule de recherche pour donner l'ensemble des résultats.

un même contact peut faire partie d'une ou plusieurs catégories
Dans ce cas il sera en doublon sur le nom mais pas la catégorie car la base d'excel est plus restreinte qu'access par exemple.
0
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
Modifié par alainjjb le 2/04/2014 à 11:25
Bonjour Gbinforme,
j'étais plutôt parti sur une feuille de données comprenant le nom et prénom, les catégories et les coordonnées des contacts et une feuille de recherche avec le choix de la catégorie recherchée (liste déroulante) et la fonction INDEX pour récupérer les contacts concernés. Cette solution n'implique aucune duplication de données contrairement au TCD qui m'oblige à dupliquer sur chaque catégorie les infos des contacts qui sont sur plusieurs catégories.
MAIS sa mise en oeuvre est effectivement + difficile pour moi. Avec votre aide je pense pouvoir y arriver.
Qu'en penses-tu ?
Merci

Voici le lien vers le tableau que j'avais commencé : https://www.cjoint.com/?DDclvm40Lu0
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
2 avril 2014 à 19:06
Bonsoir alainjjb,

la fonction INDEX pour récupérer les contacts concernés

Oui ... mais non car la fonction index ne récupère qu'une valeur et pour toutes les récupérer il faut passer par des matricielles assez complexes à mettre en oeuvre .

Je vais regarder mais si quelqu'un veux faire la formule je n'ai absolument rien contre ;-)
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
Modifié par gbinforme le 3/04/2014 à 10:28
Bonjour alainjjb,

Bon voici ton classeur avec la sélection :

https://www.cjoint.com/?DDdkzEXGeIK

Il faut bien sûr tirer vers le bas l'ensemble des lignes de la feuille recherche en fonction au moins du nombre maximum d'une catégorie.
La colonne choisie est surlignée en feuille base.
edit : suppression des macros inutiles !
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
0
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
3 avril 2014 à 11:35
Bonjour gbinforme

et merci pour ce tableau, qui, à priori correspond exactement à ce que j'avais en tête. Mais maintenant je vais me pencher sur la solution proposée pour essayer de comprendre ce que tu as fait. Je reviendrai donc vers toi en cas de difficultés ... ce qui me parait fort probable !
En attendant merci beaucoup
Alain
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
3 avril 2014 à 17:59
Bonjour alainjjb,

je vais me pencher sur la solution proposée

Bon courage car c'est un peu la limite des formules pour faire ce genre de recherche. Elle repose sur des plages nommées dynamiquement et donc automatiquement évolutives :
- la plage de la colonne des noms
- la plage de la colonne du type de recherche qui est bien sûr évolutive en fonction du choix.
Ensuite, dans la matrice générée l'on recherche la plus petite ligne dont le nom n'est pas déjà affiché dans la plage de recherche.
Voilà un début d'explication car pour afficher les données associées au nom, c'est tout à fait classique et tu ne devrais pas avoir de difficulté.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
3 avril 2014 à 19:02
Bonjour gbinforme,
eh bien ! ça promet, car j'ai déjà besoin de beaucoup (voire beaucoup, beaucoup) de réflexion pour déjà comprendre ce que tu viens d'écrire. Du courage, il fa m'en falloir !
Merci
Alain

PS. Par contre le tableau est vraiment nickel. Exactement mon besoin.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
3 avril 2014 à 22:04
Bonsoir alainjjb,

Un petit truc pour t'aider à comprendre la formule : tu sélectionnes une partie cohérente (comme "NB.SI(B$7:B8;Noms)" par exemple) et tu fais F9 qui te donneras le résultat intermédiaire.
Tu fais la même chose sur plusieurs lignes pour voir l'évolution des données dans la matrice : tu as mis un exemple réduit et c'est beaucoup mieux car sinon l'on ne peut avoir que les débuts !
0
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
5 avril 2014 à 22:35
Bonsoir gbinforme,

je crois que j'abandonne ! Même avec tes explications, trucs et astuces je n'y comprends rien. Et comme je n'ai pas l'objectif de t'égaler ... Le seul hic, c'est que le jour ou j'aurai un problème dans ce tableau, comme je n'y comprends rien, il sera pour toi (si tu le veux bien évidemment !).
Sinon, ce tableau fonctionne parfaitement.
Merci encore
Alain
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
6 avril 2014 à 10:03
Bonjour alainjjb,

Comme je te l'avais dit, (la fonction index ne récupère qu'une valeur et pour toutes les récupérer il faut passer par des matricielles assez complexes à mettre en oeuvre .) ces procédures sont difficiles à maitriser car elles utilisent la création de matrices internes aux calculs excel qui sont loin d'être évidentes à comprendre.
J'ai réussi à les intégrer assez facilement à ton tableau mais cela demande beaucoup de précision dans la présentation des tableaux et l'écriture des formules. Je me suis lancé un peu à reculons car ce n'est pas trop ma tasse de thé et c'est pour cela que je te conseillais le TCD.
Cependant, cela correspond sans doute mieux à ce que tu voulais faire car avec ta conception de base, le tcd est sans doute délicat à utiliser. Si tu ne bouscules pas l'organisation des données, il n'y a aucune raison que tu ais des soucis car les plages nommées sont évolutives et intègrent automatiquement l'inflation des données. Si tu veux rajouter des catégories, il suffit de modifier la plage dans "select".
Merci à toi de m'avoir poussé sur cette solution qui m'a bien fait plaisir et à plus tard
Bonne journée.
0
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
6 avril 2014 à 10:39
Bonjour gbinform,
si tu as eu du plaisir à faire ce tableau, c'est donc un plaisir partagé car j'en ai à l'utiliser ! (et aussi à essayer de le comprendre).
J'ai fait une petite modif que je voudrais bien que tu valides (elle fonctionne mais !!!) :
Dans la feuille "recherche" j'ai ajouté une colonne "Informations" correspondant à des précisions sur le contact (profession, ...). Cette colonne existait déjà dans la feuille "Data" avant la colonne "code postal". Pour sa valorisation j'ai modifié la plage nommée "infos" :
infos =DECALER(Data!$B$4;1;11;NBVAL(Data!$B:$B)-1;6) EN
infos =DECALER(Data!$B$4;1;10;NBVAL(Data!$B:$B)-1;7)
Merci et bon dimanche à toi
Alain
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
6 avril 2014 à 21:20
Bonjour alainjjb,

Je ne comprends pas bien car dans le classeur j'avais :
=DECALER(Data!$B$4;1;8;NBVAL(Data!$B:$B)-1;6)
8, 10, ou 11 correspond au nombre de colonnes qu'il faut décaler par rapport à la colonne B pour avoir la colonne de début des infos afférentes au nom : 8 correspondait à la colonne B + les 7 colonnes du type de liste recherchée.
Si tu as supprimé une colonne du type de liste recherchée, il faut aussi adapter :
select	=DECALER(Data!$B$4;1;EQUIV(Choix;Data!$C$4:$I$4;0);NBVAL(Data!$B:$B)-1;1)
qui est la plage des colonnes du type de liste recherchée.

Bonne soirée
0
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
6 avril 2014 à 22:37
Bonsoir gbinforme,
effectivement j'avais ajouté avant la colonne informations, 2 colonnes "type de recherche", donc tu as raison, le nom "infos" avait bien les valeurs que tu indiques : =DECALER(Data!$B$4;1;8;NBVAL(Data!$B:$B)-1;6) et maintenant :
infos =DECALER(Data!$B$4;1;10;NBVAL(Data!$B:$B)-1;7).
J'ai donc ajouté des colonnes et le nom "select" s'est mis à jour automatique- ment . Une chance !
select =DECALER(Data!$B$4;1;EQUIV(Choix;Data!$C$4:$K$4;0);NBVAL(Data!$B:$B)-1;1)
Bonne soirée (voire bonne nuit à cette heure !)
Alain
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
7 avril 2014 à 09:00
Bonjour alainjjb,

s'est mis à jour automatique- ment . Une chance !
Non c'est la règle normale lorsque tu insères dans une plage

Bon c'est parfait, tu vas maitriser ton outil !
@+
0
alainjjb Messages postés 777 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 8 septembre 2024 110
7 avril 2014 à 09:40
Bonjour gbinforme,

maîtriser !!! je n'irai pas jusque là. Mais au moins être capable de réaliser les modifications basiques (ajout données et ajout type de recherche). Et pourquoi pas, un jour, aller plus loin ?
Merci à toi et probablement à une prochaine fois.
Alain
0