Transformer une colonne en tableau

Bonjour à toutes et à tous,

je vous joins le fichier surlequel je travaille actuellement.

J'ai trouvé un post sur le forum qui permettait de faire ça mais mon problème est un peu différent :

J'ai une colonne de données que je dois transformer en tableau.

Cette colonne est compté d'une suite de cellule :

Numérique1

TexteA

TexteB

...

Numérique2

Le nombre de cellule de texte entre les celulles numériques varient.

Je dois donc renvoyer un tableau qui ressemblera à cela :

Numérique1, TexteA, TexteB...

Numérique2

La macro trouvée sur le forum fonctionnerait si j'arrivais à insérer une ligne avec un caractère donnée dans / ou ; après chaque valeur numérique.

Merci d'avance pour vos lumières, votre aide, votre sympathie...

46module-def.xlsx (44.41 Ko)

Bonjour,

Simplifie moi la vie, en nous donnant le post que tu as trouvé,

et ce que tu en as fait sur ton exemple

Merci

Bonjour Bernard,

j'ai trouve cela

https://forum.excel-pratique.com/excel/transformer-une-colonne-de-donnees-en-un-tableau-t87259.html

Malheureusement, pour l'instant je n'en ai rien fait.

La marco fonctionne avec un séparateur qui est le slash... ce qui n'est pas le cas dans mon format.

Merci

Bonjour,

Pourquoi toujours aller chercher des solutions compliquées au lieu de simplement réfléchir sur le comment passer de la situation de départ à celle qu'on veut de la façon la plus élémentaire...

On a des données en colonne, dont chaque fragment débutant par une valeur numérique doit constituer une ligne d'un nouveau tableau.

On compte le nombre d'éléments numérique : m. m=nombre de lignes du tableau résultant.

On compte le nombre d'éléments total : n. n/m=nombre moyen de colonnes pour accueillir les données dans le nouveau tableau.

On ne peut se contenter d'une moyenne... On fait donc : k=Int(n/m)*3 pour avoir une marge suffisante.

On peut donc dimensionner un tableau de résultats à m lignes et k colonnes.

Il ne reste plus qu'à défiler toutes les lignes de la colonne de départ pour servir le tableau en incrémentant des variables au fur et à mesure de la progression : valeur numérique, on ouvre une nouvelle ligne (on repart à la première colonne) ; valeur non numérique, on la place sur la ligne en cours dans la colonne suivante.

C'est tout bête, mais ça marche on ne peut mieux et vite. On ignore toujours trop souvent tout ce qu'on peut gagner en appréhendant un problème à résoudre en VBA avec les notions d'apprentissage de la Maternelle !

Un minimum de mise en forme et l'affaire est bouclée.

Sub ColVersTablo()
    Dim T(), m%, n%, i%, k%
    With Worksheets("Import")
        m = WorksheetFunction.Count(.Columns("A"))
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        k = Int(n / m) * 3
        ReDim T(1 To m, 1 To k): m = 0
        For i = 1 To n
            If .Cells(i, 1) <> "" And IsNumeric(.Cells(i, 1)) Then
                m = m + 1: k = 1: T(m, k) = .Cells(i, 1)
            Else
                k = k + 1: T(m, k) = IIf(.Cells(i, 1) <> "", .Cells(i, 1), "")
            End If
        Next i
    End With
    With Worksheets("Base W")
        .UsedRange.ClearContents
        .Range("A1").Resize(UBound(T, 1), UBound(T, 2)).Value = T
        For i = 1 To UBound(T, 2)
            If .Cells(.Rows.Count, i).End(xlUp).Row > 1 Then
                .Columns(i).AutoFit
            Else
                Exit For
            End If
        Next i
        .Activate
    End With
End Sub

Merci Beaucoup MFerrand...

Ca fonctionne... J'adore Excel, mais j'ai encore de grosses lacune en VBA....

En l'occurrence felicitation pour avoir poser le problème simplement et correctement !!

Encore un grand Merci !!

Rechercher des sujets similaires à "transformer colonne tableau"