Excel ou VBA? Mettre en forme un fichier pour l'analyser

Bonjour à tous

Je sollicite votre aide pour un problème que je rencontre tous les mois au travail
Je reçois un fichier de la compta, qui a toujours le même format, que je ne parviens pas du tout à exploiter

J'aurais aimé à minima pouvoir faire des TCD pour y voir clair

Pour cela, je suis obligée de retraiter le fichier de la façon suivante :

- je crée 2 colonnes en début de fichier

- dans ma nouvelle colonne A, je recopie le compte comptable sur chaque ligne concernée (en jaune dans mon fichier)

- dans ma nouvelle colonne B, je recopie le nom du compte sur chaque ligne concernée (en violet)
- je supprime le total du compte (ligne en rouge)
- je supprime la ligne qui contenait les cellules jaunes et violettes (dans mon fichier : 14; 91; 100...)

Et j'obtiens ainsi une base, que je peux analyser grâce à un TCD par exemple

Mais le fichier que je joins n'est qu'une petite partie, je ne peux pas faire la manip pendant des heures tous les mois...
Précision : les lignes entre les comptes comptables se remplissent au fur et à mesure des mois. Cela signifie par exemple que la ligne 100 ne contiendra pas forcément toujours le titre "604900", "analyse essais"

J'espère avoir été claire, et surtout qu'une solution est possible pour automatiser
PS : mon niveau sur excel est d'environ 5/20 et VBA : 0/20

Un grand merci pour votre aide
Très bonne journée à tous
Nath

19grand-livre.zip (158.97 Ko)

Bonjour,

lance cette macro (Alt+F8)

Sub transformer()
Dim source As Worksheet
Dim destination As Worksheet

Set source = Sheets("ce que j'ai")
Set destination = Sheets("donnees")

With destination.ListObjects(1)
    If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete

    For i = 1 To source.Cells(Rows.Count, 1).End(xlUp).Row
        If source.Cells(i, 1) = "" And source.Cells(i, 2) <> "" And source.Cells(i, 4) <> "" Then
            Data1 = source.Cells(i, 2)
            Data2 = source.Cells(i, 4)
        ElseIf source.Cells(i, 1) <> "" And source.Cells(i, 2) <> "" And Data1 <> "" And Data2 <> "" Then
            .ListRows.Add
            j = .ListRows.Count
            With .DataBodyRange
                .Cells(j, 1) = Data1
                .Cells(j, 2) = Data2
                source.Range("A" & i & ":R" & i).Copy destination:=.Cells(j, 3)
            End With
        End If
    Next
End With
End Sub
25grand-livre.zip (168.27 Ko)

Bonjour
C'est vraiment extra pour moi, un milliard de fois merci

Très bonne journée

Nathalie

J'en suis très content ! C'est vraiment le genre de choses où avec une macro simple on peut gagner un temps fou. D'autant que les éditeurs de logiciels n'ont jamais compris le besoin des utilisateurs et pensent sortir des états numériques pertinents ... pas du tout car ils oublient l'analyse qu'on en fait.

Rechercher des sujets similaires à "vba mettre forme fichier analyser"