Macro tri : ligne en-têtes se retrouve en bas

  • Initiateur de la discussion Initiateur de la discussion schdam
  • 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 !

schdam

XLDnaute Nouveau
Bonjour à tous,

Je rencontre actuellement un petit problème avec une macro.
Celle-ci à un moment donné fait un tri de mes données au moins une fois et refait un tri (retour au début de la macro) si l'utilisateur clique sur le bouton Non d'un MsgBox.
Lors du 1er tri je ne rencontre pas de problème mais lorsqu'un nouveau tri doit être fait, la ligne d'en-têtes (1ère ligne) se retrouve tout en bas (en dernière position).
Je n'ai rien trouvé à ce sujet dans le forum et sur le net.

Avez vous déjà rencontré ce problème ?

D'avance merci pour votre aide.

Voici le tri dans ma macro (Nb_lignes_extraction correspond au nombre total de ligne du fichier) :

Sheets("Extraction").Select
Range("A2:AL" & Nb_lignes_extraction).Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
 
Re : Macro tri : ligne en-têtes se retrouve en bas

Bonjour schdam
Essayez Header:=xlYes au lieu de Header:=xlNo.
Mais le problème est peut-être ailleurs : dans ce cas, il serait intéressant que nous vissions les données.​
ROGER2327
#3184
 
Re : Macro tri : ligne en-têtes se retrouve en bas

Bonsoir Schdam

J'ai constaté que lorsque sue Excel j'utilise la creation de macros et que je cherche à trier apres la premiere ligne pour concerver les titres, sur mon Excel , dans la macro, la formule Header m'inscrit autre chose que xlYes;
Je replace Header=xlYes et le tri devient correct.
Essais ceci pour voir si cela fonctionne.
le titre devrait rester en haut.

A+
Néné06
 
Re : Macro tri : ligne en-têtes se retrouve en bas

Je vous joint mon fichier avec la macro.
Pour que le tri se fasse une deuxième fois, vous devez cliquer sur les boutons suivants aux MsgBox et InputBox : Macro Audit = OUI, Date précédent audit = OK (01/01/2009), Nombre de gar = OK (5), Historique = OUI, Nombre de gar 2 = NON et c'est à ce moment que le tri se refait. Si vous cliquez sur OUI au dernier MsgBox vous arrivez à la fin de la macro.


Merci pour votre aide.
 

Pièces jointes

Dernière édition:
Re : Macro tri : ligne en-têtes se retrouve en bas

Re...
MERCI beaucoup.
En effet le problème vient du 2ème tri. J'ai mis Header:=xlYes sur les 2 tris et tout fonctionne parfaitement.

Encore merci.
Si vous faites cela, j'ai bien peur que votre première ligne de données (ligne 2) ne soit pas prise en compte par votre premier tri.
Pour ce premier tri, je mettrais plutôt Header:=xlNo comme je le disais dans mon message précédent.
Mais peut-être est-ce une illusion.​
ROGER2327
#3197
 
Re : Macro tri : ligne en-têtes se retrouve en bas

Re...
J'ai mis Header:=xlYes mais j'ai aussi changé la plage sélectionnée pour le tri. La sélection commence dès la 1ère ligne (A1:AL... au lieu de A2:AL...).
Dans ce cas, d'accord !
Mais les lecteurs de cette discussion, tout comme moi, ne peuvent deviner que vous ne parlez plus de la même procédure...​
ROGER2327
#3198
 
Re : Macro tri : ligne en-têtes se retrouve en bas

Bonjour,

Débutant en macro, un essai peut être comme ceci:

Code:
'Sélection de l'onglet Extraction et affectation des formules pour la sélection aléatoire des gar à auditer
Historique = vbNo
Selection_aleatoire:
Sheets("Extraction").Select
Range("A2:AL" & Nb_lignes_extraction).Select
    Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _
        , Order2:=xlAscending, [COLOR=red][B]Header:=xlGuess[/B][/COLOR], OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
Columns("AM:AQ").ClearContents
Range("AM1") = "NBDG"
Range("AN1") = "ALEA"
Range("AM2") = "=SUMIF(C:C,C2,AB:AB)"
Range("AN2") = "=IF(AND(AM2=1,AB2=1,C2<>C3,H2>DATE_PRECEDENT_AUDIT,LEFT(E2,1)<>""B"",F2<>""""),RAND(),1)"
Range("AM2:AN2").AutoFill Destination:=Range("AM2:AN" & Nb_lignes_extraction)
    Cells.Select
    Selection.Sort Key1:=Range("AN1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

En mettant Header:=xlGuess pour qu'Excel tente de déterminer l'en-tête.
 
- 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

Discussions similaires

Retour