VBA : message d'erreur dans tri

Bonsoir à tous,

Dans le fichier joint, j'ai un problème quand je lance ma macro de tri via le bouton "Classement 1". J'ai une "Erreur d'exécution '1004'" avec le message "Cette opération requiert que les cellules fusionnées soient de taille identique".

https://www.excel-pratique.com/~files/doc2/LMIgiModele_Concours_Coinche_V3_forum.xls

Je ne vois aucun problème dans les tableaux ainsi que dans le code... Un spécialiste VBA peut-il me venir en aide ?

Merci d'avance.

Fabrice,

Bonsoir

Cela doit fonctionner:

Sub Tri_1()
'
' Tri_1 Macro
' Macro enregistrée le 29/09/2009 par Fabrice

Dim Plage As Range
Application.ScreenUpdating = False
Range("G7:K134").ClearContents
Range("A7").Select
    Do While ActiveCell <> ""
    ActiveCell.Offset.Range("a1:e1").Copy
    ActiveCell.Offset(0, 6).Range("a1").Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    ActiveCell.Offset(1, -6).Range("a1").Select
    Loop
DerLg = Range("k65536").End(xlUp).Row
    Set Plage = Range("g7:k" & DerLg)
Plage.Sort Key1:=Range("I7"), Order1:=xlDescending, Key2:=Range("J7") _
        , Order2:=xlDescending, Key3:=Range("K7"), Order3:=xlAscending

End Sub

Salut le forum

Fabrice, modifie ton code de tri de cette façon

Plage.Sort Key1:=Range("I7"), Order1:=xlDescending, Key2:=Range("J7") _
        , Order2:=xlDescending, Key3:=Range("K7"), Order3:=xlAscending, Header _
        :=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
        , DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
        xlSortNormal

Utilisation de Plage au-lieu de Selection et Header=xlNo au-lieu de xlGuess

Mytå

Bonjour à tous,

Je confirme, ce forum est tout bonnement GENIAL. Merci Bruno pour la simplification du code qui, je pense, doit améliorer la performance de la macro. Et merci Mytå pour la séquence de tri...

Mytå, si je peux me permettre, à quoi sert le "header: =xlGuess" et le "header: =xlNo" ?

Merci encore à tous les deux.

Amicalement.

Fabrice,

Bonjour Fabrice et à tous,

En règle générale, quand tu bute sur une définition de code, tu positionne le curseur sur

le mot et tu fais Touche F1,

dans ton cas çà donne:

xlGuess Excel détermine s'il existe un en-tête. S'il en existe un, il détermine sa position.

xlNo Valeur par défaut. La plage entière doit être triée.

xlYes La plage entière ne doit pas être triée.

autrement dit :

xlGuess (à éviter)

xlNo , plage sélectionnée sans ligne d'en-têtes (c'est ton cas)

xlYes , plage sélectionnée avec ligne d'en-têtes

Amicalement

Claude.

Bonjour à tous,

Merci Claude pour toutes ces précisions... J'étais passé par le mode "Enregistrement" pour le tri et je pensais, naïvement, que cela suffisait.

D'autre part, je ne sais pas ce qu'en pense les autres forumeurs mais je trouve l'aide d'excel compliquée et, souvent, je n'y retouve pas mes petits...

En tout ca, merci à tous pour votre aide.

Amicalement.

Fabrice,

Rechercher des sujets similaires à "vba message erreur tri"