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.
encore merci lilou
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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 SubAmicalement
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
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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!!!!!