Tri avec VBA et impression

bonsoir,

j'ai deux souci:

- le premier j'ai essayé de créer une macro par enregistrement pour trier des données (colonne A) par ordre croissant en étendant la sélection de tri aux autres colonnes mais j'ai un message d'erreur comme quoi toute les cellules doivent être identique et c'est le cas donc je vois pas pourquoi cela ne fonctionne pas?

- la deuxième question et de savoir s'il est possible d'imprimer en fin d'année en appuyant sur un bouton toute les lignes de chaque feuille qui sont marqués impayée car cette année j'ai du tout recopier à la main (opération un peu fastidieuse).

Je mets un extrait du fichier il manque juste les feuilles des 10 derniers mois

Merci pour vos réponse

Bonjour,

Voilà déjà un premier jet pour le tri de ton tableau par ordre croissant de la colonne A.

Pour la suite (impression), j'ai pas encore regarder, mais c'est possible.

Voili voulou.

bonsoir nnahoj,

Tout d'abord merci pour aide.

Je viens d'ouvrir ton fichier et j'ai un probléme quand je clic sur le bouton il y a un message d'erreur qui apparait et il surligne la 3eme lignes de la macro :" ActiveWorkbook.Worksheets("janvier").Sort.SortFields.Clear".

Est ce que cela ne viendrait pas de la version d'excel moi je suis sous 2003 et toi 2010 apparement?

Et je sais pas si tu as remarqué mais il y a une macro pour verrouiller les lignes en 2 fois:

  • une premiére partie en remplissant toutes les casses jusqu'au montant et
  • une deuxiéme fois en cochant le moyen de payement.
J'espére que cela ne géne pas pour le tri, ce qui pourrait expliquer pourquoi je ne pouvais pas faire la macro par enregistrement non?

encore merci lilou

Bonjour à tous,

Pour le 2ème point

Sub ImpayéFinAnnée()
Dim Lg&, Lg2&, i%, Atraiter
        Application.ScreenUpdating = False
        Application.EnableEvents = False

    '--- feuilles à traiter ---
    Atraiter = Array("janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", _
    "aout", "septembre", "octobre", "novembre", "decembre")
    '---
    With Sheets("Impayés")
                Lg = .Range("a" & Rows.Count).End(xlUp).Row + 2
                .Rows("4:" & Lg).Delete
        For i = 1 To Worksheets.Count
          If Not IsError(Application.Match(Worksheets(i).Name, Atraiter, 0)) Then

            With Worksheets(i)
                .Unprotect ' Password:="dudu"
                '--- filtre ---
                .Range("o2") = "=j4=""Impaye""" 'critère filtre
                .Range("a3:j" & .[a65000].End(xlUp).Row) _
                .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
                .Range("o1:o2"), CopyToRange:=Sheets("Impayés").Range("L3:u3"), Unique:=False
                .Range("o2").ClearContents
                .Protect ' Password:="dudu"
            End With
                Lg = .Range("L" & Rows.Count).End(xlUp).Row + 1
                Lg2 = Application.Max(4, .Range("a" & Rows.Count).End(xlUp).Row + 1)
                With .Range("a" & Lg2)
                    .Value = Sheets(i).Name
                    .Resize(1, 10).Interior.ColorIndex = 8 'turquoise
                End With
                .Range("L4:u" & Lg).Cut Destination:=.Range("a" & Lg2 + 1)
          End If
        Next i
    End With
        Application.EnableEvents = True
End Sub

Amicalement

Claude

Bonsoir,

Merci beaucoup pour ton aide si j'avais su demander plus tôt je n'aurai pas galéré autant cette année....la fin d'année 2012 s'annonce d'ors et déjà moins dure! Un grand merci pour vos conseils et astuces !!!

Et personne ne saurait pourquoi la macro de nnahoj beug ???

Bonsoir

lilou19 a écrit :

Et personne ne saurait pourquoi la macro de nnahoj beug ???

Il emploie des instructions 2007 pour ton excel 2003

bon je vais regarder pour le transformer en 2003 alors merci

Bonsoir à tous,

dans cette version, le tri est incorporé dans la macro

Sub ImpayéFinAnnée()
Dim Lg&, Lg2&, i%, Atraiter
        Application.ScreenUpdating = False
        Application.EnableEvents = False

    '--- feuilles à traiter ---
    Atraiter = Array("janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", _
    "aout", "septembre", "octobre", "novembre", "decembre")
    '---
    With Sheets("Impayés")
                Lg = .Range("a" & Rows.Count).End(xlUp).Row + 2
                .Rows("4:" & Lg).Delete
        For i = 1 To Worksheets.Count
          If Not IsError(Application.Match(Worksheets(i).Name, Atraiter, 0)) Then

            With Worksheets(i)
                .Unprotect ' Password:="dudu"

                '--- tri1 ---
                .Range("a5:j56").Sort _
                    Key1:=.Range("a5"), Order1:=xlAscending, _
                Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
                '--- tri2 ---
                .Range("a60:j111").Sort _
                    Key1:=.Range("a60"), Order1:=xlAscending, _
                Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

                '--- filtre ---
                .Range("o2") = "=j4=""Impaye""" 'critère filtre
                .Range("a3:j" & .[a65000].End(xlUp).Row) _
                .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
                .Range("o1:o2"), CopyToRange:=Sheets("Impayés").Range("L3:u3"), Unique:=False
                .Range("o2").ClearContents
                .Protect ' Password:="dudu"
            End With
                Lg = .Range("L" & Rows.Count).End(xlUp).Row + 1
                Lg2 = Application.Max(4, .Range("a" & Rows.Count).End(xlUp).Row + 1)
                With .Range("a" & Lg2)
                    .Value = Sheets(i).Name
                    .Resize(1, 10).Interior.ColorIndex = 8 'turquoise
                End With
                .Range("L4:u" & Lg).Cut Destination:=.Range("a" & Lg2 + 1)
          End If
        Next i
    End With
        Application.EnableEvents = True
End Sub

édit 20h40: fichier et macro modifiés

Amicalement

Claude

merci beaucoup, cela marche impeccable, reste à mettre les autres feuilles et tout serra fini.

Encore merci beaucoup à tous!!!!!

Rechercher des sujets similaires à "tri vba impression"