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
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
A voir également:
- EXCEL : Recherche contacts par catégorie(s)
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
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
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.
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.
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
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
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
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
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 ;-)
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 ;-)
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
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
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
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
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
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
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
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é.
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é.
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
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.
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.
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
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 !
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 !
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
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
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
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
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.
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.
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
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
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
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
6 avril 2014 à 21:20
Bonjour alainjjb,
Je ne comprends pas bien car dans le classeur j'avais :
Si tu as supprimé une colonne du type de liste recherchée, il faut aussi adapter :
Bonne soirée
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
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
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
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
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
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 !
@+
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 !
@+
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
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
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