Transférer des colonnes en ligne

lilou09200

XLDnaute Occasionnel
Bonjour,
J'ai un tableau sur lequel je souhaite transférer les données sur plusieurs lignes.
J'ai toujours un problème avec cela.
Pourriez-vous m'apporter votre aide ?
Je joins pour plus de compréhension un fichier.
Par avance merci.
 

Pièces jointes

  • Colonne en ligne.xlsx
    11.6 KB · Affichages: 51

Paf

XLDnaute Barbatruc
Re : Transférer des colonnes en ligne

Bonjour,

à adapter en fonction de la position des tableaux à transférer et transféré.

Code:
Sub SpecialTransfert()
 Dim MonTab, TabFin, i As Long, x As Long, j As Byte
 With Worksheets("Feuil1")
 MonTab = .Range("C10:J13")
 ReDim TabFin(1 To UBound(MonTab) * 4, 1 To 8)

 For i = LBound(MonTab) To UBound(MonTab)
    For j = 1 To 4
        x = x + 1
        TabFin(x, 1) = MonTab(i, 2)
        TabFin(x, 2) = MonTab(i, 1)
        If j = 1 Then
            TabFin(x, 3) = "C" & MonTab(i, 3)
            TabFin(x, 7) = MonTab(i, 8)
        Else
            TabFin(x, 3) = Cells(7 + j, 13)
            If j = 4 Then
                TabFin(x, 8) = MonTab(i, 3 + j)
            Else
                TabFin(x, 8) = MonTab(i, 2 + j)
            End If
        End If
        TabFin(x, 4) = MonTab(i, 3)
    Next
 Next
 .Range("O27").Resize(UBound(TabFin, 1), UBound(TabFin, 2)) = TabFin
 End With
End Sub

A+


Edit: Bonjour KLIN89
 
Dernière édition:

klin89

XLDnaute Accro
Re : Transférer des colonnes en ligne

Bonsoir le forum,
Salut Paf :)

Une autre solution :
VB:
Sub Transfert()
Dim a, b(), i As Long, n As Long, j As Byte
    With Sheets("Feuil1")
        With .Range("C9").CurrentRegion.Resize(, 11)
            a = Application.Index(.Value, Evaluate("row(1:" & _
                                                   .Rows.Count & ")"), Array(2, 1, 3, 8, 4, 5, 7, 10, 11))
        End With
        ReDim b(1 To 100, 1 To 8)
        For i = 2 To UBound(a, 1)
            For j = 4 To UBound(a, 2) - 2
                n = n + 1
                b(n, 1) = a(i, 1)
                b(n, 2) = a(i, 2)
                Select Case j
                    Case 4
                        b(n, 3) = "C" & a(i, 3)
                    Case 5
                        b(n, 3) = a(1, 9)
                    Case 6
                        b(n, 3) = a(2, 9)
                    Case 7
                        b(n, 3) = a(3, 9)
                End Select
                b(n, 4) = a(i, 3)
                b(n, 7) = IIf(j = 4, a(i, 4), "")
                b(n, 8) = IIf(j = 4, "", a(i, j))
            Next
        Next
        .Range("C28").Resize(n, UBound(b, 2)) = b
    End With
End Sub
klin89
 

lilou09200

XLDnaute Occasionnel
Re : Transférer des colonnes en ligne

Bonjour,
Je me permets de revenir vers vous afin de savoir s'il serait possible d'avoir des formules excel "classiques" pour ces reports de cellules afin que je puisse comprendre la démarche ?
Vous remerciant par avance.
 

lilou09200

XLDnaute Occasionnel
Re : Transférer des colonnes en ligne

Je ne pense pas car pour une même ligne il me faut la transposer en 4 lignes.
D'après votre message cela me mettrait les lignes en colonnes si je ne me trompe, non ?
Dites moi si je fais fausse route.
 

Modeste

XLDnaute Barbatruc
Re : Transférer des colonnes en ligne

Bonjour lilou09200,
Salut Paf :), klin89 :)
Bonjour noemie45,

Un essai avec la fonction DECALER en pièce jointe:
pour les colonnes X à AA, ainsi que AD, une formule par colonne, à recopier vers le bas
pour la colonne AE (et pour ne pas partir dans une solution échevelée compte-tenu de ce qu'il me reste comme cheveux!), sélectionner AE10:AE13 (une formule différente dans chaque cellule) et copier le bloc de 4 cellules vers le bas

... Le tout si j'ai bien compris et s'il y aura toujours des blocs de 4 lignes (pas plus, ni moins) sur toute la hauteur du tableau.
 

Pièces jointes

  • Décaler (lillou09200).xlsx
    13.4 KB · Affichages: 28

Modeste

XLDnaute Barbatruc
Re : Transférer des colonnes en ligne

sans faire de copier-coller
Euh ... un doute m'étreint: tu connais la poignée de recopie, tout de même? (ce petit carré noir à l'angle inférieur droit d'une sélection)
Comme dit plus tôt, sélectionne les 4 premières cellules de la colonne AE (enfin, les 4 qui contiennent les formules), pointe sur ce petit carré noir et, lorsqu'il prend la forme d'un '+' noir, enfonce le bouton gauche et descends aussi bas que tu le souhaites (il me semble que c'est tout de même mieux que des copier-coller successifs :confused:)
 

Discussions similaires

Réponses
4
Affichages
329