Stocker temporairement l'état d'une feuille

Drillheadz

XLDnaute Nouveau
Bonjour à tous !

Alors voilà je vous expose mon problème.

J'ai creé une macro qui va donc parcourir les feuilles de mon classeur et les modifier une par une.
Lorsqu'une erreur intervient, Je lance un MsgBox à mon utilisateur pour le prévenir, je quitte la fonction et passe à la feuille suivante.

Le problème est que lorsqu'une erreur intervient et que je change de feuille, je me retrouve parfois avec une feuille à moitié modifiée.

J'aimerais donc pouvoir stocker l'état de ma feuille avant modification.
De ce fait lorsqu'une erreur intervient, je recupère ma feuille stockée prealablement pour remplacer celle qui est en cours de modification puis je change de feuille.

En gros ! Lorsque que j'ai une erreur, je me retrouve avec une feuille non modifiée.

Je vous remercie d'avance ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Stocker temporairement l'état d'une feuille

Bonjour Drillheadz et bienvenu, bonjour le forum,

Ça doit être faisable mais ça va ralentir considérablement l'exécution de ton code... Au fait, il où ton code ? Envoie-le qu'on puisse te rajouter ce que tu demandes. Car il faut voir comment sont gérer les erreurs pour intervenir...
 

Drillheadz

XLDnaute Nouveau
Re : Stocker temporairement l'état d'une feuille

Merci de ta réponse Robert.

Malheureusement la macro contient des informations que je ne peux divulger.
Mais je ne cherche pas une réponse toute faite, j'aimerais avoir de nouvelle pistes tout simplement.

J'avais une solution qui était de créer une feuille dans la laquelle j'enregistrais les valeurs de mon autre feuille à l'aide d'un parcours cellule par cellule.
Cependant cette solution est extremement lourde à mettre en place.
Suis-je dans une impasse ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Stocker temporairement l'état d'une feuille

Bonsoir Drillheadz, Robert,

Je dis peut-etre une bêtise (ce ne serait pas la 1ière fois);

Pourquoi avant de modifier une feuille, ne pas la dupliquer. Si la macro se termine sans erreur, on efface la feuille dupliquée et on passe à la suivante, si une erreur se produit, on recopie la feuille dupliquée sur la feuille en cours, on efface la feuille dupliquée et on passe à la feuille suivante. Mais sans classeur, difficile d'aller plus loin.
 
Dernière édition:

Drillheadz

XLDnaute Nouveau
Re : Stocker temporairement l'état d'une feuille

Salut à toi MaPomme !

Excusez mon langage mais finalement c'est "tout con" ce que tu nous proposes et je dois t'avouer que, je ne sais pas pourquoi, mais je n'y avais absolument pas pensé avant.

Je testerai tout cela demain mais ça m'a l'air plus que bien engagé !

Rassurez-moi, il est bien possible de dupliquer une feuille dans un même classeur ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Stocker temporairement l'état d'une feuille

Bonsoir Drillheadz,
il est bien possible de dupliquer une feuille dans un même classeur ?
Oui.

On peut imaginer avant le traitement de la feuille Toto, un code du type:
VB:
Dim FeuilCopie As Worksheet

    Sheets("Toto").Copy Before:=Sheets("Toto")
    Set FeuilCopie = ActiveSheet

et si une erreur se produit, on recopie la feuille dupliquée sur l'ancienne (Toto):
VB:
  FeuilCopie.Cells.Copy Sheets("Toto").Cells

puis terminer dans tous les cas par:
VB:
    Application.DisplayAlerts = False
    FeuilCopie.Delete
    Application.DisplayAlerts = True
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Stocker temporairement l'état d'une feuille

Bonjour Drillheadz, Bonjour Robert :) , Bonjour mapomme :) ,
@ mapomme;
En partant de ta très bonne idée, j'aurais bien vu, au lieu de copier / coller :
VB:
Application.DisplayAlerts = False
If Err Then
    Err.Clear
    Sheets("Toto").Delete
    FeuilCopie.Name = "Toto"
Else
    FeuilCopie.Delete
End If
Application.DisplayAlerts = True
Ca reste un detail :D
Cordialement
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Stocker temporairement l'état d'une feuille

Bonjour à tous, Efgé,

Si je n'ai pas supprimé la feuille Toto c'est pour préserver d'éventuelles liaisons à cette feuille qui, peut-être se transformeraient en '#Ref' si la feuille 'Toto' était amenée à ne plus exister quelques instants. Mais je n'ai rien vérifié et ce que je crains peut être tout à fait faux!

Edit: En fait, je crois bien que les relations ne sont conservées que si la feuille à laquelle font référence ces relations n'est pas détruite.
 
Dernière édition:

Drillheadz

XLDnaute Nouveau
Re : Stocker temporairement l'état d'une feuille

Je vous remercie de l'aide que vous m'avez apportez, cela fonctionne à la perfection !

Cependant je laisse le sujet temporairement "non resolu" pour palier à d'eventuelles futures erreurs.

Cordialement.
 

Drillheadz

XLDnaute Nouveau
Re : Stocker temporairement l'état d'une feuille

Bonjour à tous !

Ma macro est maintenant terminé mais il se trouve que c'est une macro que je dois "distribuer" sur un plan national.

De ce fait j'ai étudié la piste de la macro complémentaire qui semble plus qu'efficace.

Cependant afin de rendre la macro effective, l'utilisateur doit effectuer une paire de démarche (placer la macro dans le fichier des macro complémentaires puis l'activer).

J'aimerais en fait minimiser au maximum le nombre d'actions que doit effectuer l'utilisateur, d'une part pour minimiser les erreurs et d'autres part parce que le niveau des utilisateurs sera à l'échelon 0.

Pour ce faire j'aimerais produire un code qui va lui même activer la macro complémentaire.

Cependant je n'ai aucune piste alors si vous pouviez m'aider ...

Sur ce je vous remercie d'avance et vous souhaite une bonne soirée =)
 

Discussions similaires

Réponses
3
Affichages
267

Statistiques des forums

Discussions
312 185
Messages
2 086 009
Membres
103 089
dernier inscrit
johnjohn1969