Macro pour réorganiser fichier Excel

Bonjour à tous,

Je souhaiterai pouvoir modifier mon fichier Excel joint de l'onglet "données brutes" à l'onglet "données attendues" afin de ne pas retravailler les données à la main chaque mois.

J'imagine qu'une macro est le plus approprié pour y parvenir mais je ne maitrise pas assez le sujet.

Attention à la petite subtilité pour le code 2403 où il faut additionner les 2 totaux (j'ai surligné en jaune). C'est le seul code concerné.

Merci beaucoup pour vos retours,

Marine

Bonjour,

Voici un essai :

Cdlt,

bonjour,

La macro ne fonctionne pas j'ai le message suivant :

image

Merci,

Dans le code, j'ai passé vos noms de feuilles en dur. Il y a donc données brutes et données attendues.

Si ces feuilles sont renommées, ça ne peut pas marcher. Il faut donc adapter les noms des feuilles dans le code.

Cdlt,

Pourtant je n'ai pas renommé les feuilles j'ai simplement ouvert votre fichier et ça ne fonctionne pas ou alors je n'ai pas bien compris comment la faire fonctionner.

Donc vous avez testé sur mon fichier ? Vous l'avez ouvert, appuyé sur le bouton et vous avez obtenu ce message ? Bizarre car je l'ai testé et ça marche de mon côté.

Pouvez-vous me dire à quelle ligne se situe le bug (en ouvrant l'éditeur, elle sera surlignée en jaune) ?

Bonjour 3GB quand on récupère ton fichier certaines lettres de ton code ne sont pas retranscrites correctement. tu es sur Mac ?

exemple :

With Sheets("donnŽes attendues")

les e accents sont transformés en Z accent lol

Post le code complet il pourra toujours faire un copié coller pour remplacé celui avec les mauvais caractères.

Merci ! Bien joué

Et oui, je suis sur Mac ! Et en effet, ça coince avec les accents... Alala. Voici le code (édité) :

Option Base 1

Sub Reorganiser()

Dim NB%, i%, n%
Dim valeur$
Dim Export()

With Sheets("données brutes")
    NB = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 2 To NB
        valeur = .Cells(i, 1).Value
        If valeur Like "*|*" Then
            n = n + 1
            ReDim Preserve Export(2, n)
            Export(1, n) = Left(valeur, InStr(valeur, "|") - 2)
        End If
        If valeur Like "TOTAL*" Then
            Export(2, n) = Export(2, n) + CDbl(Replace(Replace(valeur, "TOTAL = ", ""), " € ", ""))
        End If
    Next i
End With

With Sheets("données attendues")
    If .ListObjects.Count = 0 Then
        .ListObjects.Add(Source:=.Range("A1:B2"), XlListObjectHasHeaders:=xlYes).Name = "Recap"
        .Range("Recap[#Headers]").Value = Array("Codes", "Montants")
    End If
    With Range("Recap")
        .Delete
        .Columns(2).NumberFormatLocal = "# ##0,00 €;[Rouge]- # ##0,00 €;"
        .Cells(1).Resize(UBound(Export, 2), 2) = Application.Transpose(Export)
    End With
End With

Call Trier

End Sub

'MACRO POUR TRIER LES CODES
Sub Trier()

With ActiveWorkbook.Worksheets("données attendues").ListObjects("Recap").Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("Recap[Codes]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End Sub

Morale de l'histoire (ou comment se dédouaner) : ne pas mettre de caractères accentués sur les noms de feuille ou les plages nommées.

c'est parfait merci beaucoup pour votre aide précieuse !

Je plussoie ! pas d'accent sur les noms d'onglet.

Rechercher des sujets similaires à "macro reorganiser fichier"