Microsoft 365 Synthese d'un tableau dont les lignes sont doublées

  • Initiateur de la discussion Initiateur de la discussion Bichette001
  • 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 !

Bichette001

XLDnaute Junior
Bonjour je m'explique...
ColA. Col B. Col C
Domaine 1. Exigence1. Nb ok
Sous domaine A. Ss exigence 1. 1
Sous domaine A. Ss exigence 2. 1
Sous domaine A. Ss exigence 3. 1
Sous domaine B. Ss exigence a. 2
Sous domaine B. Ss exigence b. 2

Je voudrais faire un recap sur un autre tableau ds lequel il faut recuperer le sous domaine A mais sans le répéter sur 3 lignes
Sous domaine A.
Le tcd n'est pas la bonne solution car l'utilisateur devra saisir un numéro de priorité sur ce recap de manière à trier le tableau par numéro de priorité...

Si vous avez une formule simple pr récupérer tous les noms de domaine et sous domaine sans doublons cest top

Merci
Bichette
Sous domaine A
Sous domaine A
Sous domaine B
Sous domaine B
 
Bonjour à tous


Il faut que le tableau source soit sous forme de tableau...
Si lignes vides il faudra sans doute filter
Sinon se met à jour par Données, Actualiser tout (un clic) ou on peut prévoir une ligne de code : définir l'événement déclencheur de la MAJ auto
Merci , oui pour l'évènement déclencheur ce serait quitter la colonne sous domaine ou domaine.. j'enregistre une macro c'est ça ? je sais pas coder de mon côté
 
RE

Le tableau source est nommé Donnees (dans mon exemple du #15)

A placer dans le module de la feuille contenant la source
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, ListObjects("Donnees").ListColumns(1).DataBodyRange) Is Nothing And _
    Intersect(Target, ListObjects("Donnees").ListColumns(2).DataBodyRange) Is Nothing Then Exit Sub
    ThisWorkbook.RefreshAll
End Sub
 
Bonjour Cisco, je ne comprends pas la formule : =SI(C$2:C$16;LIGNE($2:$16);0) ?
px tu m'expliquer stp tte la formule que je sache la reproduire seule : =SIERREUR(INDEX(A$1:A$16;MIN(SI(SI(C$2:C$16;LIGNE($2:$16);0)>=EQUIV(INDEX(A$1:A$16&B$1:B$16;MAX(SI(A$2:A$16&B$2:B$16=J3&K3;LIGNE(A$2:A$16)))+1);A$1:A$16&B$1:B$16;0);LIGNE($2:$16))));"")
index pr trouver le numéro de colonne
equiv le numéro de la ligne mais tte l'imbrication, je ne saurais pas la refaire
merci ;-)
 
Bonjour

Essaye de comprendre l'ensemble en sélectionnant la formule, puis en passant par Formule --> Évaluation de formule. Cela donne cela :

SI(C$2:C$16;LIGNE($2:$16);0)
Dans C$2:C$16, tu n'as que des 0 et des 1, ce qui équivaut pour Excel à des FAUX et des VRAI. Seuls les 1 m'intéressent. Dans ce cas, Excel, renvoie le n° de la ligne correspondante.
Bichette1.JPG

Bichette2.JPG


Dans INDEX(A$1:A$16&B$1:B$16;MAX(SI(A$2:A$16&B$2:B$16=J2&K2;LIGNE(A$2:A$16)))+1) regardons la partie SI(A$2:A$16&B$2:B$16=J2&K2;LIGNE(A$2:A$16))
Dans ce cas, Excel renvoie aussi les n° de lignes contenant J2&K2 dans la concaténation des colonnes A et B.
On prend le MAX de ces n° de lignes (Autrement dit, on veut connaitre le n° de la dernière ligne contenant J2&K2 dans la concaténation des colonnes A et B).
On ajoute 1 à ce MAX, car les valeurs qui nous intéressent ne sont pas sur cette dernière ligne contenant J2&K2, mais sur les suivantes (Ce qui signifie que la formule ne fonctionne que si les données sont classées comme dans ton fichier exemple). Si on a domaine sous domaine, on cherche la position des 1&a qui se trouve forcément en dessous. Si on a 1&a, on cherche 1&b qui se trouve forcément en dessous. De plus, INDEX(...,0) poserait problème.
Bichette3.JPG
Bichette4.JPG

ce qui nous donne ici "domaine sous domaine". On a donc
Bichette5.JPG

...
Autrement dit, en simplifiant, la méthode consiste a trouver le n° de la ligne contenant un 1 en colonne C (les lignes avec des domaines sous domaines ayant un 0 en colonne C ne nous intéressent pas), juste après la dernière ligne contenant J2&K2 en concaténant les colonnes A et B.

@ plus

P.S : C'est peut-être plus compréhensible en analysant les résultats intermédiaires obtenus avec la formule dans J4, plutôt que J3.
On a dans J3, 1, et dans K3, a.
On cherche le dernier 1&a dans A&B. On le trouve ligne 4. Il faut donc que la formule nous renvoie la première ligne contenant un 1 en colonne C, supérieure ou égale à 5.
 
Dernière édition:
Bonjour

Comme les colonnes A et B sont classées, on peut faire un tout petit peu plus court :
* en écrivant les résultats attendus dans J3 et K3
* en remplaçant, dans les formules dans J4 et K4 MAX(SI(A$2:A$16&B$2:B$16=J3&K3;LIGNE(A$2:A$16)))+1) par EQUIV(J3&K3;A$1:A$16&B$1:B$16;1)+1, puis en tirant ces formules vers le bas

@ plus
 

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
8
Affichages
1 K
Retour