Re: [fr-users] Macro: debug
Le 07/12/2015 12:50, Michel Rudelle a écrit : Bonjour Claude -Message d'origine- De : claude [mailto:pref-open-off...@haute-garonne.gouv.fr] Envoyé : lundi 7 décembre 2015 10:51 À : libreoffice Objet : [fr-users] Macro: debug Bonjour, J'ai un problème avec une macro qui fonctionne bien en version 4.1.6 mais qui en 4.3.4 modifie les coordonnées de certaines plages nommées. Désolée, je ne peux publier le fichier ce serait trop compliqué de le rendre anonyme. Et bien sur, je n'ai aucune possibilité de changer les versions des postes de travail. j'ai ajouté une variable qui contient l'adresse d'une plage incriminée mais c'est extrêmement long de débugger en pas à pas. Par contre, existe-il un moyen de paramétrer le debug de façon à ce que l’exécution s'arrête lorsque la variable est modifiée ? Je ne connais pas de fonctionnalité faisant ça tout seul (mais je ne connais pas tout). J'imagine une solution un peu plus rapide que le pas à pas. Puisque tu connais l'adresse initiale qui normalement ne devrait pas changer en cours de programme: 1/ Mémoriser cette donnée initiale dans une autre variable 2/ créer une procédure de test qui lira l'adresse de la zone et la comparera à la donnée initiale. 3/ dans cette procédure, faire le test de façon à ne passer sur une ligne quelconque qu'en cas de modification - ligne sur laquelle tu mettras un point d'arrêt. 4/ parsemer ton programme d'appels récurrents à cette procédure. Par dichotomie tu devrais pourvoir isoler la partie du programme incriminée. Cordialement, Michel Bonjour, Il me semble qu'on peut réaliser ça avec les points d'arrêts. En mettant le curseur au début de la ligne de code à examiner, on place un point d'arrêt soit par le bouton (Dés)Activer au-dessus de l'éditeur, soit par double-clic devant la ligne. Un point marquera la ligne. En lançant l'exécution, le code sera exécuté jusqu'à ce point d'arrêt. On peut ensuite arrêter l'exécution du code, ou poursuivre, voire se mettre en pas à pas à partir de ce point. Il y a les boutons nécessaires à ça. On enlève le ou les points d'arrêt aussi facilement qu'on les a mis, soit par le bouton adéquat, soit par double-clic. Si on a mis de quoi examiner les variables avant le point d'arrêt, on a un moyen pratique de connaître à tout moment l'état du code à cet endroit. Cordialement, Jacques --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Re: Re: [fr-users] Macro: debug
Bonjour, Merci mais l'inconvénient avec les points d'arrêt c'est que il faut déjà avoir une idée de l'endroit où l'anomalie se produit surtout sur une macro qui est relativement longue avec un certain nombre de boucles et quelques appels de fonctions. Dans mon cas, je n'en ai aucune idée. L'astuce de Michel va me permettre de localiser la partie de code en cause. Bonne fin de journée Claude Message original *Sujet: *[INTERNET] Re: [fr-users] Macro: debug *De : *Jacques Guilleron <jacques.guille...@orange.fr> *Pour : *Michel Rudelle <rudelle.mic...@gmail.com>, 'libreoffice' <users@fr.libreoffice.org> *Date : *07/12/2015 15:27 Le 07/12/2015 12:50, Michel Rudelle a écrit : Bonjour Claude -Message d'origine- De : claude [mailto:pref-open-off...@haute-garonne.gouv.fr] Envoyé : lundi 7 décembre 2015 10:51 À : libreoffice Objet : [fr-users] Macro: debug Bonjour, J'ai un problème avec une macro qui fonctionne bien en version 4.1.6 mais qui en 4.3.4 modifie les coordonnées de certaines plages nommées. Désolée, je ne peux publier le fichier ce serait trop compliqué de le rendre anonyme. Et bien sur, je n'ai aucune possibilité de changer les versions des postes de travail. j'ai ajouté une variable qui contient l'adresse d'une plage incriminée mais c'est extrêmement long de débugger en pas à pas. Par contre, existe-il un moyen de paramétrer le debug de façon à ce que l’exécution s'arrête lorsque la variable est modifiée ? Je ne connais pas de fonctionnalité faisant ça tout seul (mais je ne connais pas tout). J'imagine une solution un peu plus rapide que le pas à pas. Puisque tu connais l'adresse initiale qui normalement ne devrait pas changer en cours de programme: 1/ Mémoriser cette donnée initiale dans une autre variable 2/ créer une procédure de test qui lira l'adresse de la zone et la comparera à la donnée initiale. 3/ dans cette procédure, faire le test de façon à ne passer sur une ligne quelconque qu'en cas de modification - ligne sur laquelle tu mettras un point d'arrêt. 4/ parsemer ton programme d'appels récurrents à cette procédure. Par dichotomie tu devrais pourvoir isoler la partie du programme incriminée. Cordialement, Michel Bonjour, Il me semble qu'on peut réaliser ça avec les points d'arrêts. En mettant le curseur au début de la ligne de code à examiner, on place un point d'arrêt soit par le bouton (Dés)Activer au-dessus de l'éditeur, soit par double-clic devant la ligne. Un point marquera la ligne. En lançant l'exécution, le code sera exécuté jusqu'à ce point d'arrêt. On peut ensuite arrêter l'exécution du code, ou poursuivre, voire se mettre en pas à pas à partir de ce point. Il y a les boutons nécessaires à ça. On enlève le ou les points d'arrêt aussi facilement qu'on les a mis, soit par le bouton adéquat, soit par double-clic. Si on a mis de quoi examiner les variables avant le point d'arrêt, on a un moyen pratique de connaître à tout moment l'état du code à cet endroit. Cordialement, Jacques --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
[fr-users] Macro: debug
Bonjour, J'ai un problème avec une macro qui fonctionne bien en version 4.1.6 mais qui en 4.3.4 modifie les coordonnées de certaines plages nommées. Désolée, je ne peux publier le fichier ce serait trop compliqué de le rendre anonyme. Et bien sur, je n'ai aucune possibilité de changer les versions des postes de travail. j'ai ajouté une variable qui contient l'adresse d'une plage incriminée mais c'est extrêmement long de débugger en pas à pas. Par contre, existe-il un moyen de paramétrer le debug de façon à ce que l’exécution s'arrête lorsque la variable est modifiée ? merci pour votre aide Claude -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
RE: [fr-users] Macro: debug
Bonjour Claude > -Message d'origine- > De : claude [mailto:pref-open-off...@haute-garonne.gouv.fr] > Envoyé : lundi 7 décembre 2015 10:51 > À : libreoffice > Objet : [fr-users] Macro: debug > > Bonjour, > > J'ai un problème avec une macro qui fonctionne bien en version 4.1.6 > mais qui en 4.3.4 modifie les coordonnées de certaines plages nommées. > > Désolée, je ne peux publier le fichier ce serait trop compliqué de le > rendre anonyme. Et bien sur, je n'ai aucune possibilité de changer les > versions des postes de travail. > > j'ai ajouté une variable qui contient l'adresse d'une plage incriminée > mais c'est extrêmement long de débugger en pas à pas. Par contre, > existe-il un moyen de paramétrer le debug de façon à ce que lexécution > s'arrête lorsque la variable est modifiée ? Je ne connais pas de fonctionnalité faisant ça tout seul (mais je ne connais pas tout). J'imagine une solution un peu plus rapide que le pas à pas. Puisque tu connais l'adresse initiale qui normalement ne devrait pas changer en cours de programme: 1/ Mémoriser cette donnée initiale dans une autre variable 2/ créer une procédure de test qui lira l'adresse de la zone et la comparera à la donnée initiale. 3/ dans cette procédure, faire le test de façon à ne passer sur une ligne quelconque qu'en cas de modification - ligne sur laquelle tu mettras un point d'arrêt. 4/ parsemer ton programme d'appels récurrents à cette procédure. Par dichotomie tu devrais pourvoir isoler la partie du programme incriminée. Cordialement, Michel -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Re: RE: [fr-users] Macro: debug
Merci beaucoup. Simple et efficace mais encore fallait-il y penser !!! Claude Message original *Sujet: *[INTERNET] RE: [fr-users] Macro: debug *De : *Michel Rudelle <rudelle.mic...@gmail.com> *Pour : *'libreoffice' <users@fr.libreoffice.org> *Date : *07/12/2015 12:50 Bonjour Claude -Message d'origine- De : claude [mailto:pref-open-off...@haute-garonne.gouv.fr] Envoyé : lundi 7 décembre 2015 10:51 À : libreoffice Objet : [fr-users] Macro: debug Bonjour, J'ai un problème avec une macro qui fonctionne bien en version 4.1.6 mais qui en 4.3.4 modifie les coordonnées de certaines plages nommées. Désolée, je ne peux publier le fichier ce serait trop compliqué de le rendre anonyme. Et bien sur, je n'ai aucune possibilité de changer les versions des postes de travail. j'ai ajouté une variable qui contient l'adresse d'une plage incriminée mais c'est extrêmement long de débugger en pas à pas. Par contre, existe-il un moyen de paramétrer le debug de façon à ce que l'exécution s'arrête lorsque la variable est modifiée ? Je ne connais pas de fonctionnalité faisant ça tout seul (mais je ne connais pas tout). J'imagine une solution un peu plus rapide que le pas à pas. Puisque tu connais l'adresse initiale qui normalement ne devrait pas changer en cours de programme: 1/ Mémoriser cette donnée initiale dans une autre variable 2/ créer une procédure de test qui lira l'adresse de la zone et la comparera à la donnée initiale. 3/ dans cette procédure, faire le test de façon à ne passer sur une ligne quelconque qu'en cas de modification - ligne sur laquelle tu mettras un point d'arrêt. 4/ parsemer ton programme d'appels récurrents à cette procédure. Par dichotomie tu devrais pourvoir isoler la partie du programme incriminée. Cordialement, Michel -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés