[VBA - Excel] Bug ? Un fichier enregistré sous un autre nom remplace les liens m

Résolu
cs_MisterLo Messages postés 4 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 13 mai 2008 - 7 mai 2008 à 15:17
cs_MisterLo Messages postés 4 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 13 mai 2008 - 13 mai 2008 à 18:42
Bonjour,

D'habitude je me débrouille seul en ce qui concerne la prog, mais là je donne ma langue au chat et mes recherches googlesques se révèlent infructueuses. Peut-être que quelqu'un saura m'aider ou du moins m'expliquer le pourquoi du comment...

Dans le cadre de mon travail, j'ai une macro qui ouvre un fichier Excel, parse chaque valeur de chaque cellule de chaque feuille afin de remplacer un codage clé par une référence venant d'un fichier texte, puis enregistre le fichier modifié sous un autre nom. En d'autres termes j'ai un fichier modèle qui est ouvert, dont les références spécifiques sont remplacées, puis le tout est enregistré ailleurs. Aucun problème de ce côté, c'est juste pour bien situer l'action (on ne sait jamais).

Le fichier modèle contient des liens hypertexte internes (j'entends par là que ces liens ne font référence qu'à d'autres feuilles du même fichier), dont une partie étaient déjà créés lorsque j'ai reçu le fichier original (d'un client, donc), et d'autre part certains que j'ai créés moi-même. Sur les liens qui existaient déjà, certains étaient faux, je les ai donc modifiés. C'est ici que se pose le problème : dans le fichier modèle, les liens sont corrects, tous fonctionnent sans aucun souci, mais dans le fichier de sortie (donc celui copié avec un Workbooks().SaveAs en fin de macro), tous les liens que j'ai eu à corriger ont repris leur valeur précédente, donc la mauvaise version qui ne fonctionne pas. J'ai effectué plusieurs tests, et effectivement si je remodifie les liens en question dans le fichier modèle, par exemple en les supprimant ou en les dirigeant vers une autre page, dans la sortie ils prennent la version juste avant, et ainsi de suite à chaque fois.

Alors bon, je peux toujours "tricher" en mettant les bons liens, en enregistrant, en ré-ouvrant, mettre des faux liens, le tout sur le modèle... Mais je trouve ça gênant que le modèle doive avoir des liens faux pour que la sortie aie des liens justes... Bien entendu, si je modifie mais qu'en fait je remet le même lien (une petite ruse qui marche parfois sur ce genre de bugs), il conserve le "vrai" lien précédent (ce serait trop facile).

Je me demandais donc - mais comme je n'ai pas trouvé la réponse, je vous demande à vous ^_^ - s'il n'y a pas une option d'enregistrement, une option d'Excel, un truc, une astuce, un bricolage, un patch, une zouzouille, bref quelque-chose que je puisse faire pour régler ce problème ?

Vous remerciant d'avoir pris la peine de lire mon roman (désolé, par expérience j'ai toujours peur d'oublier une précision utile), vous remerciant d'autant plus si vous avez la moindre idée ou une solution à m'apporter, et vous priant de m'excuser si un sujet existant et/ou similaire a échappé à ma recherche pourtant minutieuse.

Bonne journée, bon code, et... euh... beau temps ?

"Il n'y a pas de bon ou de mauvais code : il y a le code qui fonctionne et celui qui plante. Après, la lisibilité des sources n'est qu'une question d'hygiène, comme se laver les mains avant de préparer la bouffe."

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
7 mai 2008 à 15:36
tentes avec SaveCopyAs
3
cs_MisterLo Messages postés 4 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 13 mai 2008
7 mai 2008 à 16:20
Merci de la réponse diligeante :)

Effectivement, je n'avais pas pensé à SaveCopyAs (d'ailleurs, je vais sûrement opter pour celle-ci, elle me semble plus adaptée à l'usage que j'en fais), mais :

Je m'apprêtais à m'auto-répondre car je viens juste de comprendre le pourquoi du comment, et que j'aime faire profiter les autres des réponses à mes erreurs.
Alors au cas où quelqu'un aurait le même souci un jour, la raison est simple mais pas forcément évidente : il s'agissait de cellules fusionnées (foutus clients avec leurs idées à la c**).
La solution est donc la suivante : dé-référencer le lien (supprimer), défusionner les cellules, modifier celle qui contient le texte/le lien, refusionner les cellules...

Et Voiloù.

"Il n'y a pas de bon ou de mauvais code : il y a le code qui fonctionne et celui qui plante. Après, la lisibilité des sources n'est qu'une question d'hygiène, comme se laver les mains avant de préparer la bouffe."
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
7 mai 2008 à 23:50
Quand on peut, il est préférable d'utiliser l'alignement centré sur plusieurs colonnes plutôt que la fusion de cellules qui n'apporte des emm... problèmes.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
cs_MisterLo Messages postés 4 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 13 mai 2008
13 mai 2008 à 18:42
A qui le dites-vous ! Je ne compte plus le nombre d'heures perdues (oserais-je dire jours) à cause d'un client qui aime la fusion... :(

Il faut en tirer comme leçon qu'en cas de problème(s) lié(s) au contenu des cellules, la première chose à vérifier est qu'une ou plusieurs fusion(s) n'en est pas à l'origine.

"Il n'y a pas de bon ou de mauvais code : il y a le code qui fonctionne et celui qui plante. Après, la lisibilité des sources n'est qu'une question d'hygiène, comme se laver les mains avant de préparer la bouffe."
0