Panne d'exécution du code
Bonsoir,
J'ai créé une base de données sous Excel (déconseillé, n'est-ce pas ?) contenant des données généalogiques, avec un événement (naissance, mariage, décès) par ligne. Pour introduire ces données dans mon soft de généalogie, je dois les convertir en document texte comportant divers tags.
J'ai donc écrit un programme en BVA qui lit les données dans la feuille Excel et les convertit en texte en intercalant les tags, puis un autre module (sub) ouvre Word et imprime le document texte.
J'ai testé mon code sur les 3 premières pages de la sortie Word et il fonctionne. Le problème: quand je veux imprimer tous les enregistrements d'une feuille Excel, l'impression s'arrête au cours de la 3ème page. Après l'impression, le code enregistre le document et la sauvegarde s'arrête au même endroit. Je n'ai pas trouvé de raison à cette panne.
J'ai testé le code manuellement et la boucle For...Next qui passe d'une ligne Excel à l'autre fonctionne normalement. Question: est-ce qu'une variable de type String comporte une limite en nombre de caractères ? Comment se fait-il que le programme bifurque sur le module d'impression au milieu d'une page et ignore la suite ?
Si quelqu'un a une idée, je suis preneur, avec gratitude.
Cordialement
touche_a_tout
Panne d'exécution du code
Bonjour et merci Alex !
J'ai trouvé ton hypothèse intéressante et futée et j'ai fait la recherche.
Je ne sais pas si Excel permet d'afficher les caractères non imprimables alors j'ai copié mon code dans Word pour les faire apparaître et je n'ai rien remarqué.
J'ai constaté que la sortie texte s'arrête chaque fois au même endroit, au caractère près. J'ai ajouté une ligne au code pour voir si ça changeait quelque chose, mais l'arrêt apparaît au même endroit.
Mais il y a une chose qui semble rendre ton hypothèse inadéquate, c'est que la sortie texte s'arrête dans le courant du deuxième enregistrement de la base, donc le code a été parcouru une première fois intégralement sans arrêt indésirable.
Encore un indice: j'ai toute une série de ces bases de données, j'en ai testé une autre et l'arrêt ne s'est pas produit au même endroit.
Pour ne rien te cacher, j'avais laissé tomber la généalogie et je sais que j'avais déjà rencontré ce problème il y a quelques années; à l'époque, le code transcrivait une vingtaine d'enregistrements, si bien que j'avais réparti les lignes Excel sur plusieurs feuilles par lots de 20 sans dépasser le point d'arrêt.
J'espère bien que cette fois-ci on trouvera une solution au niveau du code.
Bien à toi et merci
touche_a_tout
Panne d'exécution du code
Rebonjour,
Autre test: j'avais introduit ma ligne supplémentaire en-dehors de la boucle For...Next; ensuite je l'ai déplacée à l'intérieur de cette boucle donc elle apparaît à chaque itération. Résultat (bizarre): ligne suppl. à l'extérieur, la sortie compte 72 lignes; ligne suppl. dans la boucle: la sortie compte 113 lignes. L'arrêt a lieu à un endroit différent du code. Un vrai casse-tête. La différence est de 41 lignes. Une ligne du tableau Excel représente environ 60 lignes de texte Word. Où est la logique ?
Merci de ton intérêt.
Cordialement
touche_a_tout
Panne d'exécution du code
Mais ce n'était pas une critique, j'ai apprécié ton aide.
Quant au fichier, si tu as le courage de t'y plonger, je le joins au prochain post.
Encore merci
Cordialement
touche_a_tout
1 pièce(s) jointe(s)
Panne d'exécution du code
Super-sympa !
Pas de souci de délai, je bute là-dessus depuis 2015, alors !
Aucun pb de confidentialité, tous ces gens (jeunes mariés et leurs proches) sont morts et enterrés depuis très longtemps. Ma base contient leurs actes de mariage enregistrés par l'Etat civil (EC) (ce qui les différencie des actes paroissiaux.)
Quelques commentaires:
Il y a presque toujours des lacunes dans les enregistrements de la base, il manque un âge, un lieu de domicile, parfois même un prénom. Comme j'utilise le même code pour une série de bases de mariages, dont certaines ont encore bien plus de lacunes que cette base-ci, mon code croule sous les Select Case et les If, Then Else pour gérer les cellules vides en évitant de produire des "phrases à trous" dans la sortie texte.
Il y a un certain temps, j'avais un problème similaire mais la panne intervenait après l'impression d'une vingtaine d'actes (soit de lignes du tableau Excel). Pour contourner le problème, j'avais réparti les 133 enregistrements à raison d'une vingtaine par feuille en gardant la première au complet (avec le A, soit ECFM_A_Donnees, les suivantes étant ECFM_B_Donnees et ainsi de suite).
Autre particularité, il y a des variables déclarées qui sont apparues dans des versions précédentes et ne servent plus à rien.
J'écris un code lourd comme un âne mort mais je suis un éternel débutant autodidacte et probablement sous-doué. J'admire ton dévouement. Ne traîne pas ça sous l'arbre de Noël ni autour de la dinde, ça lui donnerait mauvais goût !
Je me rappelle que j'ai utilisé un système similaire (lecture d'une feuille Excel et transfert dans Word) dans un autre cas (composition musicale) avec des sorties texte de 20 ou 30 pages sans la moindre panne. Ce n'est donc pas le principe qui est en cause.
Je te remercie d'avance de ce que tu pourras faire et te souhaite bon courage. Et puis Joyeux Noël et Bonne Année !!
Cordialement
Touche_a_tout
Panne d'exécution du code
Merci, Laurent Ott,
On a parfois de ces surprises, c'est vrai. Je vais tenter ça en espérant que ça évitera à Alex de se pourrir la vie au moment des Fêtes. Je donnerai des nouvelles.
Cordialement
touche_a_tout
Panne d'exécution du code
Bonjour Alex et JP,
Ca c'est un chouette cadeau de Noël ! Mon pb résolu "du jour au lendemain". Je n'étais pas venu sur le forum depuis longtemps: il est toujours plein de gens formidables ! Mon code fonctionne, youpi. Typetext vient d'un modèle où il s'agit d'imprimer de petits mémos et j'ai bêtement copié. Mon autre manip qui fonctionnait: je crois bien que je passais le texte ligne par ligne: CQFD.
Le nombre de pages: je voulais dire 133 actes, correspondant aux 133 lignes de la feuille Excel (en fait 131, car il y a 2 lignes d'en-tête), mais selon les classeurs (j'en ai une trentaine) un acte peut occuper plus ou moins qu'une page A4. J'en ai obtenu 52 en effet. Quant aux mots collés. je suis précisément en train de pourchasser ce genre de fautes; il y a aussi les ponctuations multiples et autres broutilles. Ca bouffe un temps fou.
Au fait, je suis bien content que vous soyez tous les deux débarrassés du problème pour les Fêtes. Alors Bonnes Fêtes !
Et surtout merci, et bravo.
Cordialement
Pierre
Panne d'exécution du code
Merci Alex,
Tu pointes ce que j'appelle un code lourd. Tu as cent fois raison mais ce nettoyage devrait être fait sur 9 sheets de naissances + 9 sheets de mariages + 5 sheets de décès = 23 fois 1023 lignes de code à épouiller, alors à propos de flemme :( . Car j'hésite à faire des copier-coller, il y a les références à changer et les risques d'oublis. Bref, j'ai bien peur que mon code lourdingue ne reste en l'état. Mais merci tout de même et Bonnes Fêtes.
Cordialement
touche_a_tout