Développer plusieurs colonnes dans des lignes

Bonjour à tous,

Mon problème est peut-être simple, mais je ne parviens pas à trouver une solution...

Pour simplifier les choses, je joins un petit tableau à ce message.

En gros, dans un tableau de vente, j'ai une ligne par facture.

À chaque ligne (facture) sont associés un ou plusieurs encaissements saisis dans des colonnes prévues à cet effet.

Chaque encaissement est composé de 3 valeurs : Date / Moyen / Montant (Qui ne sont autres que les colonnes).

Cependant, étant donné qu'une facture peut endosser plusieurs encaissements, il m'est impossible d'avoir une liste claire de mes encaissements (Ne serait-ce que pour les filtrer/trier par date par exemple).

J'aurais aimé avoir une liste exhaustive de tous les encaissements dans un tableau où il n'y a qu'une seule colonne DATE, une seule colonne MOYEN et une seule colonne MONTANT (Cf. Feuille "Ce que je veux 1" dans le fichier ci-joint).

Si ce n'est pas possible, j'aurais simplement aimé avoir mes N° de factures copiés sur 5 lignes automatiquement (les uns à la suite des autres).

En gros que chaque ligne du fichier d’origine génère automatiquement 5 lignes dans le fichier cible (Cf. Feuille "Ce que je veux 2" dans le fichier ci-joint).

Ensuite je me débrouillerai facilement pour associer les informations nécessaires avec un système de RechercheV.

J'espère que ce ne seront pas non plus des questions trop sommaires pour vous, mais si quelqu'un a une solution, je lui serai très reconnaissant

Je vous remercie par avance pour votre aide et reste entièrement dispo pour toute info complémentaire.

Bonne soirée,

Romain H

Bonjour,

Sub lister()
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
lig = 4
ws2.Cells(lig, 2).CurrentRegion.Offset(2, 0).ClearContents
For i = 4 To ws1.Cells(Rows.Count, 2).End(xlUp).Row
    For j = 7 To 19 Step 3
        'If ws1.Cells(i, j) = "" Then Exit For
        ws2.Cells(lig, 2) = ws1.Cells(i, 2)
        ws2.Cells(lig, 3) = ws1.Cells(i, 3)
        ws2.Cells(lig, 4) = ws1.Cells(i, 4)
        ws2.Cells(lig, 5) = ws1.Cells(i, 5)
        ws2.Cells(lig, 7) = ws1.Cells(i, j)
        ws2.Cells(lig, 8) = ws1.Cells(i, j + 1)
        ws2.Cells(lig, 9) = ws1.Cells(i, j + 2)
        lig = lig + 1
    Next
Next
End Sub

si tu ne veux pas de lignes sans encaissements, alors supprime l’apostrophe devant If ws1.Cells(i, j) = "" Then Exit For

Merci beaucoup pour ton aide, mais je ne connais vraiment pas les macros..

J'espérais que ça puisse se faire sans macros, d'autant plus que le fichier concerné est sur Google Sheets.

Quelqu'un aurait une solution avec des formules/manipulations normales ?

C'est possible ! je regarde ...

Voici

J'ai aussi décoché l'option tout en haut de la copie d'écran

capture d ecran 456

C'est exactement ce que je cherchais, merci infiniment !!!

Je suis encore en train d'essayer de comprendre la logique de tes formules pour bien assimiler la méthode.

(Je n'aurais jamais pensé à faire ça comme ça)

Merci encore !

Pour mieux comprendre, décompose la formule de décaler pour voir le nombre de lignes et le nombre de colonnes décalées à partir de la référence. L'utilisation de mod permet notamment la boucle.

Du coup j'aurais une petite question supplémentaire

Est-ce qu'il y aurait moyen de ne pas afficher de ligne lorsqu'il n'y a pas d'encaissement ?

Par exemple, dans le fichier en exemple, il y a 15 colonnes prévues pour 5 encaissements par facture (ligne).

Si un client pait en 2 fois, est-ce qu'il y a moyen de n'afficher que 2 lignes ? (Si 3 paiement ==> 3 lignes)

En gros, l'idée est de faire disparaitre les lignes qui ne correspondent pas à un encaissement.

Je mets en PJ une photo de ce qu'on a maintenant (qui est déjà bien) et de ce qu'il faudrait avoir (idéalement)

ce qu on veut ce qu on a

La première solution serait de filtrer le résultat.

La deuxième solution avec formule est sans doute possible ... mais après y avoir réfléchi quelques minutes, je pense qu'elle sera trop complexe à mettre au point. Reste alors la macro sans l'apostrophe publiée ci-avant.

Rechercher des sujets similaires à "developper colonnes lignes"