Transformer un tableau en une ligne

  • Initiateur de la discussion Initiateur de la discussion Gravier2009
  • Date de début Date de début

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 !

G

Gravier2009

Guest
Bonjour,
J'aimerai transformé un tableau en une seule colonne:
-soit en copiant chaque rangée en les recollant bout-à-bout transposées
-soit en prenant chaque cellule en lui assignant ça juste place dans la colonne.
J'ai essayé plusieurs solutions mais sans succès:

Sub CreerLaMatrice()
Dim CellCount As Long
Dim Col As Long
Dim row As Long
For row = 1 To 10
For Col = 1 To 5
Cells(row, Col) = Rnd
Next Col
Next row
End Sub

Par exemple:

Sub DuTableauALaColonne()
Dim CellCount As Long
Dim Col As Long
Dim row As Long
For row = 1 To 10
For Col = 1 To 5
For CellCount = 1 To 50
ActiveCell.Offset(CellCount, 8) = Cells(row, Col)
Next CellCount
Next Col
Next row
End Sub

Le problème est que ça ne copie colle que la dernière cellule en bas à droite.

ça vous dis quelque chose? Je viens de me mettre à VBA (C'était temps) et je comprends pas encore grand chose....

Merci d'avance!!

Gravier
 
Re : Transformer un tableau en une ligne

Bonsoir

Code à modifier
Au lieu de
Code:
For CellCount = 1 To 50
ActiveCell.Offset(CellCount, 8) = Cells(row, Col)
Next CellCount

écrire

Code:
ActiveCell.Offset(CellCount, 8) = Cells(row, Col)
 CellCount = CellCount + 1

Jp
 
Re : Transformer un tableau en une ligne

Bonjour Gravier2009, jp14 🙂,

une autre proposition, en utilisant Transpose:

Code:
Sub DuTableauALaColonne()
lig2 = 1
For lig = 1 To 10
Range("H" & lig2 & ":H" & lig2 + 4).Value = Application.Transpose(Range("A" & lig & ":E" & lig))
lig2 = lig2 + 5
Next
End Sub
 
Re : Transformer un tableau en une ligne

Merci beaucoup Jp et Skoobi!
C'est génial vos réponses, j'apprends plein de truc! En plus ça va dans les deux sens!
@skoobi: je connaissai pas le truc de faire "A"&i, excellent!
Merci mille fois et à tout bientôt,
Gravier
 
Re : Transformer un tableau en une ligne

Bonsoir à tous


Une autre façon de faire
Code:
Sub test1()
Application.ScreenUpdating = False
    With [A1]
        For i = 1 To .CurrentRegion.Rows.Count
       .Offset(i - 1).Resize(, .CurrentRegion.Columns.Count).Copy
        [H65536].End(xlUp)(2).PasteSpecial xlAll, , , True
        Next
        .Offset(, 7).Delete Shift:=xlUp
    End With
Application.CutCopyMode = False
[A1].Activate
Application.ScreenUpdating = True
End Sub
Une variation sur le code de Skoobi ( salute 😉)
Code:
Sub test2()
Dim x As Long
    With [A1]
        For i = 1 To .CurrentRegion.Rows.Count
        x = .CurrentRegion.Columns.Count
       [H65536].End(xlUp)(2).Resize(x) = Application.Transpose(.Offset(i - 1).Resize(, x).Value)
        Next
        .Offset(, 7).Delete Shift:=xlUp 'à améliorer !
    End With
End Sub
 
Re : Transformer un tableau en une ligne

Merci beaucoup JM!
Je vais m'amuser maintenant à réécrire tout ça pour m'entrainer avec des DoWhile, Do Until, For each etc...
Merci pour votre à tous!
Gravier
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
281
Réponses
5
Affichages
914
Réponses
4
Affichages
735
Réponses
5
Affichages
574
Réponses
10
Affichages
664
Retour