[Résolu][Calc] variable d'objet non définie au démarrage

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 !
znicoboc
Fraîchement OOthentifié
Messages : 3
Inscription : 12 sept. 2017 14:25

[Résolu][Calc] variable d'objet non définie au démarrage

Message par znicoboc »

bonjour,
j'espere ne pas faire doublon, et dans le cas contraire je m'en excuse, j'ai cherché une réponse à la question suivante :
lorsque je teste ce code sur ma page, il fonctionne correctement, j'enregistre, je referme mon fichier et à la reouverture
j'ai le droit à : variable d'objet non défini, le probleme ne se pose plus avec un getbyname("feuille1") à la place du activesheet,
mais je voudrais appliquer cette fonction sur une trentaine de page ...
pourriez vous m'aider ?
merci d'avance
voici le code :

Code : Tout sélectionner

Function BackColor(pos As Variant) As Variant
 Dim leDocument As Object
 Dim lesfeuilles As Object
 Dim laFeuille As Object
 Dim laCellule As Object
 
	leDocument = thisComponent
	lesFeuilles = leDocument.Sheets
	laFeuille = leDocument.currentController.activesheet
	
	laCellule = laFeuille.getCellRangeByName(pos)
	BackColor = laCellule.Text.CellBackColor
End Function

Dernière modification par micmac le 12 sept. 2017 14:42, modifié 2 fois.
openoffice 4 sous win 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25167
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] variable d'objet non définie au démarrage

Message par Dude »

Salut,

Comment penses-tu être aidé si tu ne fournis pas de document ?
On ne sait pas comment est appelé ta fonction, ni les paramètres que tu lui envois.
Fonction qui reçoit un variant alors que getCellRangeByName attend un objet de type CellRange.
Lire le Wiki : https://wiki.openoffice.org/wiki/FR/Doc ... _Documents
znicoboc
Fraîchement OOthentifié
Messages : 3
Inscription : 12 sept. 2017 14:25

Re: [Calc] variable d'objet non définie au démarrage

Message par znicoboc »

pardon, je pensais que l'erreur était dans le code de la macro
je suis enseignant et je souhaite faire correspondre une note à un ensemble de compétences
pour que ce soit plus visuel, je souhaites que ce soit les couleurs qui indique la compétence (pourquoi faire simple, je sais) et aussi pour
que les élèves dans un premier temps remplissent seuls ce fichier
avec une seule feuille cela fonctionne parfaitement (que je remplace le activesheet)

pour moi, j'ai voulu n'avoir qu'un fichier par classe, avec une feuille par élève et là probleme
en ce qui concerne le fichier, n'activez pas la macro au demarrage, car la fonction est appelé dans 400 cellules et c'est un peu long d'appuyer 400 fois sur ok...

voila, j'espere etre clair et je m'excuse pour ces debuts incomplets
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
openoffice 4 sous win 7
footeux
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 03 sept. 2017 16:54

Re: [Calc] variable d'objet non définie au démarrage

Message par footeux »

bonjour,

Je n'arrive pas à comprendre le fonctionnement de ton fichier, mais en regardant le code, a mon avis tu fait fausse route
L'erreur se situe plus ici:

Code : Tout sélectionner

laCellule = laFeuille.getCellRangeByName(pos)
Le terme pos n'est pas défini, du coup l'information de la cellule n'est pas défini.
Pour ma part, j'ai essayer avec activesheet et getbyname("feuille1") et lorsque je test ta macro (avec la touche F5), j'ai toujours la même erreur sur la ligne la Cellule.

Code : Tout sélectionner

getCellRangeByName("A5") 
attend un nom de cellule dans cet exemple A5

Code : Tout sélectionner

getCellByPosition (0,4)
attend les coordonné de la cellule dans l'exemple c'est aussi A5 ( 0,0 correspondant à A1)

Je pense que ton erreur viens de là car je ne vois pas à quoi est égal pos.

Si c'est moi qui utilise mal ton fichier et que le fait de remplacer activesheet débloque ton problème tu as la solution de boucler tes feuilles pour éviter de marquer a chaque fois leur nom.

Code : Tout sélectionner

Function BackColor(pos As Variant) As Variant
 Dim leDocument As Object
 Dim lesfeuilles As Object
 Dim laFeuille As Object
 Dim laCellule As Object
 Dim i As Integer 
 
	leDocument = thisComponent
	lesFeuilles = leDocument.Sheets
	For i = 1 to leDocument.Sheets.Count 
	laFeuille= leDocument.Sheets(i-1)
	
	laCellule = laFeuille.getCellRangeByName(pos)
	BackColor = laCellule.Text.CellBackColor
	next
End Function
Mais je le répète pour moi le problème ne vient pas de "activesheet" et je pense qu'il serait préférable pour ton code de garder "activesheet" qui n’appliquera le code que sur une seule feuille à la fois plutôt que de marquer toutes les feuilles qui devrait alourdir considérablement ton code.
LibreOffice 5.3.6.1 (x64) sous windows 10
znicoboc
Fraîchement OOthentifié
Messages : 3
Inscription : 12 sept. 2017 14:25

Re: [Calc] variable d'objet non définie au démarrage

Message par znicoboc »

pour l'instant, j'ai fait le porc et creer 30 fonctions backcolor1.....
je vais essayer de mettre en place une boucle sur les feuilles, ou alors de ne plus appeler la fonction dans la feuille mais d'automatiser le processus dans la macro
merci pour ta réponse
openoffice 4 sous win 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25167
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] variable d'objet non définie au démarrage

Message par Dude »

Le document est calculé d'abord et affiché ensuite.
Si tu veux faire ce type de fonction, il faut lui passer le nom de la feuille en plus des coordonnées de la cellule.
SchmilBlick
Fraîchement OOthentifié
Messages : 6
Inscription : 08 oct. 2017 18:54

Re: [Calc] variable d'objet non définie au démarrage

Message par SchmilBlick »

je ne reproduis pas l'erreur variable d'objet non défini, ni sur ubuntu (ma signature), ni sur libreoffice portable Version: 5.3.0.3 sur win7.

Par contre le changement de format ne relance pas de calculs, il faut modifier le contenu des cellules pour que la formule se mette à jour.

Techniquement ça ne répond pas précisément à la question, mais pourquoi n'utilises-tu pas une mise en forme conditionnelle? Tu auras alors à la fois le visuel des couleurs et la possibilité de sommer les cellules simplement.
LibreOffice 5.1.6.2 sous Ubuntu 16.04 LTS