Lettre type en fonction d'un tableau rempli

Bonjour à tous,

Je gère un parc de bâtiments avec système intrusion, les intervenants changent beaucoup ou oublis leur code je dois à chaque fois faire un courrier nominatif avec leur code le lieu et le mots de passe du lieu en cas de déclenchement d'alarme, pour leur renvoyer, travail très fastidieux et chronophage.

J'aimerais si cela est possible le faire avec Excel.

J'ai fais un petit exemple : pour que vous voyez ce que je cherche. je pourrais adapter cette exemple mais le faire de A à Z je n'ai pas encore les compétences.

Donc un classeur avec deux feuilles :

Feuille 1 : lettre

Feuille 2 : le tableau

J’aimerais qu'en choisissant l’agent en feuille 1 le code, les sites, ou il intervient ( identifié par des X) et le mot dépasse de chaque site remplisse les cellules prévues.

je ne sais pas si cela est possible mais je pense que oui.

J’espère avoir été clair. je vous met l'exemple.

9tableau-test.xlsx (11.85 Ko)

Merci à tous ceux qui pourront m'aider.

Bonjour,

L'organisation de ton "Tableau code" ne facilite pas du tout son utilisation. Il serait nettement plus simple de faire 3 tableaux, l'un avec la correspondance entre un agent et son code personnel, un autre avec l'association entre un agent et un site (si plusieurs sites pour un agent, faire plusieurs lignes) et le dernier pour la correspondance entre un site et un mot de passe.

Bref, voilà quand même une proposition pour ton fichier actuel :

9tableau-test.xlsx (12.62 Ko)

Bonjour,

Une proposition faite en vitesse, surement à améliorer.

Bien cdlt.

12tableau-test.xlsm (22.34 Ko)

Bonjour à tout les deux et un grand merci.

Pedro22 si tu a le temps pourrais tu m'expliquer c'est deux formule qui sont utilisé

J'ai envie de comprendre plutot que d'adapter betement. si tu n'a pas le temps ce n'est pas grave je vais m'en sortir avec ce qui a été posté.

=SIERREUR(RECHERCHEH(Lettre!B17;'Tableau code'!$C$1:$N$2;2;0);"")

et

=SIERREUR(INDEX(DECALER('Tableau code'!$C$1:$N$1;0;EQUIV(B17;'Tableau code'!$C$1:$N$1;0));1;EQUIV("X";DECALER('Tableau code'!$C$3:$N$3;EQUIV($F$7;'Tableau code'!$A$4:$A$9;0);EQUIV(B17;'Tableau code'!$C$1:$N$1;0));0));"")

Merci encore j'attend un peu avant de mettre en résolu

=SIERREUR(RECHERCHEH(Lettre!B17;'Tableau code'!$C$1:$N$2;2;0);"")

et

=SIERREUR(INDEX(DECALER('Tableau code'!$C$1:$N$1;0;EQUIV(B17;'Tableau code'!$C$1:$N$1;0));1;EQUIV("X";DECALER('Tableau code'!$C$3:$N$3;EQUIV($F$7;'Tableau code'!$A$4:$A$9;0);EQUIV(B17;'Tableau code'!$C$1:$N$1;0));0));"")

  • SIERREUR : permet de ne rien afficher dans la cas où la formule qu'elle contient renvoie une erreur (par exemple une recherche infructueuse)
  • INDEX(matrice;n°ligne;n°colonne) : renvoie la valeur située à l'intersection de la ligne et de la colonne spécifiée au sein d'une plage également spécifiée
  • EQUIV(valeur_cherchée;matrice;type_recherche) : renvoie la position d'un élément cherché au sein d'une plage (une ligne ou une colonne)
  • DECALER(matrice;n°ligne;n°colonne) : renvoie une plage décalée du nombre de ligne et de colonne spécifiée, à partir d'une plage de départ. Si les valeurs pour la ligne et la colonne sont nulles, la plage renvoyée est la même que la plage de départ

Donc, si on procède par étapes :

1. On cherche la ligne correspondant à l'agent indiqué en F7 (rouge) :

=SIERREUR(INDEX(DECALER('Tableau code'!$C$1:$N$1;0;EQUIV(B17;'Tableau code'!$C$1:$N$1;0));1;EQUIV("X";DECALER('Tableau code'!$C$3:$N$3;EQUIV($F$7;'Tableau code'!$A$4:$A$9;0);EQUIV(B17;'Tableau code'!$C$1:$N$1;0));0));"")

2. Ce numéro de ligne est utilisé pour définir la plage de recherche correspondant à cet agent (vert) :

=SIERREUR(INDEX(DECALER('Tableau code'!$C$1:$N$1;0;EQUIV(B17;'Tableau code'!$C$1:$N$1;0));1;EQUIV("X";DECALER('Tableau code'!$C$3:$N$3;EQUIV($F$7;'Tableau code'!$A$4:$A$9;0);EQUIV(B17;'Tableau code'!$C$1:$N$1;0));0));"")

3. On cherche au sein de cette plage la colonne dans laquelle se trouve un "X" (bleu) :

=SIERREUR(INDEX(DECALER('Tableau code'!$C$1:$N$1;0;EQUIV(B17;'Tableau code'!$C$1:$N$1;0));1;EQUIV("X";DECALER('Tableau code'!$C$3:$N$3;EQUIV($F$7;'Tableau code'!$A$4:$A$9;0);EQUIV(B17;'Tableau code'!$C$1:$N$1;0));0));"")

4. Pour renvoyer tous les éléments, on décale la plage de recherche pour ne pas tenir compte du dernier "X" trouvé (formule de la ligne supérieure dont le résultat est affiché en B17) - (jaune) :

=SIERREUR(INDEX(DECALER('Tableau code'!$C$1:$N$1;0;EQUIV(B17;'Tableau code'!$C$1:$N$1;0));1;EQUIV("X";DECALER('Tableau code'!$C$3:$N$3;EQUIV($F$7;'Tableau code'!$A$4:$A$9;0);EQUIV(B17;'Tableau code'!$C$1:$N$1;0));0));"")

1. Une fois qu'on a le nom du site avec la formule précédente, on cherche le mot de passe associé (c'est une recherche horizontale, donc formule RECHERCHEH) :

=SIERREUR(RECHERCHEH(Lettre!B17;'Tableau code'!$C$1:$N$2;2;0);"")

Traduit dans la formule ça donne : =RECHERCHEH(NomDuSite;ListeDesSitesEtMotsDePasse;LigneDansLaquelleSeTrouveLaDonnée;0 car on veut une correspondance exacte et non approximative)

En espérant être plus clair !

Franchement respect

Tu ne peux pas être plus clair , et prendre ce temps pour expliquer c'est super cool je met en résolu

Rechercher des sujets similaires à "lettre type fonction tableau rempli"