Re : Problème as SaveAsUI
Bonsoir Pascal, bonsoir Pierrot,
Merci pour votre implication.
En fait j'ai conçu une fiche qui change automatiquement à son ouverture de nombreux paramètres Excel.
Une fois cela fait, je me suis dit que l'utilisateur de la fiche serait quelque peu énervé si la fiche remettait à sa fermeture les paramètres par défaut d'Excel (imaginons qu'un utilisateur lambda ait passé x heures à paramétrer Excel et que tout d'un coup, une saleté de fiche lui efface tous ses réglages. Pas très agréable ...).
Je me suis alors mis à la réalisation d'un système de backup de tous les paramétrages changés. Voilà que c'est fait et que le backup est restauré à la fermeture de la fiche. Beaucoup mieux ... mais toujours pas suffisant car qu'est ce qui se passerait si le courant était coupé pendant que l'utilisateur travaille sur la fiche ou que, tout simplement, Excel plantait ... ?
Et bien dans ce cas, l'utilisateur va perdre à nouveau tous ses réglages. Puis comme
y'en a qui aime se faire des noeuds avec les boyeaux de la tête
je me suis dit que ce serait bien que la fiche propose après plantage de restaurer les données depuis le backup.
J'ai donc intégré jusqu'à trois backups dans la fiche et j'ai créé de jolis userforms pour pouvoir restaurer le backup voulu en cas de plantage.
Seulement là j'ai été confronté à un problème assez important : comment faire pour détecter que la fiche a été plantée. Je me suis dit la chose suivante :
à l'ouverture, on enregistre le mot "open" quelque part dans le backup et on enregistre la fiche avant que l'utilisateur ait le temps de faire quoique ce soit puis à la fermeture on inscrit "closed" et on enregistre.
Oui, mais si l'utilisateur décidait de ne pas enregistrer la fiche à la fermeture ...
Et à nouveau, tout mon raisonnement tombait à l'eau pour un problème simple.
Il m'a suffit alors pour résoudre cela de créer à chaque enregistrement du fichier un backup de la fiche dans un autre onglet avec la propriété xlSheetVeryHidden. Ce backup est restauré à la fin si on décide de ne pas enregistrer le fichier. Comme ça, tout semble marcher comme prévu.
Evidemment, pour mettre cela en place, j'ai eu besoin de prendre le contrôle sur tout le processus d'enregistrement, mais là, surprise je découvre que :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then SaveAsUI = False
End Sub
ne fonctionne pas pour annuler la boite de dialogue "Enregistrer sous ..." alors que pourtant c'est partout marqué sur internet que c'est censé le faire.
Bref, je n'ai toujours pas compris ce problème, mais je l'ai au moins résolu.
Je poste mon code d'ici quelque temps.
Bonne soirée à tous,
Youri