Créer un nombre de ligne en fonction du nombre de valeur d'une autre ligne

Bonjour,

J'ai eu du mal à trouver le titre de ce sujet.

J'ai un tableau de suivi de facture avec une ligne par facture et plusieurs ventilations de montant dans différentes familles de dépense.
J'aimerais que sur le 2eme onglet, il y ai 1 ligne par montant de dépense. Exemple, si 1 facture à 3 ventilations de dépenses, sur le deuxième onglet il faudrait 3 lignes.

Vous trouverez ci joint un exemple.

Merci!

Bonjour,

L'onglet 2 aurait du être l'onglet de saisi ... c'est ainsi que devrait être saisi les opérations pour pouvoir les exploiter correctement ensuite.

La façon dont vous allez récupérer les infos, comme dans votre exemple actuel ; çà devient illisible :

Montant Facture Hors taxe 13175.6 pour du bois TTC à 440.33 ????

Bonjour,

une proposition power-query

Merci H2so4.

Je ne connais pas bien Power-Query et le problème c'est que ce sera un fichier qui sera distribué sur beaucoup de poste. Donc l'installation de ce pluggin (si j'ai bien compris) n'est pas envisageable.

Une solution en VBA serait préférable.

Merci beaucoup pour ta réponse rapide.

bonjour,

en vba

Sub aargh()
    Dim tr()
    t = Sheets("saisie").ListObjects("tableau1").Range 'on copie le tableau excel saisie dans un tableau vba nommé t
    ReDim tr(UBound(t) * 4, 1 To 7) 'on dimensionne un tableau resultat nommé tr
    tr(0, 1) = t(1, 1) 'on met les entêtes de colonnes en ligne 1
    tr(0, 2) = t(1, 2)
    tr(0, 3) = t(1, 3)
    tr(0, 4) = t(1, 4)
    tr(0, 5) = t(1, 5)
    tr(0, 6) = "Ventilation"
    tr(0, 7) = "Famille"
    For i = 2 To UBound(t) 'on traite les données du tableau saisie
        For j = 7 To 10 'on parcourt les 4 dernières colonnes
            If t(i, j) <> "" Then 'si non vide
                k = k + 1 'on ajoute une ligne
                tr(k, 1) = t(i, 1) 'avec les données nécessaires
                tr(k, 2) = t(i, 2)
                tr(k, 3) = t(i, 3)
                tr(k, 4) = t(i, 4)
                tr(k, 5) = t(i, 5)
                tr(k, 6) = t(i, j) 'le montant HT
                tr(k, 7) = t(1, j) 'la famille
            End If
        Next j
    Next i
'tableau resultat est prêt, on le copie dans la feuille export
    With Sheets("export")
        .Cells.Delete 'on vide la feuille
        .Range("A1").Resize(k, 7) = tr 'on copie le tableau resultat
        .ListObjects.Add(xlSrcRange, .Range("A1").Resize(k, 7), , xlYes).Name = "Tabresult" 'on transforme les données en tableau structuré
        .ListObjects("Tabresult").TableStyle = "TableStyleMedium2" 'on lui donne le style adéquat
    End With
End Sub

Bonjour H2so,

Désolé je n'ai pas testé ton code mais tu m'as convaincu sur l'utilisation de PowerQuery!!

C'est top merci beaucoup!!

H2So,

J'ai trouvé la limite du système. Dans le tableau de saisie les colonnes peuvent évoluée (nouvelles colonne ajoutée au besoin).

Cependant les colonnes feront toujours parties du tableau de saisie.

As tu une idée?

Rechercher des sujets similaires à "creer nombre ligne fonction valeur"