Pb sur les critères d'un tri

Salut,

J'ai un problème avec mes routines de tri

    With .Range(.Columns(vbColonne_Profil_Clé), .Columns(vbColonne_Profil_DateModif))
        .Sort Header:=xlYes, MatchCase:=False, _
        Key1:=.Columns(vbColonne_Profil_Nom), Order1:=xlAscending, _
        Key2:=.Columns(vbColonne_Profil_Prénom), Order2:=xlAscending, _
        Key3:=.Columns(vbColonne_Profil_DateModif), Order3:=xlDescending
    End With

Fonctionne,

    With .Range(.Columns(vbColonne_Profil_Clé), .Columns(vbColonne_Profil_DateModif))
        .Sort Header:=xlYes, MatchCase:=False, _
        Key1:=.Columns(vbColonne_Profil_Nom), Order1:=xlAscending, _
        Key2:=.Columns(vbColonne_Profil_Prénom), Order2:=xlAscending, _
        Key3:=.Columns(vbColonne_Profil_Trigramme), Order3:=xlAscending
    End With

fonctionne aussi, mais

    With .Range(.Columns(vbColonne_Profil_Clé), .Columns(vbColonne_Profil_DateModif))
        .Sort Header:=xlYes, MatchCase:=False, _
        Key1:=.Columns(vbColonne_Profil_Nom), Order1:=xlAscending, _
        Key2:=.Columns(vbColonne_Profil_Prénom), Order2:=xlAscending, _
        Key3:=.Columns(vbColonne_Profil_Trigramme), Order3:=xlAscending, _
        Key4:=.Columns(vbColonne_Profil_DateModif), Order4:=xlDescending
    End With

me renvoie une erreur d'exécution 1004.

Il y a une limitation du nombre de critères pour les tri ?

Manu

Bonjour, sur ma version 2013 plus que 4 en tout cas mais sur un 2007 ? je ne sais pas.

Le plus simple pour vous serez de commencer par essayer de le faire avec les options de tri habituelles pour voir si celà fonctionne.

(nota vous pouvez aussi utiliser l'enregistreur de macro pour faire manuellement le tri et verifier l'écriture utilisées pour 4 conditions)

Sans autres élément et sans fichier difficile d'apporter plus de solution.

Bonjour

De mémoire c'était 3 sur 2003 mais passé à 125 sur 2007

Je suis sous 2013

Manu

Quand j'enregistre la macro je peux bien faire le tri avec 4 critères...

Manu

Bon finalement je m'en suis sorti avec

With Logiciel.Sheets("Profils")
    .Sort.SortFields.Add Key:=.Columns(vbColonne_Profil_Nom), Order:=xlAscending
    .Sort.SortFields.Add Key:=.Columns(vbColonne_Profil_Prénom), Order:=xlAscending
    .Sort.SortFields.Add Key:=.Columns(vbColonne_Profil_Trigramme), Order:=xlAscending
    .Sort.SortFields.Add Key:=.Columns(vbColonne_Profil_DateModif), Order:=xlDescending
    .Sort.SetRange .Range(.Columns(vbColonne_Profil_Clé), .Columns(vbColonne_Profil_DateModif))
    .Sort.Header = xlYes
    .Sort.MatchCase = False
    .Sort.Apply
End With

Donc en gros il faut ajouter les critères si on en a plus de 3 au lieu de simplement les déclarer...

Manu

me doutais qu'il devait y avoir quelque chose de plus .. d'ou l'idée de l'enregistrement macro pour comparer.

RE

Je suis sous 2013

Manu

Alors met ton profil à jour STP

Xmenpl : D'après la page Microsoft qui va bien, on est effectivement limité à 3 critères en cas de déclaration : https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.sort. C'est abbérant...

Sinon fausse joie je m'en suis pas sorti en fait, le tri me corrompt le fichier. J'ai fait une version purgée du fichier (Cliquer sur Paramètres / Créer / modifier un type matériel, sélectionner un matériel et un constructeur, saisir un type au hasard et cliquer sur Créer le type matériel).

La procédure, qui comporte la sauvegarde du fichier, se passe normalement sans erreur, mais à la réouverture du fichier j'ai un message qui me dit qu'il est endommagé et qu'Excel peut tenter une réparation. Et la réparation c'est l'annulation du tri (qui est pourtant toujours là après la réparation).

Le tri est dans le UserForm Usf0005_TypeMatériels dans la procédure Enregistrer_Click

Si quelqu'un trouve ce qui cloche je prends.

Merci d'avance.

Manu

Rebonjour, je pense que la méthode de tri ne fonctionne pas parceque votre userform contient des listes et sélecteurs qui utilisent

ces même listes que vous voulez trier.

Le mieux serait d'organiser votre code pour que juste avant la fin :

-Unload me ' Pour fermer le formulaire.

- 'puis vos lignes de tris

-'puis un workbook save

-Enfin un userform show pour révouvrir le formulaire ( optionnel si vous souhaitez ? )

Pourtant non mon tri n'utilise que des constantes (variabile qui commence par " vb ") pour identifier les colonnes à prendre en compte dans le tri.

Manu

Rechercher des sujets similaires à "criteres tri"