Transformer un tableau à 2 variables en liste détaillée

Bonjour à tous,

Je cherche à créer une macro qui me permettrait de créer une liste (toute simple, directement sur le worksheet) à partir d'un tableau.

Je m'explique, dans mon tableau, j'ai par exemple le Magasin A associé avec le nombre 2, j'aimerai donc que sur ma colonne G je retrouve sur 2 lignes de suite le Magasin A. Puis faire pareil avec le Magasin B qui se détaille sur la colonne G à la suite de Magasin A, ect.

Sur le fichier joint, vous pouvez voir le résultat que j'essaye d'obtenir, et également la méthode que j'ai utilisée pour atteindre mon résultat, mais c'est très peu flexible et ma formule est limitée en caractère.

Je suppose qu'une macro est largement envisageable et faisable, mais mon niveau est inexistant.
Je vous remercie par avance pour l'aide que vous pourrez bien me fournir, Nathan.

Bonjour NathanExcelPratique,

Voici un essai en passant par une fonction pour transformer le tableau à 2 colonnes en un tableau à une colonne qui redouble les valeurs en fonction du nombre d'occurrences mentionné en colonne 2 du tableau de départ :

sub test()
'début code
t = Verticaliser(mavariabletableau)
range("G2").resize(ubound(t)) = application.transpose(t)
end sub

function Verticaliser(t)
t = application.transpose(application.transpose(t))
dim temp()
for i = lbound(t) to ubound(t)
    for k = 1 to t(i, 2)
        n = n + 1: redim preserve temp(1 to n)
        temp(n) = t(i, 1)
    next k
next i
Verticaliser = temp
end function

Cdlt,

Bonjour,

Dans une autre logique :

Sub créer_Liste()
A = Range("A1", [A1].End(xlDown)).Rows.Count
Compteur = 2

For X = 2 To A
Magasin = Range("B" & X)
Nombre = Range("C" & X)
Ville = Range("D" & X)

    For Y = 1 To Nombre
        Range("G" & Compteur) = Magasin
        Range("H" & Compteur) = Nombre
        Range("I" & Compteur) = Ville
        Compteur = Compteur + 1
    Next

Next

End Sub

Bonjour 3GB, je vous remercie pour votre réponse.

Cependant, je subis une erreur lors de for "i = lbound(t) to ubound(t)", je pense m'amuser à comprendre votre raisonnement et les fonctions que vous avez utilisés, pour à terme pouvoir réaliser ce genre d'exercices seul, et réussir à corriger cette erreur :)

Bonjour ouisansdoute, merci beaucoup.

Votre programme marche, c'est génial. Cependant, lorsque la macro se termine, j'ai le message d'erreur "Erreur d'exécution '13': Incompatibilité de type".

Le debogage m'indique qu'il s'agit de la ligne "For y = 1 To Nombre".

Auriez-vous une idée de solution ? J'ai regardé sur des aides et j'ai cru comprendre que c'était un problème de définition de variables, j'ai donc essayé de tout déclarer en Variant ou en Integer, mais ça ne résout pas ce petit problème.

De plus, j'ai essayé de rajouter une condition pour afficher ma liste, Elle marche pour la 1ere ligne de mon tableau mais ne passe plus à la ligne suivante

Sub créer_Liste()
A = Range("A1", [A1].End(xlDown)).Rows.Count
Compteur = 2

Dim x As Integer
Dim y As Integer

For x = 2 To A
Code = Range("A" & x)
Ville = Range("B" & x)
Nombre = Range("C" & x)
Quoi = Range("D" & x)

    For y = 1 To Nombre
        If IsEmpty(Code) = False Or IsEmpty(Ville) = False Or IsEmpty(Nombre) = False Or IsEmpty(Quoi) = False Then
            Range("G" & Compteur) = Ville
            Range("H" & Compteur) = Code
            Range("I" & Compteur) = Quoi
            Compteur = Compteur + 1
        Else: Compteur = Compteur + 1
        End If
    Next

Next

End Sub

Bonjour à tous,

Je pense que c'est parce que la variable mavariabletableau est vide dans le code. Vous êtes censé l'alimenter en amont pour utiliser mon code et ce tableau est censé contenir les magasins en colonne 1 et le nombre d'occurrences en colonne 2.

Cdlt,

Rechercher des sujets similaires à "transformer tableau variables liste detaillee"