Microsoft 365 Transposer 1 ligne en plusieurs

raf26

XLDnaute Occasionnel
Bonjour le forum,

J'aurais besoin de votre aide pour une formule (ou une macro) pour transposer des données situées sur une seule ligne en plusieurs lignes, mais sans ligne vide si un produit est à 0.

Les montants de produits doivent être conservés avec sur la même colonne (ex Produit D colonne 4 sur la ligne originale, idem sur la ligne recopiée).


Ci-dessous le résultat attendu

Capture d’écran 2021-01-30 à 11.16.58.jpg


J'ai essayé avec SI, mais je bloque avec toutes les conditions.

J'espère avoir été assez claire.

Je vous joint un fichier test avec différents exemples de scénario.

Merci et bon week-end.
 

Pièces jointes

  • Classeur1.xlsx
    13.7 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Raf,
Un essai en PJ. Il suffit de modifier une valeur pour remettre le tableau à jour.
En l'état ne s'applique qu'à la zone rosée. A adapter suivant votre configuration réelle.
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B4:F4")) Is Nothing Then
        Dim N%, i%
        [B6:F9].ClearContents
        N = 6
        For i = 3 To 6
            If Cells(4, i) <> "" Then
                Cells(N, "B") = [B4]
                Cells(N, i) = Cells(4, i)
                N = N + 1
            End If
        Next i
    End If
End Sub
 

Pièces jointes

  • Classeur1 (48).xlsm
    20.6 KB · Affichages: 1

Staple1600

XLDnaute Barbatruc
Bonjour le fil, raf26

Un début de quelque chose
VB:
Sub Premisses()
Dim dl&, i&, x&, xx
dl = Cells(Rows.Count, 1).End(xlUp).Row
For i = dl To 2 Step -1
x = Application.CountA(Cells(i, 1).Offset(, 1).Resize(, 4)) - 1
xx = Cells(i, 1)
Cells(i, 1).Resize(x, 5).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(i, 1).Resize(x) = xx
xx = ""
Next
End Sub
Pour la suite, je pressens que d'autres viendront.
;)

EDITION 1 : Correction
D'autres sont déjà venus (Bonjour Sylvanu, M12)

EDITION 2 Bonjour pierrejean
 
Dernière édition:

raf26

XLDnaute Occasionnel
Bonjour à tous,

Merci pour votre aide, vos différents résultats me conviennent.

Vous êtes FORMIDABLES !!

J'ai adopté la solution de M12 (macro nommée que je déclenche quand j'ai besoin - cela me va parfaitement), mais j'aimerais ajouter une colonne avant le nom, celle de la date qui doit être également copiée comme celle du nom

Cela donnerait :

Capture d’écran 2021-01-30 à 13.40.30.jpg




Comment adapter la macro de M12 pour que la date soit également prise en compte sur chaque ligne et arriver au résultat ci-dessus.

Je suis un peu larguée dans les i, to, cells :rolleyes:

Voir exemple 4 de mon fichier joint

Merci
 

Pièces jointes

  • Classeur1.xlsx
    14.3 KB · Affichages: 1
Dernière édition:

Discussions similaires

Haut Bas