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

XL 2019 Transposer avec espace

Arnaud59000

XLDnaute Nouveau
Bonjour tout le monde,

Petite question du jour, je souhaiterai mettre en colonne des lignes avec un espace de 1 colonne entre chaque colonne.

J'ai bien essayé de me chercher ma solution ne fonctionne pas du tout :

VB:
Sub transposetest()

Dim i As Integer
Dim NL As Range

i = 1
NL = Range("A1:A100").Value

While i < NL

Range(1, (2 * i)).Value = Range(i, 1).Value
Range(1, (2 * i + 1)).Value = "PU"

i = i + 1



Wend

End Sub

Avec dans la colonne entre deux lignes transposée, l'inscription "PU"
En PJ un fichier test, merci d'avance
 

Pièces jointes

  • Classeur1.xlsm
    14.2 KB · Affichages: 6
Solution
Bonsoir à tous,

Un autre code (dans Module1). Cliquer sur le bouton Hop!
VB:
Sub transp()
Dim t, v, i&, n&
   t = Range("a12:a" & Cells(Rows.Count, "a").End(xlUp).Row)
   ReDim v(1 To 1, 1 To 2 * UBound(t)): n = 1
   For i = 1 To UBound(t): v(1, n) = t(i, 1): v(1, n + 1) = "PU": n = n + 2: Next
   With Range("C2")
      Range(.Cells(1, 1), .End(xlToRight)).ClearContents
      If UBound(v, 2) + .Column - 1 > Columns.Count Then
         MsgBox "Trop d'éléments pour la transposition en " & .Address(0, 0) & " => Echec !", vbCritical
      Else
         .Resize(UBound(v), UBound(v, 2)) = v
      End If
   End With
End Sub

Arnaud59000

XLDnaute Nouveau
J'ai réussi a transposer avec ce code :



Mais pas moyen d'insérer une colonne sur deux avec l'info souhaitée
 

Jacky67

XLDnaute Barbatruc
J'ai réussi a transposer avec ce code :




Mais pas moyen d'insérer une colonne sur deux avec l'info souhaitée
Bonjour,
Essaye comme ceci
Dans l'exemple les données à transposer commencent en A1

VB:
Sub transposetest()
Dim i&
    With Feuil1
         Application.ScreenUpdating = False
        .Range("a1:a" & .Cells(.Rows.Count, "A").End(xlUp).Row).Copy
        .[c2].PasteSpecial , Transpose:=True
        For i = .Cells("2", .Columns.Count).End(1).Column + 1 To 4 Step -1
            .Columns(i).Insert: .Cells(2, i) = "PU"
        Next
    End With
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Un autre code (dans Module1). Cliquer sur le bouton Hop!
VB:
Sub transp()
Dim t, v, i&, n&
   t = Range("a12:a" & Cells(Rows.Count, "a").End(xlUp).Row)
   ReDim v(1 To 1, 1 To 2 * UBound(t)): n = 1
   For i = 1 To UBound(t): v(1, n) = t(i, 1): v(1, n + 1) = "PU": n = n + 2: Next
   With Range("C2")
      Range(.Cells(1, 1), .End(xlToRight)).ClearContents
      If UBound(v, 2) + .Column - 1 > Columns.Count Then
         MsgBox "Trop d'éléments pour la transposition en " & .Address(0, 0) & " => Echec !", vbCritical
      Else
         .Resize(UBound(v), UBound(v, 2)) = v
      End If
   End With
End Sub
 

Pièces jointes

  • Arnaud59000- transposer- v1.xlsm
    85.9 KB · Affichages: 2
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…