XL 2016 réorganiser un tableau

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

vivi21

XLDnaute Occasionnel
Bonsoir,

Je souhaite réorganiser des données d'un tableau excel. Voici un exemple en pièce jointe.

Au lieu d'avoir tous les participants d'une même structure sur une meme ligne, je souhaite avec pour une même structure plus lignes pour les données des participants.

Merci pour vos réponses.

cordialement
vivi
 

Pièces jointes

Bonsoir

Alors, quelques explications
Dans A91, on a =SIERREUR(SI(NB.SI(A$90:A90;A90)<ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4);A90;INDEX(A$3:A$78;EQUIV(A90;A$3:A$78;0)+1));"")

Donc dans A91, NB.SI(A$90:A90;A90) compte le nombre de d'éts1 rencontrés depuis la ligne 90 (ce qui donne 1 bien sûr).
DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); ) donne la plage de A à V correspondant à l'éts1, donc A$3:V$3.
NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"") compte le nombre de cellules de cette ligne contenant du texte
NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1 pour éliminer la colonne A
(NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4 parce que tu as 4 colonnes par participant
ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4) par précaution, ENT donnant la partie entière du rapport dans les parenthèses.
Donc si NB.SI(A$90:A90;A90) est < ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4), c'est qu'on a pas encore écrit assez de ligne pour l'éts1, donc on écrit
SI(NB.SI(A$90:A90;A90)<ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4);A90
Sinon, on va chercher l'établissement suivant sur la liste avec INDEX(A$3:A$78;EQUIV(A90;A$3:A$78;0)+1), suivant à cause du +1.
Et le SIERREUR(.....;"") pour avoir des cellules vides en bas de la colonne A, lorsqu'on a écrit assez de ligne.

Dans B91, =SI(A90="";"";DECALER(B$2;EQUIV($A90;$A$3:$A$78;0);(NB.SI($A$90:$A90;$A90)-1)*4))
Avec DECALER, "On" se positionne dans B$2.
EQUIV($A90;$A$3:$A$78;0) va chercher la position de A90 dans la liste A3:A78, et Excel se décale à partir de B2 de autant de ligne. Pour Ets1, cela donne 1, donc "on" arrive dans B3.
(NB.SI($A$90:$A90;$A90)-1)*4 donne le nombre de colonnes du décalage à faire, 0 sur la première ligne de l'étsx (donc on obtient comme résultat le texte contenu dans B3), 4 sur la seconde (donc... le texte de la colonne F), 8 sur la troisième...

@ plus
 
Dernière édition:
Bonjour

J'espère que tu as compris mes explications 🙂.

A tout hasard, puisque la formule dans la colonne A compte les cellules contenant du texte, il faut que les 70, 100 etc qui sont dans ton tableau soient au format texte, comme c'est le cas actuellement (ils sont alignés automatiquement du coté gauche de la cellule, alors que les vrais nombres le sont du coté droit).
Si jamais certaines de ces valeurs étaient au format nombre, cela buguerait.
Pour voir cela, il suffit que tu changes le format d'une de ces valeurs, en le faisant passer au format nombre. Tu obtiendras dans le tableau du bas une ligne en moins pour cet établissement, ce qui ne convient pas.

@ plus
 
Dernière édition:
Bonjour à tous,

Merci à Cisco / Klin89 pour les formules et codes proposés.
C'est pratique et bien fonctionnel pour un tel cas.

Bonne journée


@klin89
Cela fonctionne bien avec une petite modification (sinon la ligne 2 est dupliquée dans la restitution).
Une proposition à sauvegarder pour ma part😉

ReDim b(1 To (UBound(a, 1) - 1) * (UBound(a, 2) - 1) / 4, 1 To 5)
For i = 3 To UBound(a, 1)
For j = 2 To UBound(a, 2) Step 4
 
- 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
14
Affichages
471
Retour