Message d'erreur suite à une fonction .sort

Bonjour,

J'ai dans mon classeur une macro servant, entre autres, à classer un tableau selon 2 colonnes. L'une les jours, l'autre les heures.

Cette macro fonctionne parfaitement bien, mais à chaque fois que j'ouvre ce classeur, Excel me met ce message d'erreur :

Enregistrements supprimés: Tri dans la partie /xl/worksheets/sheet2.xml

Ensuite il me demande d'enregistrer le fichier sous un nouveau nom.

Le code est le suivant :

    With Sheets("sheet1").Sort
     .SortFields.Add Key:=Range("E5"), Order:=xlDescending
     .SortFields.Add Key:=Range("F5"), Order:=xlDescending
     .SetRange TableSize
     .Header = xlYes
     .Apply
    End With
    

Sauriez-vous m'aider ?

Merci d'avance,

Eldervand

Bonjour,

Sans voir le fichier, ça va être moins simple, mais déjà, vu que tu prends en référence la sheets("sheet1"), pense à y référencer les Range : (en ajoutant un . devant)

 With Sheets("sheet1").Sort
     .SortFields.Add Key:=.Range("E5"), Order:=xlDescending
     .SortFields.Add Key:=.Range("F5"), Order:=xlDescending
     .SetRange TableSize
     .Header = xlYes
     .Apply
    End With

Merci pour ta réponse,

Malheureusement, ajouter ces points provoque l'apparition d'un message d'erreur lors de l'exécution de la macro. Ce dernier est :

Erreur d'exécution 438, propriété ou méthode non gérée par cet objet.

Bonjour Eldervand

Quelque chose que je ne comprend pas

J'ai dans mon classeur une macro servant, entre autres, à classer un tableau selon 2 colonnes. L'une les jours, l'autre les heures.

Puis vous nous dites

Cette macro fonctionne parfaitement bien, mais à chaque fois que j'ouvre ce classeur, Word me met ce message d'erreur :

Pourquoi nous parlez-vous de Word !?

A+

Oups, simple erreur de ma part !

Je voulais parler d"Excel, pardon.

Re,

Ah ok, le message d'erreur n'a rien à voir avec ce code

@cousinhub, erreur sur le code donné car

Key:=.Range("E5")

Fait alors référence à l'objet "Sort" ce qui donne le 2ème message d'erreur

@Eldervand, sous quelle extension est enregistré le fichier ?

A+

Le fichier est enregistré en .xlsm

Re,

Est-ce que nous pourrions avoir le fichier ou au moins le code complet

A+

Hi,

@cousinhub, erreur sur le code donné car

Key:=.Range("E5")

Fait alors référence à l'objet "Sort" ce qui donne le 2ème message d'erreur

Je fatigue, je fatigue, vivement la sieste...

Malheureusement je ne peux pas transférer le fichier car il contient des données confidentielles. Si le code ne suffit pas, je créerai un fichier similaire afin d'essayer de reproduire le bug.

Le code du bouton de ma macro est le suivant :

Sub Insérer()

'Création d'une variable correspondant au chiffre de la dernière ligne du tableau.

    Dim NewCell As Long
    NewCell = Sheets("sheet1").Range("E" & Rows.Count).End(xlUp).Row

'Définir que si la cellule est déjà utilisée, la valeur NewCell
'augmente de 1. Comme il s'agit d'un numéro de ligne, cela permettra de sélectionner
'la première cellule vide. En revanche, si aucune date n'a été entrée dans la dernière ligne du tableau,
'cela remplacera ses données par les valeurs entrées ici dans ce formulaire. Attention donc aux erreurs

    If Not Sheets("sheet1").Range("E" & NewCell) = "" Then
        NewCell = NewCell + 1
    End If

'Transfert des valeurs du formulaire jusqu'au tableau

    With Sheets("sheet1")

        .Range("C" & NewCell).Value = Sheets("sheet2").Range("J11").Value
        .Range("D" & NewCell).Value = Sheets("sheet2").Range("J14").Value
        .Range("F" & NewCell).Value = Sheets("sheet2").Range("J17").Value
        .Range("E" & NewCell).Value = Sheets("sheet2").Range("J20").Value

    End With

'Suppression des valeurs entrées dans le formulaire

    With Sheets("sheet2")

        .Range("J11,J14,J17,J20").ClearContents
        .Range("J20").Value = "=TODAY()"

    End With

'Création d'une variable correspondant aux dimensions du tableau afin de pouvoir le trier dans l'ordre chronologique inverse.

    Dim TableSize As Range
    Set TableSize = Sheets("sheet1").Range("C5:F" & NewCell)

'Tri du tableau

    With Sheets("sheet1").Sort
     .SortFields.Add Key:=.Range("E5"), Order:=xlDescending
     .SortFields.Add Key:=.Range("F5"), Order:=xlDescending
     .SetRange TableSize
     .Header = xlYes
     .Apply
    End With

'Message afin d'annoncer que la saisie a bien été validée

    MsgBox "Saisie validée !"

End sub 

Merci d'avance pour votre aide ! :)

Bonsoir,

Vous n'avez pas fait la modification du code donné par cousinhub mais qui était erroné

Pour être plus explicite, il faut enlever le point devant le Range() après le égal

Il faut remplacer

'Tri du tableau
  With Sheets("sheet1").Sort
    .SortFields.Add Key:=.Range("E5"), Order:=xlDescending
    .SortFields.Add Key:=.Range("F5"), Order:=xlDescending
    .SetRange TableSize
    .Header = xlYes
    .Apply
  End With

Par

  'Tri du tableau
  With Sheets("sheet1").Sort
    .SortFields.Add Key:=Range("E5"), Order:=xlDescending
    .SortFields.Add Key:=Range("F5"), Order:=xlDescending
    .SetRange TableSize
    .Header = xlYes
    .Apply
  End With

A+

Bonjour à tous !

N'étant pas un expert avec le VBA il ne faudrait pas ajouter le numéro de la clé ?

With Sheets("sheet1").Sort
    .SortFields.Add Key1:=Range("E5"), Order:=xlDescending
    .SortFields.Add Key2:=Range("F5"), Order:=xlDescending
    .SetRange TableSize
    .Header = xlYes
    .Apply
  End With

Je ne sais pas ???

Bonsoir Nordik_Nation

Allez ccomme ça à la "one again"

Non comme tu peux le voir, le site ne met pas l'instruction dans la bonne couleur et VBA n'aime pas 😉

Bonne soirée

Bonjour,

J'ai dans mon classeur une macro servant, entre autres, à classer un tableau selon 2 colonnes. L'une les jours, l'autre les heures.

Cette macro fonctionne parfaitement bien, mais à chaque fois que j'ouvre ce classeur, Excel me met ce message d'erreur :

Enregistrements supprimés: Tri dans la partie /xl/worksheets/sheet2.xml

En relisant l'énoncé original, je pense que la macro n'y est pour rien...

Aucune raison qu'elle provoque quoi que ce soit au niveau de la structure du fichier

Tu peux faire cette manip', pour voir?

- Lancer Excel tout seul
- Fichier/Ouvrir
- Aller chercher le fichier dans son répertoire, en cliquant sur "Parcourir" (important, ne pas ouvrir un fichier épinglé..)

image

- Sélectionner le fichier, puis cliquer sur "Ouvrir/Ouvrir et réparer"

image

Pour voir si le fichier n'est pas corrompu

Bonne journée

Bonjour à tous !
Merci pour votre aide,

@BrunoM45
Effectivement je n'avais pas recorrigé, merci !

@cousinhub

Je pense que c'est lié à la macro. J'ai effectué toutes les étapes que tu as décrites, et effectivement, ça a marché initialement et j'ai pu quitter et réouvrir plusieurs fois le fichier sans que ça ne m'affiche ce fichu message d'erreur. Toutefois, dès que j'ai à nouveau utilisé ma macro, le problème est réapparu.
De fait : dès que j'utilise la macro, ça semble corrompre le fichier, et un message d'erreur apparaît une fois qu'il est réouvert.

Encore une fois, merci beaucoup pour le temps que vous consacrez ! C'est vraiment sympa

Re-,

Malheureusement je ne peux pas transférer le fichier car il contient des données confidentielles. Si le code ne suffit pas, je créerai un fichier similaire afin d'essayer de reproduire le bug.

Je pense que maintenant, ce serait une bonne idée...

Re-,

Sinon, cette ligne de code peut être modifiée par celle-ci :

.Range("J20").Value = "=TODAY()"

.Range("J20").Value = CDate(Date)

Effectivement ça sera plus simple en envoyant le fichier. Du coup, le voici !

5exemple.xlsm (54.95 Ko)

Re-,

Bon, je l'ai ausculté, trituré, retourné... Mais, rien...

Je l'ai donc refait...

Et comme tu utilises un Tableau Structuré, j'ai adapté le code pour utiliser les codes ad-hoc

Si ça te va

Bizarre ! Mais du moins, ton code fonctionne à merveille et je n'ai plus cette erreur !
Merci énormément du coup de patte !

(Plus qu'à comprendre comment ton code fonctionne :D )

Très bon week-end !

Rechercher des sujets similaires à "message erreur suite fonction sort"