XL 2016 Conversion de colonne en lignes

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

  • TEST ABONNEMENTS.xlsx
    60.8 KB · Affichages: 22

vgendron

XLDnaute Barbatruc
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
 

vgendron

XLDnaute Barbatruc
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
 

vgendron

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 111
dernier inscrit
Eric68350