Maîtriser les sauts de page par macro ?

Bonsoir le forum !

Voilà mon soucis : pour tenir à jour le compte des licenciés de mon club de VTT, j'utilise un tableau de ce style :

https://www.excel-pratique.com/~files/doc/Licences.xls

J'ai fais 2 petites macros pour pouvoir le classer soit par ordre alphabétique des noms, soit par catégories (boutons cachés sur les titres de colonnes).

Ce que j'aimerais, c'est que classé par nom, il n'y ait pas de saut de pages (~17 membres par page).

Par contre quand je fais un tri par catégorie, je voudrais un saut de page à chaque nouvelle catégorie.

Et bien sûr pouvoir jongler de l'un à l'autre...

Je pense que c'est faisable par macro, mais de là à m'en sortir tout seul...

Merci de votre aide !

Bonsoir,

j'ai eu un petit souci dans le tri, ton tableau étant sous forme de liste...

Je l'ai donc converti en plage (Données/Listes/Convertir en Plage)

Ensuite, essaie ce code

J'ai rajouté en début de code la manière de trier automatiquement par catégorie, pour plus d'informations sur le code, va voir dans Cours - Astuces, j'ai déposé un fichier avec les explications

Sub Tri_categories()
Dim cel As Range
Dim Num_List As Byte
On Error Resume Next
Num_List = Application.GetCustomListNum(Array("Benjamin", "Minime", "Cadet", "Junior", "Sénior A", _
                                        "Sénior B", "Vétéran A", "Vétéran B", "Féminine A", "Féminine B"))
If Num_List = 0 Then
Application.AddCustomList ListArray:=Array("Benjamin", "Minime", "Cadet", "Junior", "Sénior A", _
                                        "Sénior B", "Vétéran A", "Vétéran B", "Féminine A", "Féminine B")
Num_List = Application.CustomListCount
End If
Range("A1:J" & [A65000].End(xlUp).Row).Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range( _
        "A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=Num_List + 1
For Each cel In Range("D2:D" & [D65000].End(xlUp).Row)
    If cel.Offset(1, 0) <> cel Then
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=cel.Offset(1, 0)
    End If
Next cel
End Sub

Sub Tri_noms()
Range("A1:J" & [A65000].End(xlUp).Row).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _
        "B2"), Order2:=xlAscending, Header:=xlGuess
ActiveSheet.ResetAllPageBreaks
End Sub
felix a écrit :

j'ai eu un petit souci dans le tri, ton tableau étant sous forme de liste...

Je l'ai donc converti en plage (Données/Listes/Convertir en Plage)

Je comprends pas d'où ça vient...

Je pense que j'avais fait des essais d'enregistrement de macros sous 2007, mais ça marchait pas en 2003. Comme l'ordinateur de mon club est en 2003 j'ai travaillé dessus, et je me suis pas aperçu qu'il y restait des vestiges... Effectivement en l'ouvrant sous 2007 c'est différent, y'a un coloriage des lignes...

Enfin voilà j'ai fait ce que tu as dit, ça marche vraiment nickel ! Et en plus je comprends le code, même s'il y a encore beaucoup beaucoup de boulot pour en pondre un comme ça par moi-même...

Un grand merci donc, surtout que maintenant les tris marchent sous les 2 versions, alors que moi je faisais soit l'une soit l'autre...

Encore merci et bravo !

Sylvain, content !

Rechercher des sujets similaires à "maitriser sauts page macro"