Bonjour à tous,
Une variante....à tester...
Option Explicit
Option Base 1
Sub tb_1colonne()
Dim lig&, col%, index&, dc%, dl&
Dim Tb, TbR()
With Sheets("Feuil1") '...............................................agit sur Feuil1
dc = .UsedRange.Columns.Count '....................................définit nombre de colonnes
dl = .UsedRange.Rows.Count '.......................................définit nombre de lignes
Tb = .Range(.Cells(1, 1), .Cells(dl, dc)) '........................définit tableau de données Tb
ReDim TbR(UBound(Tb) * dc) '......................................dimensionne le tableau temporaire TbR
index = 1
For col = 1 To dc '.............................................boucle de la 1ère à la dernière colonne du tableau Tb
For lig = 1 To UBound(Tb) '.....................................boucle de la 1ère à la dernière ligne du tableau TB
If Tb(lig, col) <> "" Then '...................................si la cellule est remplie
TbR(index) = Tb(lig, col) '..................................on stocke la valeur dans TbR
index = index + 1 '..........................................incrémente l'index
End If '.......................................................fin de la condition
Next lig '......................................................ligne suivante
Next col '.......................................................colonne suivante
.Cells.ClearContents '...............................................efface les données
.Columns(1).HorizontalAlignment = xlCenter '.........................texte centré
.Range("A1").Resize(UBound(TbR), 1) = Application.Transpose(TbR) '...écrit les données de TbR à partir de A1
End With
End Sub
CTRL + e pour exécuter la macro...
Cordialement,