Erreur compilation VBA 'trie chronologique'

rites

XLDnaute Junior
Bonjours tous le monde
J'ai voulu integrer un trie chronologique sur mon fichier en vba et je recoie une erreur de compilation j'ai essayer de trouver sur google mes la je m'arrache les cheveux
Y'aurait il queqlu'un qui pourrais m'eclairer?

Merci a vous tous
Cdt
 

Pièces jointes

  • garantiefacture1.xlsm
    20.1 KB · Affichages: 31

Dranreb

XLDnaute Barbatruc
Bonjour.
La méthode Sort de l'objet Range est une survivance des versions précédentes d'Excel, conservée par souci de compatibilité avec les classeurs existants, toujours appréciable pour sa simplicité. Malheureusement elle était limitée à 3 arguments de tri maxi. Il n'existe donc pas de paramètres nommés KeyX ni OrderX pour X>3. Seul l'objet Sort de la feuille permet de tels tris.
Par ailleurs il n'existe pas de plage nommée "infos" dans votre feuille. Ni de plage "Col…" d'ailleurs.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour rites, Dranreb ;),

Losqu'on utilise la syntaxe mazone.sort key1:= .... , le nombre de clefs de tri est limité à 3 clefs au maximum (key1:=, ..., key2:=, ..., key3:=, ...). Au delà, il faut employer une autre syntaxe.

Dans votre cas, vous désirez utiliser 9 clefs correspondant aux 9 colonnes de votre tableau. Diantre ! Est-ce bien utile ????

On utilise plusieurs clefs de tri pour distinguer les valeurs de clefs identiques. Pour les lignes de même clef1, on triera ces lignes au moyen de la clef2, puis pour les lignes de même clef1 et même clef2, on triera les lignes avec la clef3.

Bien souvent (pas toujours), trois clefs sont suffisantes pour atteindre le but recherché.

Dans votre cas, quel est le but ?

Je prends pour exemple :
  • tri par date d'achat de la plus ancienne à la plus récente
  • si même date d'achat, on trie par la date de fin de garantie
  • enfin si même date d'achat et de fin de garantie, on trie par appareil
Autre point :

Vous utilisez Key1:=Range("col1"). Je ne vois pas de nom col1 défini dans votre classeur !

Je vous propose la syntaxe suivante :
VB:
Public Sub Trier()
   With Sheets("calcul").Range("b2:j" & Cells(Rows.Count, "b").End(xlUp).Row)
      .Sort key1:=.Columns(1), order1:=xlAscending, _
            key2:=.Columns(6), order2:=xlAscending, _
            key3:=.Columns(3), order3:=xlAscending, _
            Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
      Application.Goto Sheets("calcul").Range("b1")
   End With
End Sub
 

Pièces jointes

  • rites- garantiefacture-v1.xlsm
    24.4 KB · Affichages: 28
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour,
Le classeur quelque peu modifié et le classement sur le nombre de jour restant à l'ouverture du classeur
-Colonne E supprimée
-Formule modifiée
-Les liens hypertexte (exemple à adapter en colonne i)

NB: Classement facilement modifiable par les filtres
 

Pièces jointes

  • garantiefacture.xlsm
    21.5 KB · Affichages: 32

rites

XLDnaute Junior
Hello
Merci beaucoup pour vos reponse
Donc en effet ce que je chercher a faire c'etait un trie par date du plus recent au plus ancien sans que ca chamboulle ma ligne d'ou la rasion d'avoir attribuer autant de colone
Grace a votre aide ca fonctionne tres bien (debutant sur vba ;-) )
Sinon je vois que pour le code de Mapomme ca trie du plus ancien au plus recent je cherche a faire l'inverse le plus recent toujour en tete d'affiche
Merci d'avance de vos reponse

CDT
 

rites

XLDnaute Junior
Probleme resolu il fallais que je change la macro par
xlDescending
Juste petite derniere question
pour la macro le 'With Sheets' et pour la feuille (calcul) peut ton y ajouter une seconde feuille? si oui comment
En fait j'aimerais que la macro s'execute pour une autre feuille avec exactement le meme tableau


CDt
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

'...) Juste petite derniere question
pour la macro le 'With Sheets' et pour la feuille (calcul) peut ton y ajouter une seconde feuille? si oui comment
En fait j'aimerais que la macro s'execute pour une autre feuille avec exactement le meme tableau

Il faut que le tableau soit au même endroit sur les deux feuilles (début du tableau en cellule B2).
Dans le code, on remplace With Sheets("calcul"). par With ActiveSheet.

 

Pièces jointes

  • rites- garantiefacture-v2.xlsm
    28.9 KB · Affichages: 28

Statistiques des forums

Discussions
312 169
Messages
2 085 928
Membres
103 045
dernier inscrit
AP78