Ranger par mois une liste de facture.

  • Initiateur de la discussion Initiateur de la discussion flamilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

flamilo

Guest
Bonjour,

J'ai une macro "actualiser" reliée à un bouton. J'aimerais rajouter à cette macro un rangement par mois des factures de cette forme là :

Septembre
10001...
10002...

Octobre
10003

Novembre
....

Il faudrait qu'entre chauque mois une ligne soit sautée, et que le nom du mois soit écris juste avant les factures.
Pouriez vous m'aider ? Je n'y connais rien en VBA et j'aimerais traduire cela en langage VBA et le greffer à ma macro "Actualiser".

Merci de voter aide !
 

Pièces jointes

Re : Ranger par mois une liste de facture.

Bonjour,
Quelle drôle d'idée !
ça me semble une très mauvaise idée. Tu as une bonne base de donnée : Inutile de la fusiller avec des lignes vides parasites.
Si tu as besoin de mettre en évidence certaines périodes, utilise les filtres...
A+
 
Re : Ranger par mois une liste de facture.

bonjour flamilo
tu peux l'appeler de sub Actualiser

Code:
Sub FactureParMois()
    Dim MonDico As Object, Item As Variant, DerL As Long, L As Long, Li As Long

    Set MonDico = CreateObject("Scripting.Dictionary")
    Application.ScreenUpdating = False

    With Sheets("Synthèse")
        DerL = .Range("B65535").End(xlUp).Row
        For L = DerL To 2 Step -1
            If .Range("B" & L) = "" Then
                .Rows(L).Delete
            End If
        Next

        For L = 2 To DerL
            If .Range("B" & L).Value <> "" And Not MonDico.Exists(Month(.Range("B" & L).Value)) Then MonDico.Add Month(.Range("B" & L).Value), Month(.Range("B" & L).Value)
        Next L

        .Range("B2:B" & DerL).NumberFormat = "mm"
        For Each Item In MonDico.items
            Set cel = .Range("B1:B" & .Range("B65535").End(xlUp).Row).Find(Item, LookIn:=xlValues)
            If Not cel Is Nothing Then
                Li = cel.Row
                .Rows(Li).Insert
                If Li = 2 Then
                    .Range("A" & Li & ":S" & Li).Interior.ColorIndex = xlNone
                    .Range("A" & Li).Font.Bold = False
                End If
                .Range("A" & Li).HorizontalAlignment = xlCenter
                .Range("A" & Li) = Format(Format(cel, "dd/mm/yyyy"), "mmmm")
            End If
        Next Item
        .Range("B2:B" & .Range("B65535").End(xlUp).Row).NumberFormat = "dd/mm/yyyy"
    End With
    Application.ScreenUpdating = True

End Sub
 
Re : Ranger par mois une liste de facture.

Merci pour vos réponses ! les filtres c'est vrai que c'est pas mal aussi, j'avais pas du tout pensé au tableau croisé dynamique.

Bebere par contre je comprend pas trop ce que je dois faire avec ce langage vba ?
 
Re : Ranger par mois une liste de facture.

j'ai essayé de recréer les boutons et d'y affecter les macro mais j'ai une erreur 429 et elle proviens apparemment de : Set MonDico = CreateObject("Scripting.Dictionary")
 
Re : Ranger par mois une liste de facture.

bonjour Flamilo
si tu as option explicit en début de feuille code il faut déclarer Cel as Range
ou que dit la ligne surlignée en jaune lors de l'erreur
dans ce code tu peux enlever .Range("B" & L).Value <> "" And
For L = 2 To DerL
If .Range("B" & L).Value <> "" And Not MonDico.Exists(Month(.Range("B" & L).Value)) Then MonDico.Add Month(.Range("B" & L).Value), Month(.Range("B" & L).Value)
Next L
 
Re : Ranger par mois une liste de facture.

Merci pour vos réponses ! les filtres c'est vrai que c'est pas mal aussi, j'avais pas du tout pensé au tableau croisé dynamique.

Bonjour

PLus que d'accord !
Pourquoi faire compliqué et surtout transformer un outil bien fait en un truc inmodifiable et inexploitable par la suite, avec perte de l'aspect dynamique des choses (mises à jour).
Un peu de lecture pour t'en convaincre :
Ce lien n'existe plus

Quand tu postes une question sur XLD, c'est vraiment une bonne idée d'indiquer dans ton profil et dans ta question quelle est la version d'excel que tu utilises. Ca aide le répondeurs à te proposer quelque chose d'adapté : dommage de te priver un outil dont tu disposes et à l'inverse te proposer une solution qui ne peut pas marcher chez toi n'est pas plus satisfaisant.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

G
Réponses
4
Affichages
1 K
gaelletreg
G
B
Réponses
4
Affichages
17 K
bansan
B
Retour