Perte de macros dans Calc

Bonjour ;

J'ai un curieux problème avec quelques-uns de mes étudiants. Ils travaillent sur une application Calc W7, LibO 3.5.6), dans laquelle ils ont à réaliser deux macros très simples, qui ne présentent pas de caractéristiques particulières. Ils sauvegardent normalement leur travail en fin de séance (les dates et heures des fichiers correspondent à celles de la dernière séance de TP).

A l'ouverture de leur document Calc aujourd'hui, horreur et consternation : leurs macros ont disparu ! Comme elles représentent un certain nombre d'heures de travail (et pas mal de neurones en surchauffe), il s'inquiètent.

Constats :

- le problème ne se pose pas pour tous les étudiants, mais pour suffisamment d'entre eux pour qu'on ne puisse pas considérer que ce soit simplement aléatoire ;

- toutes les macros n'ont pas disparu : avec le classeur-matrice, je leur fournis deux macros "outils" qui permettent la lecture et l'écriture dans une cellule ; ces macros sont toujours présentes, seules celles qu'ils ont réalisées disparaissent ;

- je n'ai pas réussi à mettre en évidence, sur la demi-douzaine de cas, une combinaison de manipulations qui reproduise le phénomène ;

- dans un cas, la création d'un nouveau classeur et une copie depuis un autre classeur "correct" a réglé le problème.

D'après quelques recherches sur les forums, c'est un problème qui semble apparaître depuis longtemps de manière aléatoire. Là, on est dans un aléatoire "massivement" répétitif, quand même... Mais jusqu'à aujourd'hui, son aspect "aléatoire" l'a maintenu dans le "non confirmé". Il est vrai qu'en deux heures de tentatives diverses, je n'ai pas réussi à reproduire le problème.

Mon message n'appelle donc pas forcément à une solution, mais plus à un recensement : ce problème a-t-il été rencontré par ailleurs, et dans quelles conditions ? Est-il possible que ce soit un problème lié au profil utilisateur plus qu'au fichier en lui-même ?

Merci de vos suggestions, toujours les bienvenues.

Cordialement ;

Marc Romano

Bonjour,

N'y aurait-il pas juste un pb d'enregistrement des macros uniquement.
Quel est le chemin des macro ?
Le classeur lui-même ou quelque part sur l'ordinateur ?

Cordialement,
Sandy-Pascal Andriant

En utilisant le chemin :

*Outils - Macros - Gérer les macros - LibreOffice Basic*

sur chaque ordi,

tu devrais pouvoir retrouver ce qui manque.
En espérant que tes étudiants ont pensé à personnaliser leur travail.

Bon courage.

Cordialement,
Sandy-Pascal Andriant

Bonjour

J'ai déjà vu évoquer ce problème, davantage pour XP que pour d'autres
environnements.

Ce que j'ai constaté avec OOo (car c'est un ancien problème) c'est la
nécessité,
parfois (?) de devoir enregistrer deux fois depuis l'EDI : deux clics sur la
disquette
symbolisant la fonction étaient nécessaires pour que cette dernière soit
rendue
inactive. Avec ces deux clics, je n'ai pas subi de pertes de macros...

En revanche, en enregistrant depuis l'interface du module concerné (donc
pas depuis l'EDI) l'enregistrement a toujours été directement effectif.

Bien que la question n'ait a priori rien à voir (la taille des documents
n'étant
pas incriminée ici), le premier commentaire à cette Issue :
https://bugs.freedesktop.org/show_bug.cgi?id=47946#c1
pourrait peut-être laisser présager une résolution indirecte ?

Cordialement
Pierre-Yves

Bonsoir, Sandy ;

Le chemin des macros est dans le document lui-même. Il leur est fourni
avec des modules pré-définis (un module "Algorithmes" pour développer
leurs propres macros, un autre "MacroDeTraitement" pour les macros
obtenues par l'enregistreur et un troisième "Outils" qui contint deux
fonctions de lecture et d'écriture de cellule que je leur ai programmé
pour leur simplifier l'utilisation du langage). Ils ne peuvent donc pas
enregistrer ailleurs, même si certains s'y sont essayés (ça a été
rectifié après la première séance).

Je ne forme pas des programmeurs, mais des utilisateurs à dominante
comptable. Ils doivent savoir avant tout réfléchir à ce qu'ils veulent
obtenir et être ensuite capable d'implanter un algorithme (simple) dans
un langage quelconque. Ici, l'algorithme demandé fait quelques lignes
(en dehors d'une macro obtenue par enregistrement). Donc, comme ce ne
sont pas des "informaticiens" et qu'ils découvrent ce genre
d'application, leur parcours est très balisé. En plus, les étudiants à
qui c'est arrivé ne font pas franchement partie des plus mauvais ou des
inattentifs.

Cordialement ;
Marc

Bonsoir, Sandy ;

Le chemin des macros est dans le document lui-même. Il leur est fourni
avec des modules pré-définis (un module "Algorithmes" pour développer
leurs propres macros, un autre "MacroDeTraitement" pour les macros
obtenues par l'enregistreur et un troisième "Outils" qui contint deux
fonctions de lecture et d'écriture de cellule que je leur ai programmé
pour leur simplifier l'utilisation du langage). Ils ne peuvent donc pas
enregistrer ailleurs, même si certains s'y sont essayés (ça a été
rectifié après la première séance).

Je ne forme pas des programmeurs, mais des utilisateurs à dominante
comptable. Ils doivent savoir avant tout réfléchir à ce qu'ils veulent
obtenir et être ensuite capable d'implanter un algorithme (simple) dans
un langage quelconque. Ici, l'algorithme demandé fait quelques lignes
(en dehors d'une macro obtenue par enregistrement). Donc, comme ce ne
sont pas des "informaticiens" et qu'ils découvrent ce genre
d'application, leur parcours est très balisé. En plus, les étudiants à
qui c'est arrivé ne font pas franchement partie des plus mauvais ou des
inattentifs.

Cordialement ;
Marc

Re,

Loin de moi l'idée de traiter des étudiant de mauvais ou d'inattentifs mais comme les macros sont enregistrées "par défaut" dans la bibliothèque plutôt que dans le classeur...

Cordialement,
Sandy-Pascal Andriant

Bonsoir, Pierre-Yves ;

Bonjour

J'ai déjà vu évoquer ce problème, davantage pour XP que pour d'autres
environnements.

Ce que j'ai constaté avec OOo (car c'est un ancien problème) c'est la
nécessité,
parfois (?) de devoir enregistrer deux fois depuis l'EDI : deux clics sur la
disquette
symbolisant la fonction étaient nécessaires pour que cette dernière soit
rendue
inactive. Avec ces deux clics, je n'ai pas subi de pertes de macros...

En revanche, en enregistrant depuis l'interface du module concerné (donc
pas depuis l'EDI) l'enregistrement a toujours été directement effectif.

Bien que la question n'ait a priori rien à voir (la taille des documents
n'étant
pas incriminée ici), le premier commentaire à cette Issue :
https://bugs.freedesktop.org/show_bug.cgi?id=47946#c1
pourrait peut-être laisser présager une résolution indirecte ?

Cordialement
Pierre-Yves

J'ai pensé en effet à l'enregistrement dans l'EDI vs l'enregistrement à
partir du classeur, j'avais vu cette piste sur un vieux forum. J'ai
essayé une bonne partie de l'après-midi de reproduire l'erreur et, bien
entendu, jamais moyen que ça m'arrive à moi... Ceci dit, il suffirait
d'une fois pour qu'on ait une piste de recherche, donc je vais continuer
à essayer de "planter" l'enregistrement.

La taille des classeurs n'est pas en cause (le corrigé complet fait 35
Ko), il n'y a pas d'autre application ouverte pour consommer de la
mémoire et les réglages d'utilisation de la mémoire de LibO sont ceux
par défaut (j'ai même vérifié qu'ils ne les avaient pas changé par erreur).

Le commentaire que tu cites suppose une réaction de l'utilisateur à un
message du type "ce programme ne répond pas". Je ne peux évidemment pas
surveiller 22 écrans en simultané, il m'est donc impossible d'affirmer
que cela n'a pas été le cas. Mais très franchement, étant donné ceux à
qui c'est arrivé, je serai très surpris qu'ils aient répondu à un
message pareil, même en étant très pressés. Ouais, d'accord, le TP se
termine le vendredi soir à 18 heures, mais il n'y a aucun risque qu'ils
soient à la bourre à la sonnerie, ils ont en général bâché bien avant...:smiley:

Il se passe quelque chose avec ces macros, parfois, dans une
configuration particulière qui ne semble pas dépendre du SE (ils sont
sous W7). Mais quoi ? J'ai ouvert cette question surtout pour attirer
l'attention de la communauté sur ce problème et peut-être inciter
quelques-uns à chercher quelle est la configuration ou les manipulations
en cause.

Bon week-end à tous !

Marc

Je ne l'avais pas pris comme ça, je te rassure ! J'en ai eu quelques-uns
qui, malgré les balises et les panneaux clignotants, ont quand même
réussi en effet à enregistrer leur première macro dans l'emplacement par
défaut au lieu de la mettre dans le document. Je disais simplement que
ceux qui ont eu le problème faisaient partie de ceux qui écoutaient les
consignes et qui les appliquaient. Les autres en ont été quitte pour
recommencer leur macro (je supprime systématiquement ce qui n'est pas au
bon endroit lorsqu'ils me demandent de valider leur travail...)

Marc (prof sadique) >:o

Bonsoir,

De : pierre-yves samyn [mailto:pierre-yves.samyn@laposte.net]
Envoyé : vendredi 19 octobre 2012 19:11
À : users@fr.libreoffice.org

Ce que j'ai constaté avec OOo (car c'est un ancien problème) c'est la
nécessité,
parfois (?) de devoir enregistrer deux fois depuis l'EDI : deux clics sur
la
disquette
symbolisant la fonction étaient nécessaires pour que cette dernière soit
rendue
inactive. Avec ces deux clics, je n'ai pas subi de pertes de macros...

En revanche, en enregistrant depuis l'interface du module concerné (donc
pas depuis l'EDI) l'enregistrement a toujours été directement effectif.

Je ne peux être totalement affirmatif, mais il m'est arrivé une fois de
perdre des modifs et j'ai cru me rappeler de bien avoir cliqué sur la
disquette de l'EDI et non celle du classeur.
Depuis, je fais très attention d'enregistrer le classeur avant de fermer
l'EDI et je n'ai pas eu d'autre souci.

Bonne soirée,
Michel

Bonjour

Marc Romano wrote

Le commentaire que tu cites suppose une réaction de l'utilisateur à un
message du type "ce programme ne répond pas". Je ne peux évidemment pas
surveiller 22 écrans en simultané, il m'est donc impossible d'affirmer
que cela n'a pas été le cas.

Ce n'est pas cela que je voulais dire... J'indiquais que le problème que tu
évoques
(la perte "silencieuse" des macros bien que l'on ait enregistré) n'a a
priori rien à voir
puisque justement aucun message n'est affiché ni ignoré par tes étudiants.

Ce que je voulais dire c'est que cette perte des macros pourrait être
indirectement
résolue si le processus d'enregistrement lui-même était refondu.

Cordialement
Pierre-Yves

Bonjour,

Problème récurrent, mais officiellement classé NOT CONFIRMED

Il existe plusieurs façons de contourner :
- quelque part dans le code, un sub dédié contenant thisComponent.store
- un sub qui copie le code dans un fichier texte horodaté à tant qu'à faire
- un sub qui effectue une sauvegarde horodatée (ou l'extension d'Alain de La Chaume)
Ces codes associés à l'évènement quitter et/ou fermer et/ou enregistrer

Ce que est certain : les méthodes .store et .storeAs ne perdent pas les modifications de code
Le mode opératoire pour reproduire à volonté le phénomène est quasiment impossible à décrire.
Or, seul un mode opératoire amènerait les codeurs à passer en CONFIRMED

pierre-yves.samyn :
cette perte des macros pourrait être indirectement résolue si le processus d'enregistrement lui-même était refondu.
+1
C'est le seul espoir raisonnable que l'on puisse nourrir pour voir disparaître cette fonctionnalité non documentée NOT CONFIRMED.
J'avais lu dans une discussion (issue ?) un sujet autour du processus d'enregistrement mais je ne sais plus trop où...

Bonjour, Pierre-Yves;

Bonjour

Marc Romano wrote

Le commentaire que tu cites suppose une réaction de l'utilisateur à un
message du type "ce programme ne répond pas". Je ne peux évidemment pas
surveiller 22 écrans en simultané, il m'est donc impossible d'affirmer
que cela n'a pas été le cas.

Ce n'est pas cela que je voulais dire... J'indiquais que le problème que tu
évoques
(la perte "silencieuse" des macros bien que l'on ait enregistré) n'a a
priori rien à voir
puisque justement aucun message n'est affiché ni ignoré par tes étudiants.

Ce que je voulais dire c'est que cette perte des macros pourrait être
indirectement
résolue si le processus d'enregistrement lui-même était refondu.

Cordialement
Pierre-Yves

Au temps pour moi, j'ai mal interprété ton message. OK avec ta proposition.

Pour répondre dans le même temps à Patrice, qui évoque le classement
"NOT CONFIRMED" de cette anomalie, c'est effectivement la position
actuelle de l'équipe de développement, aussi bien du côté d'OOo que de
LibO. Je comprends très bien que ce soit logique car, en effet, il
paraît difficile de s'attaquer à un problème qu'on ne peut pas
reproduire, dont on ne connaît ni les conditions d'apparition ni le
contexte de réalisation. La solution que tu évoques, que j'avais trouvé
sur un forum OOo, est à appliquer en l'attente dans un contexte de
production, par simple mesure de sécurité. C'est moins essentiel dans
mon cas, où il ne s'agit que de formation de base. Le fait de leur dire
"attention, assurez-vous d'avoir bien sauvegardé vos modifications", de
leur faire prendre par exemple deux copies de leur classeur, est en soi
une bonne chose dans la mesure où ça les oblige à ne pas se reposer sur
des automatismes, à avoir une démarche consciente de sécurisation de
leur travail et un souci de vérification. Dans l'absolu, ça m'arrange donc.

En réalité, je détourne ce qui est fondamentalement une anomalie à des
fins pédagogiques. C'est certainement positif dans mon cas précis, mais
je ne pense pas que ce soit acceptable par un informaticien qui utilise
LibO (ou OOo) pour développer des applications complexes à mettre en
place dans un contexte professionnel, et qui appréciera peu de perdre
des heures de travail parce qu'il y a un truc qui déc... à
l'enregistrement, et que personne ne s'en soucie parce que ce truc est
NOT CONFIRMED. Si nous voulons que LibO ait droit de cité dans les
environnements professionnels complexes, où les outils de base ne
suffisent pas et où de la programmation est nécessaire, je pense que
nous avons intérêt à régler ce genre de détail, insignifiant en
apparence mais de nature à détourner les professionnels vers des
produits moins aléatoires.

Mon message est une invitation à tenter de reproduire l'anomalie. Ce
qu'un individu ne peut reproduire que de façon ponctuelle et aléatoire,
un grand nombre arrivera certainement à multiplier les cas, et par
comparaison des conditions, peut-être pourrons-nous ainsi donner une
réelle piste de recherche aux développeurs.

Cordialement ;

Marc

Re

J'ai tenté par divers moyens de tracer que qu'il pouvait se
passer en phase enregistrement, j'ai fini par m'en lasser surtout en me
remémorant que bm92 et Pys ont cherché à reproduire sans succès et on ne
peut pas
vraiment dire que ce sont des bleus...

En ramenant les choses à
leur juste valeur, je me suis dit qu'il y avait donc encore moins de
chances pour que je trouve le tuyau percé de l'usine à gaz.

On gardera donc une fonctionnalité non documentée NOT CONFIRMED tant que ne sera pas récrite la partie enregistrement... Réponse que je fais depuis des mois sur le forum francophone....

En attendant on contourne... :wink:

Bonjour ;

Re

J'ai tenté par divers moyens de tracer que qu'il pouvait se
passer en phase enregistrement, j'ai fini par m'en lasser surtout en me
remémorant que bm92 et Pys ont cherché à reproduire sans succès et on ne
peut pas
vraiment dire que ce sont des bleus...

En ramenant les choses à
leur juste valeur, je me suis dit qu'il y avait donc encore moins de
chances pour que je trouve le tuyau percé de l'usine à gaz.

On gardera donc une fonctionnalité non documentée NOT CONFIRMED tant que ne sera pas récrite la partie enregistrement... Réponse que je fais depuis des mois sur le forum francophone....

En attendant on contourne... :wink:

Tout à fait d'accord. Mon propos n'était pas tant de déclencher une
chasse à un phénomène qui a toutes les caractéristiques de l'aléatoire
(si on oublie qu'un ordinateur est une machine finie, ou l'aléa n'a pas
de place, et qu'il y a donc forcément une explication) que de remettre
en mémoire un problème qui existe et qui peut, AMHA, provoquer des
réactions de rejet de la suite par des gens qui potentiellement peuvent
être précieux pour son avenir : un informaticien (ou un étudiant) qui
perd des heures de travail alors qu'il ne dispose que d'un temps limité
pour produire quelque chose n'aura pas forcément envie de continuer à
utiliser LibO ni même à simplement en recommander l'utilisation. Il
s'agit juste de faire en sorte que le prochain qui tombe sur le problème
essaie, autant que faire se peut, de décrire ce qu'il a fait. Et on est
d'autant plus attentif à cela qu'on est averti de l'existence possible
d'un problème.

En attendant, en effet, on contourne...

Cordialement ;

Marc