Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…