Excel 2007 avec SaveAs au format 2003

AlainN78 Messages postés 4 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 3 décembre 2008 - 1 déc. 2008 à 13:05
AlainN78 Messages postés 4 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 3 décembre 2008 - 3 déc. 2008 à 22:04
Bonjour,
C'est ma première question et j'espère que je la pose au bon endroit et selon les règles.
Voilà, je me bataille avec VBA sous Excel 2007. J'écris une application qui permet à plusieurs personnes de générer un fichier xls (chacun le sien) de relevé mensuel d'heures (une feuille par mois).
Je sauvegarde ces fichiers Excel au format 2003. Jusque là tout va bien.
Maintenant, j'ai besoin d'ajouter du code dans la procédure Workbook_Open() de chaque classeur.
Juste une MsgBox et l'instruction de fermeture du classeur.
Et c'est au moment de sauvegarder le classeur au format 2003 avec le code ajouté que ça plante
avec un message d'erreur 80010108 : L'objet invoqué c'est déconnecté de ses clients.
Comme si Excel 2007 refusait d'enregistrer un classeur au format 2003 avec des macros.
Le plus fou c'est que parfois ça passe mais il suffit de changer 3 fois rien dans le code (ajout d'un mot dans le msg) et hop ça plante. donc pas stable.
Qqun a-t-il une idée ?
Ou une autre méthode pour interdire l'ouverture des fichiers individuels autrement que par l'application.
Je ne veux pas que chacun puisse les modifier directement avec Excel.

Merci par avance.

Extrait du code :

    CodeWbkOpen = "Private Sub Workbook_Open()" & vbCrLf   'Code de la procédure exécutée à l'ouverture d'un classeur tech.    CodeWbkOpen CodeWbkOpen & "result MsgBox(""Utilisez l'application MR_FeuillesHeures.xls !"", vbCritical, ""Erreur : Accès direct interdit"")" & vbCrLf
    CodeWbkOpen = CodeWbkOpen & "ActiveWorkbook.Close" & vbCrLf
    CodeWbkOpen = CodeWbkOpen & "End Sub" & vbCrLf


    With xlWbk.VBProject.VBComponents("ThisWorkbook").CodeModule    'Insertion de la macro Workbook_Open.
        .insertlines .CountOfLines + 1, CodeWbkOpen
    End With
   
    xlWbk.SaveAs unc_fic_Tech & fic_Tech, FileFormat:=56, Password:=pw_Tech, WriteResPassword:=""

AlainN

5 réponses

vbmag Messages postés 10 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 11 décembre 2008
1 déc. 2008 à 14:04
Bonjour Alain,


Je ne suis pas pro en Visual Basic, je ne pourrai donc pas répondre à ton problème d'enregistrement. Mais comme tu suggères une proposition pour interdire l'accès autrement que par l'application, j'ai peut-être une solution (j'ai à peu près le même souci que toi sur une gestion de pointage): il faut protéger le fichier généré par chacun par un mot de passe choisi par toi, et en interdire l'affichage s'il est ouvert directement à partir du répertoire.


Si tu me laisses un peu de temps, je te retrouve le code, il a été écrit par des pros (figure dans le logiciel de la pointeuse), et fonctionne bien: on ne peut visualiser le fichier qu'en passant par l'appli (bien sûr dans le code de l'appli quand tu ouvres le fichier, ne pas oublier d'indiquer le mot de passe!!). Je cherche ça et je reviens vers toi.

vbmag






vb mag

"The Good Lord gave us mountains, so we could learn how to climb" (Lonestar)
0
AlainN78 Messages postés 4 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 3 décembre 2008
1 déc. 2008 à 14:33
Merci vbmag,

Mais j'utilise déjà un mot de passe par utilisateur dans l'appli, ce qui évite qu'un utilisateur mette à jour la feuille d'heures du copain par erreur.
Et ça c'est Ok. Je me suis même creuser un peu la tête pour crypter et conserver les mots de passe car après j'aurai à consolider toutes les données et donc relire les fichiers individuels.
Donc cette fonctionnalité n'est plus dispo.
En fait j'ai l'impression que mon pb est un souci de compatibilité entre le mode de sauvegarde des fichiers avec macros et sans macros de 2007.
Ce qui n'existait pas avant.
Mais là, je tourne en rond voire même en bourrique !

AlainN
0
vbmag Messages postés 10 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 11 décembre 2008
1 déc. 2008 à 14:41
Pourquoi dois-tu sauvegarder en excel 2003 alors que tu travailles en 2007?


Il ne serait pas plus simple de tout standardiser?


En tout cas j'imagine bien ta prise de tête avec tous les mots de passe! Dans un sens, ça me console de voir que je ne suis pas la seule à me battre avec ma gestion des heures!!!!


Je suis de tout coeur avec toi, je t'assure!

vb mag

"The Good Lord gave us mountains, so we could learn how to climb" (Lonestar)
0
AlainN78 Messages postés 4 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 3 décembre 2008
1 déc. 2008 à 20:35
Oui, c'est une très bonne question. Pourquoi ne pas utiliser des fichiers de feuilles d'heures en XL2007 ?
Et le fait que tu la poses m'oblige à me la poser à nouveau et j'avoue que le doute s'installe de plus en plus.
Bon, les utilisateurs échangent des fichiers et le format .xls est un standard.
Mais en ai-je vraiment besoin pour mon cas précis puisque ces fichiers eux ne bougeront pas ?
Je vais tester dans cette voie car je sens que je me crée des complications peut-être bien inutiles.

Encore merci pour cet échange toujours utile pour prendre du recul.

AlainN
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AlainN78 Messages postés 4 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 3 décembre 2008
3 déc. 2008 à 22:04
Bon, ben... J'ai essayé au format 2007 (xlsm), même punition.
C'est désespérant.
Il faut que je trouve autre chose.
Mais je suis toujours preneur d'une idée.

AlainN
0
Rejoignez-nous