XL 2016 réorganiser un tableau

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

  • test.xlsx
    23.3 KB · Affichages: 19

vivi21

XLDnaute Occasionnel
De nouveau une question car dans certains cas j'ai 3 participants et dans d'autres juste 1. comment éviter les lignes vides.
Voici mon exemple ci-joint.
Merci beaucoup de votre aide.
Bonne journée.
Vivi21
 

Pièces jointes

  • test2.xlsx
    10.3 KB · Affichages: 24

CISCO

XLDnaute Barbatruc
Bonjour
...
De nouveau une question car dans certains cas j'ai 3 participants et dans d'autres juste 1. comment éviter les lignes vides.
....
Vivi21

A voir la simplicité de ton premier fichier, je me disais bien qu'il ne devait pas être assez polyvalent pour représenter toutes les situations possibles...

Dans la pièce jointe, il y a trois formules principales :
* une dans A11,
* une autre dans A12, cette dernière pouvant être tirée vers le bas,
* et une dernière dans B11, que l'on peut copier-coller vers la droite et vers le bas.

@ plus

P.S : S'il manque une cellule à la fin des lignes (U3 vide par exemple), cela buguera. Si tu penses que cela peut être le cas, dis le moi, je modifierais les formules en conséquence.
 

Pièces jointes

  • test2.xlsx
    11.3 KB · Affichages: 30

CISCO

XLDnaute Barbatruc
Bonjour

Cela ne fonctionnait pas correctement parce que les cellules "vides" de ton tableau initial ne sont pas réellement vides. Donc le EQUIV("zz";...1) qui donne la position de la première colonne vide donnait toujours le n° de la colonne V, soit 22.

J'ai remplacé par un EQUIV("";...0) qui recherche la position de la première colonne contenant "" sur la ligne en cours.

@ plus

P.S : Attention, il ne faut surtout pas écrire quelque chose, même juste un "Entrer" dans ces cellules pseudovides, car sinon, la formule de la colonne A ne fonctionne plus.
 

Pièces jointes

  • test3.xlsx
    29.8 KB · Affichages: 22

CISCO

XLDnaute Barbatruc
Bonsoir

Voui, je n'avais pas fait attention. Dans B90, il faut dans la formule NB.SI($A$90:$A90;$A90) au lieu de NB.SI($A$12:$A90;$A90) puisque ton second tableau commence en ligne 90. Il faut ensuite tirer cette formule, une fois corrigée, vers la droite et vers le bas.

@ plus

P.S : Je t'expliquerai les formules un peu plus tard dans la soirée.
 

klin89

XLDnaute Accro
Bonsoir à tous, :)

A tester :
VB:
Option Explicit
Sub test()
Dim a, b(), i As Long, j As Long, n As Long
    'attention au nom de la feuille
    With Sheets("DATA_CONCAT").Range("a2").CurrentRegion
        a = .Value
        ReDim b(1 To (UBound(a, 1) - 1) * (UBound(a, 2) - 1) / 4, 1 To 5)
        For i = 2 To UBound(a, 1)
            For j = 2 To UBound(a, 2) Step 4
                If Trim(a(i, j)) <> "" Then
                    n = n + 1
                    b(n, 1) = a(i, 1)
                    b(n, 2) = a(i, j): b(n, 3) = a(i, j + 1)
                    b(n, 4) = a(i, j + 2): b(n, 5) = a(i, j + 3)
                End If
            Next
        Next
        With .Offset(.Rows.Count + 1)
            .CurrentRegion.ClearContents
            .Resize(1, 5).Value = [{"structure","participant","fonction","cout","AT"}]
            .Offset(1).Resize(n, 5).Value = b
        End With
    End With
End Sub
klin89
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir à tous, bonsoir klin89

Ce nouveau défaut vient indirectement du précédent. La dernière formule dans la colonne A, dans mon précédent fichier, va chercher la position du premier "" dans la ligne de l'établissement en cours. Et en fait, il y a deux problèmes :
1) Lorsque tu as 5 participants, la première cellule vide est dans la colonne V, mais ne contient pas de "" (Cette cellule est vraiment vide). La première formule que je t'avais donnée, en EQUIV("zz";....;1) fonctionne dans ce cas là. Il faudrait donc combiner mes deux précédentes propositions. C'est faisable, mais cela donne une formule à rallonge et, de plus, cela ne convient pas à cause du second problème...
2) Toutes les cellules "vides" de ton tableau initial ne contiennent pas la même chose. Pour preuve, écrit =CODE(F3) dans F1 et tire cette formule vers la droite. On devrait avoir le même résultat dans toutes les cellules, et ce n'est pas le cas à cause de N3. Autre exemple, écris = code(F6) et = code(R7). Là aussi on devrait avoir la même chose, et ce n'est pas le cas (ce qui fait que la ligne 100, correspondant à l'établissement 5, ne convient pas, à cause du contenu de R7).

Pour contourner cette difficulté, à la place d'aller chercher la position de la première cellule sur la ligne en cours contenant telle ou telle chose, je fais compter à la formule les cellules contenant du texte sur cette ligne avec NB.SI(..................;"><"&""). Et ça fonctionne, il me semble.

@ plus
 

Pièces jointes

  • test4.xlsx
    33.4 KB · Affichages: 18

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 800
Membres
102 980
dernier inscrit
brossadan