Problème de sélection après usage de ActiveWorkbook.Save

Bonjour à tous...

Bon, d'accord, ce titre n'est pas clair, mais mon problème simple, ridicule même, est bien réel et pourtant je fais du VBA Excel depuis des années et j'ai jamais eu besoin de résoudre ce problème "ridicule".

J'ai un problème de sélection sur la 2ème feuille de mon document d'exemple (essai.xlm) joint.

1) je fais un tri automatique sur les deux feuilles du doc au moment de la sauvegarde.

2) la sauvegarde fonctionne très bien et le tri aussi.

3) l'affichage est correct sur les 2 feuilles si je fais la sauvegarde manuellement.

Si j'utilise un bouton (image disquette) que j'ai ajouté sur la feuille 1 (car la personne qui doit utiliser ce doc n'a pas de ruban affiché, c'est comme ça)...

Tout fonctionne sauf que l'affichage de la feuille 2 qui reste avec la sélection lors du tri...

Quelqu'un peut me dire la différence entre le bouton Sauvegarde du ruban et la macro ActiveWorkbook.Save utilisé dans mon bouton ?? !?!

Merci pour votre aide et désolé pour le manque de clarté de mon explication

Jean-Claude

Bonjour,

pourtant je fais du VBA Excel depuis des années et j'ai jamais eu besoin de résoudre ce problème "ridicule".

Sans doute pas encore assez d'années pour avoir compris que sélectionner est une opération parasite, qui n'a pour effet que ralentir l'exécution, ni pour abandonner toute utilisation de l'enregistreur pour produire une macro !

Ceci dit ce n'est pas cela qui provoque ton problème, c'est la méthode... mais là encore, sans doute pas assez d'années pour savoir que la méthode Worksheet.Sort (l'enregistreur ne connait plus qu'elle !) n'a pas éliminée la méthode Range.Sort antérieure qui, dans tous les cas courant, est largement aussi efficace et plus simple !

Sub Sauvegarde()
    With Worksheets("Nantes")
        .Range("A3:G221").Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlYes
    End With
    With Worksheets("Angers")
        .Range("A3:G211").Sort key1:=.Range("A3"), order1:=xlAscending, Header:=xlYes
        .Range("B1") = "Sauvegardé le " & Format(Date, "dddd dd mmmm yyyy") & " à " _
         & Format(Time, "hh:mm:ss")
    End With
    ActiveWorkbook.Save
End Sub

et supprimer la procédure BeforeClose...

Cordialement.

Bonjour MFerrand !

Merci pour ton fair play et ton altruisme.

J'ai peur que BeforeClose... reste car mon 'exemple' n'est qu'un exemple !!

Bonne continuation

Jean-Claude

Rechercher des sujets similaires à "probleme selection usage activeworkbook save"