[Résolu][Calc] Erreur "Given module is not a frame..."

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
migrec
Membre hOOnoraire
Membre hOOnoraire
Messages : 108
Inscription : 16 oct. 2012 20:02

[Résolu][Calc] Erreur "Given module is not a frame..."

Message par migrec »


La modération vous a écrit: Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). NOus l'avons fait pour vous.

Bonjour,

Je ressors à chaque période de l'année un tableau commencé il y a plus de 10 ans et chaque année, je suis confronté à de nouveaux soucis en raison des mises à jour de LO.
Cette année, j'ai une erreur
Erreur d'exécution BASIC.
Une exception s'est produite :
Type: com.sun.star.lang.IllegalArgumentException
Message: Given module is not a frame nor a window, controller or model..
La portion de code incriminée est celle-ci :

Code : Tout sélectionner

	dispatcher.executeDispatch(oFrame, ".uno:GoRightToEndOfData", "", 0, args1())
Ça m'embête d'autant plus que j'utilise énormément cette fonction !
Une idée de l'origine du problème ?


La fonction complète :

Code : Tout sélectionner

Sub supprimerDonnees()

	' Suppression de TOUT à partir de la ligne 8 (2ème ligne de données)
	Dim oCelluleDebutSuppression As Object
	oCelluleDebutSuppression = oFeuilleListe.getCellRangeByName("A8")

	Dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "Sel"
	args1(0).Value = true
	
	Dim dispatcher as Object
	Dim oFrame As Object
	oFrame   = oDocument.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	
	' Sélection de la cellule contenant le premier numéro de dossard et déplacement à la fin des données.
	oDocument.getCurrentController.Select(oCelluleDebutSuppression)
	dispatcher.executeDispatch(oFrame, ".uno:GoRightToEndOfData", "", 0, args1())
	dispatcher.executeDispatch(oFrame, ".uno:GoDownToEndOfData", "", 0, args1())	
		
	' Effacment des chaines, des valeurs et des formules
	Dim Gomme As Long
	Gomme = com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.VALUE + 	com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.DATETIME
	
	Dim oZoneASupprimer
	oZoneASupprimer = oDocument.CurrentController.Selection
	oZoneASupprimer.ClearContents(Gomme)

	' Supression des données modifiables de la 1ère ligne de donnée
	oCelluleDebutSuppression = oFeuilleListe.getCellRangeByName("B7")
	oDocument.getCurrentController.Select(oCelluleDebutSuppression)
	dispatcher.executeDispatch(oFrame, ".uno:GoRight", "", 0, args1())
	dispatcher.executeDispatch(oFrame, ".uno:GoRight", "", 0, args1())
	dispatcher.executeDispatch(oFrame, ".uno:GoRight", "", 0, args1())
	dispatcher.executeDispatch(oFrame, ".uno:GoRight", "", 0, args1())
	
	oZoneASupprimer = oDocument.CurrentController.Selection
	oZoneASupprimer.ClearContents(Gomme)

End Sub
Dernière modification par micmac le 08 oct. 2017 08:45, modifié 1 fois.
LibreOffice 7 dernière version disponible sous Kubuntu 21.10 / Windows 10
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Calc] Given module is not a frame nor a window, control

Message par ThierryT »

Je n'ai pas de soucis avec ma version si les objets oDocument et oFeuilleListe sont définis correctement.
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
migrec
Membre hOOnoraire
Membre hOOnoraire
Messages : 108
Inscription : 16 oct. 2012 20:02

Re: [Calc] Given module is not a frame nor a window, control

Message par migrec »

ThierryT a écrit :Je n'ai pas de soucis avec ma version si les objets oDocument et oFeuilleListe sont définis correctement.
Aie... Mes autres macros semblent fonctionner correctement ! Comment puis-je voir ça ?
Ça fait quelques années que je n'ai plus mis les mains dans le capot de ce fichier et je serai bien incapable de le refaire !!

Ma version : Version: 5.3.1.2
Build ID: 1:5.3.1-0ubuntu2
LibreOffice 7 dernière version disponible sous Kubuntu 21.10 / Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12228
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Given module is not a frame nor a window, control

Message par Bidouille »

Dans votre signature, il y a écrit :LibreOffice 5.3.1.2 sous Linux Kubuntu 17.04
Veuillez noter que la version utilisée est obsolète et n'est plus maintenue.
Commencez par vous mettre à jour : https://forum.openoffice.org/fr/forum/v ... =2&t=49867
Puis corrigez l'information dans votre signature.

Si le problème persiste, joignez le document permettant de reproduire ce que vous décrivez :
Comment joindre un fichier au format ODF
Pensez également à dépersonnaliser le fichier joint.


***
migrec
Membre hOOnoraire
Membre hOOnoraire
Messages : 108
Inscription : 16 oct. 2012 20:02

Re: [Calc] Given module is not a frame nor a window, control

Message par migrec »

Obsolète... Je veux bien que ça ne soit pas la dernière version mais quand même, ma distribution est à jour au niveau sécurité.

Ce que je ne comprend pas, c'est que j'ai cette instruction ailleurs dans mes macros et ça fonctionne !
LibreOffice 7 dernière version disponible sous Kubuntu 21.10 / Windows 10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Given module is not a frame nor a window, control

Message par joel275 »

Bonjour,
migrec a écrit :Ce que je ne comprends pas, c'est que j'ai cette instruction ailleurs dans mes macros et ça fonctionne !
Bien difficile de se prononcer sans voir les dites macros!
Ceci dit, peut-être as-tu déclaré ces variables en tant que variables publiques et tu n'as pas fait leur initialisation au tout début de ton programme.
Si c'est le cas, on voit clairement ici qu'il faut utiliser le moins possible de variables publiques pour rendre les routines le plus autonome possible.

A plus.
A jour de LibreOffice et de Ubuntu
migrec
Membre hOOnoraire
Membre hOOnoraire
Messages : 108
Inscription : 16 oct. 2012 20:02

Re: [Calc] Given module is not a frame nor a window, control

Message par migrec »

Les macros, je peux les publier mais pas le fichier complet car je dois rendre la chose anonyme et il y a pleins de données dedans et tout est imbriqué...

Sur un autre poste avec une version LibreOffice ancien (4 ou 5.0), c'est passé sans problème... Pour l'instant je fais dans l'urgence donc ma macro est passée et je n'en ai besoin qu'une seule fois donc je peux continuer à bosser.
Merci ! Je laisse le post ouvert, j'y reviendrais
LibreOffice 7 dernière version disponible sous Kubuntu 21.10 / Windows 10
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc] Given module is not a frame nor a window, control

Message par Churay »

Bonjour,
migrec a écrit :je suis confronté à de nouveaux soucis en raison des mises à jour de LO.
Rassure-toi : un tas d'autres m.a.j. sont à venir... :lol:

La portion de code incriminée est celle-ci :

Code : Tout sélectionner

	dispatcher.executeDispatch(oFrame, ".uno:GoRightToEndOfData", "", 0, args1())
Une idée de l'origine du problème ?
La m.a.j., non ?

Par contre, puisque tu utilises l'API, autant tout faire avec... et donc éviter le dispatcher qui semble être concerné par ton soucis (cette fois hein... parce qu'à la prochaine m.a.j. rien n'est garanti...)

Code : Tout sélectionner

Sub supprimerDonnees()
Dim oSheet AS Object, oRange AS Object, oCursor AS Object, oGomme AS Long
	Gomme = com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.VALUE +_
	com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.DATETIME

	oSheet = thisComponent.CurrentController.ActiveSheet
	oCursor = oSheet.createCursor : oCursor.gotoEndOfUsedArea(False)
	' Sélection de TOUT à partir de la ligne 8 sauf colonne A
	WITH oCursor.RangeAddress
		oRange = oSheet.getCellRangeByPosition( 1, 7, .EndColumn, .EndRow)
	END WITH
	oRange.ClearContents(Gomme)
	' Sélection de B7 + 4 .uno:GoRight
	oRange = oSheet.getCellRangeByName("B7:F7")
	oRange.ClearContents(Gomme)
End Sub
Et ça devrait faire la même chose...
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
migrec
Membre hOOnoraire
Membre hOOnoraire
Messages : 108
Inscription : 16 oct. 2012 20:02

Re: [Calc] Given module is not a frame nor a window, control

Message par migrec »

Churay a écrit : Par contre, puisque tu utilises l'API, autant tout faire avec... et donc éviter le dispatcher qui semble être concerné par ton soucis (cette fois hein... parce qu'à la prochaine m.a.j. rien n'est garanti...)

Code : Tout sélectionner

Sub supprimerDonnees()
Dim oSheet AS Object, oRange AS Object, oCursor AS Object, oGomme AS Long
	Gomme = com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.VALUE +_
	com.sun.star.sheet.CellFlags.FORMULA + com.sun.star.sheet.CellFlags.DATETIME

	oSheet = thisComponent.CurrentController.ActiveSheet
	oCursor = oSheet.createCursor : oCursor.gotoEndOfUsedArea(False)
	' Sélection de TOUT à partir de la ligne 8 sauf colonne A
	WITH oCursor.RangeAddress
		oRange = oSheet.getCellRangeByPosition( 1, 7, .EndColumn, .EndRow)
	END WITH
	oRange.ClearContents(Gomme)

End Sub
Merci. Une lecture rapide m'indique que la sélection va s'étendre jusqu'à la dernière ligne et dernière colonne de la feuille. Si je souhaite juste aller à la dernière cellule remplie pour une ligne donnée ?
LibreOffice 7 dernière version disponible sous Kubuntu 21.10 / Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Given module is not a frame nor a window, control

Message par Piaf »

Bonjour
migrec a écrit :Une lecture rapide m'indique que la sélection va s'étendre jusqu'à la dernière ligne et dernière colonne de la feuille.
Non, jusqu'à la dernière ligne et la dernière colonne de la zone définie par le curseur.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc] Given module is not a frame nor a window, control

Message par Churay »

Bonjour,
Piaf a écrit :Non, jusqu'à la dernière ligne et la dernière colonne de la zone définie par le curseur.
oCursor.gotoEndOfUsedArea

La fin de la feuille aurait été atteinte sans l'utilisation de la méthode .gotoEndOfUsedArea :

Code : Tout sélectionner

   oCursor = oSheet.createCursor 
   ' Sélection de TOUTE la feuille à partir de la ligne 8 sauf colonne A
   WITH oCursor.RangeAddress
      oRange = oSheet.getCellRangeByPosition( 1, 7, .EndColumn, .EndRow)
   END WITH
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...