Microsoft 365 Formule Excel

  • Initiateur de la discussion Initiateur de la discussion zest.d
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zest.d

XLDnaute Nouveau
Bonjour,
J'aimerais alimenter une colonne en fonction d'un onglet source sauf que la recherche que je fais peut avoir plusieurs résultats dont plusieurs identiques et j'aimerais ne prendre que les 2 résultats différents du coup.

Ci-joint, un fichier test2.xlsx pour mieux comprendre mon besoin.

Je vous remercie tous par avance,

Cordialement,
zest.d
 

Pièces jointes

Solution
Re,
Là, ce n'est plus raisonnable, mais il vous suffit de rajouter à la queue leu leu toutes les formules avec toutes les unités. Ce qui ferait 14 formules imbriquées.
Mais ceci dit c'est pas compliqué mais demande de l'huile de coude. 🙂
Bonjour Sylvanu,
Pour info, j'ai fini par faire et trouver une formule un peu moins grande que celles que l'on utilisait.
VB:
=JOINDRE.TEXTE(CAR(10);VRAI;SIERREUR(INDEX(RefLiensGlobal!$U:$U;EQUIV(I2&{"VTS10";"VTS11";"VTS12";"VTS20";"VTS21";"VTS22";"E1";"E2";"E4";"E5";"J1";"J2";"J4";"J5"};RefLiensGlobal!$J:$J&RefLiensGlobal!$P:$P;0));""))

Il subsiste juste un inconvénient à la mise en forme ... lorsque je fais copier/coller pour ne plus avoir les formules qui prennenet de la place, je me...
Bonjour Zest,
Une tentative en PJ, mais mes résultats sont différent du tableau que vous donnez. 🙁
Par ex pour l'adresse 050000 je ne trouve aucune correspondance.
Je suis parti du principe que s'il y en a deux, les deux se suivent comme pour 050400 en lignes 2 et 3.
Sinon cette formule ne marche pas.
VB:
=SIERREUR(INDEX(RefLiens!$G:$G;EQUIV(A2;RefLiens!$C:$C;0))&SI(INDEX(RefLiens!$C:$C;EQUIV(A2;RefLiens!$C:$C;0))=INDEX(RefLiens!$C:$C;1+EQUIV(A2;RefLiens!$C:$C;0));" "&INDEX(RefLiens!$G:$G;1+EQUIV(A2;RefLiens!$C:$C;0));"");"")
 

Pièces jointes

Bonjour Zest,
Une tentative en PJ, mais mes résultats sont différent du tableau que vous donnez. 🙁
Par ex pour l'adresse 050000 je ne trouve aucune correspondance.
Je suis parti du principe que s'il y en a deux, les deux se suivent comme pour 050400 en lignes 2 et 3.
Sinon cette formule ne marche pas.
VB:
=SIERREUR(INDEX(RefLiens!$G:$G;EQUIV(A2;RefLiens!$C:$C;0))&SI(INDEX(RefLiens!$C:$C;EQUIV(A2;RefLiens!$C:$C;0))=INDEX(RefLiens!$C:$C;1+EQUIV(A2;RefLiens!$C:$C;0));" "&INDEX(RefLiens!$G:$G;1+EQUIV(A2;RefLiens!$C:$C;0));"");"")
Bonjour Sylvanu, merci pour ta réponse et ta solution et désolé pour le temps de réponse 🙁
Je n'ai pas pu fournir tout le fichier BDD donc ton test n'a pu aboutir mais ta solution fonctionne.
Je l'ai modifiée pour mon cas, c'est à dire la mettre directement dans l'onglet RelLiens plutôt que dans le référentiel data comme cela je peux la triturer un peu ... cependant, je vais passer un peu de temps à bien la comprendre cette formule 🙂
En les cas merci encore.

Cordialement,
Zest.d
 
Bonjour Sylvanu, merci pour ta réponse et ta solution et désolé pour le temps de réponse 🙁
Je n'ai pas pu fournir tout le fichier BDD donc ton test n'a pu aboutir mais ta solution fonctionne.
Je l'ai modifiée pour mon cas, c'est à dire la mettre directement dans l'onglet RelLiens plutôt que dans le référentiel data comme cela je peux la triturer un peu ... cependant, je vais passer un peu de temps à bien la comprendre cette formule 🙂
En les cas merci encore.

Cordialement,
Zest.d
Re Bonjour Sylvanu,
Ce serait abusé de demander plus ?
En fait la rupture ne se fait pas forcément sur la ligne suivante ... si l'on reprend l'exemple de l'entrée en colonne C "050400" la première adresse sortie est 050A00 mais la rupture sur la seconde sortie est sur la ligne 538 "053C00" ... il y a rupture sur la colone D et la colonne E.
Ce que je souhaiterais c'est d'avoir le résultat final, toujours pour l'exemple de l'entrée "050400" :
CPU chpid 38 pchid 281 S5 vers port I0001 Baie E2 NXS SX50 SYS1 sur l'adresse 053d00 & port I0033 Baie E1 EQX SX11 VI02 sur l'adresse 053400

humhum .. je me rends compte que cela ne doit pas être si simple au final ...

Cordialement,
Zest.d
 
CPU chpid 38 pchid 281 S5 vers port I0001 Baie E2 NXS SX50 SYS1 sur l'adresse 053d00 & port I0033 Baie E1 EQX SX11 VI02 sur l'adresse 053400
Pas sur d'avoir tout bien compris.🙂
Pour 050400 il n' y a nulle part 053D00. Je ne trouve que du 053A00 sur E2 et 053C00 sur E1.
Un essai en PJ avec :
VB:
=SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E1";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")&
SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E2";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")
( à valider par Maj+Ctrl+Entrée sur les anciennes version d'XL )
Ce qui donne pour 050400 :
CPU chpid 38 pchid 281 S5 Port I0033 Baie E1 EQX SX11 VI02
CPU chpid 38 pchid 281 S5 Port I0001 Baie E2 NXS SX50 SYS1
 

Pièces jointes

Pas sur d'avoir tout bien compris.🙂
Pour 050400 il n' y a nulle part 053D00. Je ne trouve que du 053A00 sur E2 et 053C00 sur E1.
Un essai en PJ avec :
VB:
=SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E1";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")&
SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E2";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")
( à valider par Maj+Ctrl+Entrée sur les anciennes version d'XL )
Ce qui donne pour 050400 :
Hum Hum ... Cela ne fonctionne pas chez moi ... bizarre.
Je vais continuer à chercher le pourquoi du comment. En tout état de cause merci beaucoup pour tout.

Cordialement,
Zest.d
 
Bonjour Sylvanu,
Désolé pour la fausse alerte ... j'ai eu le même cas à savoir faire mon test sur une BDD non complète 🙂
Cela fonctionne parfaitement, merci beaucoup.

Cordialement,
Zest.d
Re Bonjour Sylvanu,
pour une histoire de mise en forme dans la cellule, y a t'il un moyen d'insérer un saut de ligne (char10) à la rupture au niveau du second terme CPU ? J'essaie mais bon ... pas probant pour le moment 🙂

Merci,
Zest.d
 
J'essaie mais bon ... pas probant pour le moment
Il suffit de rajouter un car(10) sur PC et apparemment un car(13) sur MAC.
VB:
=SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E1";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")&CAR(10)&
SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E2";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")
Ne pas oublier de mettre la colonne Libellé en format "Renvoyer à la ligne automatiquement", et de double cliquer sur une séparation de ligne pour mettre les lignes à la bonne hauteur pour voir les deux lignes affichées.
 

Pièces jointes

Il suffit de rajouter un car(10) sur PC et apparemment un car(13) sur MAC.
VB:
=SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E1";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")&CAR(10)&
SIERREUR(INDEX(RefLiens!$G$1:$G$2000;EQUIV(A2&"E2";RefLiens!$C$1:$C$2000&RefLiens!$E$1:$E$2000;0));"")
Ne pas oublier de mettre la colonne Libellé en format "Renvoyer à la ligne automatiquement", et de double cliquer sur une séparation de ligne pour mettre les lignes à la bonne hauteur pour voir les deux lignes affichées.
Merci Sylvanu,
et encore une fois merci ! Je savais bien qu'il y avait ducar(10) là dessous ...
Une dernière fois ... si je veux tester E1, E2, J1 et J2 ? Cela donnerait-il ceci ? :
VB:
=SIERREUR(INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"E1";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&CAR(10)&
SIERREUR(INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"E2";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&" "&
SIERREUR(INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"J1";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")[SIZE=3]&CAR(10)&[/SIZE]
SIERREUR(INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"J2";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")

En fait,, cela me rajoute des interlignes ... comme si le test s'en fichait que ce soit du Ex ou du Jx ...
 
En fait,, cela me rajoute des interlignes ... comme si le test s'en fichait que ce soit du Ex ou du Jx ...
Effectivement les car(10) sont introduits quelque soient les résultats suivants.
Pour éviter ça, il suffit d'introduire les car(10) uniquement si d'autres valeurs sont trouvées.
Essayez :
VB:
=SIERREUR(INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"E1";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&
SIERREUR(CAR(10)&INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"E2";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&
SIERREUR(CAR(10)&INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"J1";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&
SIERREUR(CAR(10)&INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"J2";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")
( un peu au pif puisque vos colonnes ne correspondent plus aux anciennes. )
 
Effectivement les car(10) sont introduits quelque soient les résultats suivants.
Pour éviter ça, il suffit d'introduire les car(10) uniquement si d'autres valeurs sont trouvées.
Essayez :
VB:
=SIERREUR(INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"E1";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&
SIERREUR(CAR(10)&INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"E2";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&
SIERREUR(CAR(10)&INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"J1";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")&
SIERREUR(CAR(10)&INDEX(RefLiensGlobal!$AA:$AA;EQUIV(A2&"J2";RefLiensGlobal!$I:$I&RefLiensGlobal!$O:$O;0));"")
( un peu au pif puisque vos colonnes ne correspondent plus aux anciennes. )
Oups ... j'ai voulu supprimer la pièce jointe et en fait j'ai supprimé le post je crois ...
Bon toujours dans la continuité mais en plus complexe du coup. Ci-joint un fichier testZest.xlsx dans lequel j'ai essayé d'être exhaustif par rapport à ma demande globale du coup ... j'en profite 🙂
merci,
Cordialement,
Zest.d
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
388
Réponses
2
Affichages
262
Réponses
5
Affichages
285
Réponses
20
Affichages
803
Réponses
6
Affichages
570
Retour