XL 2016 Conversion de colonne en lignes

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 !

GADENSEB

XLDnaute Impliqué
Bonjour,
j'aimerais, Pour l'onglet "Abonnements 2018" et pour chaque colonne C =OUI
Transformer la ligne concernée comme pour le modelé dans l'onglet "FINAL"

Sachant qu'il faut faire varier "Onglet FINAL" :
- La colonne A : 01/01/2018 puis 01/02/2018 ....... jusqu’à 01/12/2018
- La colonne B : 01/2018 puis 02/2018, calé sur la colonne A ....jusqu’à 12/2018

C'est deux dates correspondent aux colonnes de mois Janvier à Décembre dans l'onglet "Abonnements 2018"
Je sais pas si j'ai été suffisamment clair ...

Est-ce jouable ?

Bonne am
Seb
 

Pièces jointes

Hello
un essai par macro à mettre dans un module Standard
VB:
Sub Macro1()
'
' Macro1 Macro
'
Dim tablo() As Variant
'
    tablo = sheets("Abonnements 2018").Range("A1").CurrentRegion.Value
    With Sheets("Final")
        For i = LBound(tablo, 1) + 1 To UBound(tablo, 1)
            If UCase(tablo(i, 3)) = "OUI" Then
             For j = 13 To 24 'pour chaque mois
                 Fin = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                 .Range("A" & Fin) = DateSerial(2018, j - 12, 1) 'Date
                 .Range("B" & Fin) = tablo(i, 8)  'Libelle
                 .Range("C" & Fin) = tablo(i, 4)  'Debit
                 .Range("D" & Fin) = tablo(i, 11)  'Crédit
                 .Range("E" & Fin) = tablo(i, j)  'Montant
                 .Range("F" & Fin) = tablo(i, 6)  'Analytique
            Next j
           End If
        Next i
    End With
End Sub
 
Modif
VB:
Sub Macro1()
'
Application.ScreenUpdating = False
' Macro1 Macro
'
Dim tablo() As Variant
'
    tablo = Sheets("Abonnements 2018").Range("A1").CurrentRegion.Value
    With Sheets("Final")
        For i = LBound(tablo, 1) + 1 To UBound(tablo, 1)
            If UCase(tablo(i, 3)) = "OUI" Then
             For j = 13 To 24 'pour chaque mois
                 Fin = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                 .Range("A" & Fin) = DateSerial(2018, j - 12, 1) 'Date
                 .Range("B" & Fin) = tablo(i, 8)  'Libelle Colonne H
                 .Range("C" & Fin) = tablo(i, 3)  'Debit = Nv Cpt = ColonneC
                 .Range("D" & Fin) = tablo(i, 11)  'Crédit  =Cpte Abonnement =Colonne S ???
                 .Range("E" & Fin) = tablo(i, j)  'Montant
                 .Range("F" & Fin) = tablo(i, 6)  'Analytique = Colonne F
            Next j
           End If
        Next i
    End With
Application.ScreenUpdating = True
End Sub
 
s'il faut juste le remplacer
VB:
Sub Macro1()
'
Application.ScreenUpdating = False
' Macro1 Macro
'
Dim tablo() As Variant
'
    tablo = Sheets("Abonnements 2018").Range("A1").CurrentRegion.Value
    With Sheets("Final")
        For i = LBound(tablo, 1) + 1 To UBound(tablo, 1)
            If UCase(tablo(i, 3)) = "OUI" Then
             For j = 13 To 24 'pour chaque mois
                 Fin = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                 .Range("A" & Fin) = DateSerial(2018, j - 12, 1) 'Date
                 .Range("B" & Fin) = WorksheetFunction.Substitute(tablo(i, 8), "xx", Format(j - 12, "00")) 'Libelle Colonne H
                 .Range("C" & Fin) = tablo(i, 3)  'Debit = Nv Cpt = ColonneC
                 .Range("D" & Fin) = tablo(i, 11)  'Crédit  =Cpte Abonnement =Colonne S ???
                 .Range("E" & Fin) = tablo(i, j)  'Montant
                 .Range("F" & Fin) = tablo(i, 6)  'Analytique = Colonne F
            Next j
           End If
        Next i
    End With
Application.ScreenUpdating = True
End Sub
 
- 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
6
Affichages
1 K
Réponses
1
Affichages
1 K
Retour