Page 1 sur 1
[Résolu][Calc]Variable non définie
Publié : 29 oct. 2013 15:53
par Zelada
Bonjour
Je tente de reproduire une macro dans un fichier , je modifie uniquement le nom de la feuille et la zone
et je me retrouve avec une erreur de variable non définie alors que dans le premier fichier, la macro fonctionne nickel
variable_non_definie.jpg
En pièce jointe
- le fichier qui fonctionne
- le fichier nommé remise_a_zero qui cause souci
je ne comprends vraiment pas
Un truc de fou
Merci d'avance
A+
Re: [Calc] Variable non définie
Publié : 29 oct. 2013 16:20
par bm92
Bonsoir,
La raison est la ligne 2 du Module1.
Re: [Calc] Variable non définie
Publié : 29 oct. 2013 16:22
par joel275
Bonjour,
il me semble que tu as deux variables non définies: condFormat et MaCellule; une fois définie, tout semble fonctionner.
A plus,
Joël
Re: [Calc] Variable non définie
Publié : 30 oct. 2013 02:23
par Zelada
Bonjour/Bonsoir
J'ai regardé la ligne 2 du module 1
J'ai repris la macro qui fonctionne et j'ai fait un copier coller
Ci-dessous la macro qui fonctionne (voir fichier nommé remise_a_zero1_marche.ods):
Code : Tout sélectionner
Sub EffacerZonetata
Dim monDocument As Object, mesFeuilles As Object, maFeuille As Object, maZone1 As Object, maZone2 As Object
Dim gomme As LOng
monDocument = ThisComponent
mesFeuilles = monDocument.sheets
maFeuille = mesFeuilles.getByName("tata")
maZone1 = maFeuille.getCellRangeByName("B8:H37")
'utiliser DATETIME pour effacer date ou heure
'utiliser VALUE pour effacer contenu numérique autre que date ou heure
'utiliser STRING pour effacer contenu texte
'utiliser HARDATTR + STYLE pour effacer style
gomme = com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING
maZone1.clearContents(gomme)
'remettre la mise en forme conditionnelle
condFormat = maZone1.conditionalFormat
condFormat.Clear
'former un critère
Dim cond(2) As New com.sun.star.beans.PropertyValue
cond(0).Name = "Operator"
cond(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
cond(1).Name = "Formula1"
cond(1).Value = "=MOD(ROW();2)"
cond(2).Name = "StyleName"
cond(2).Value = "vert" 'style à créer au préalable
'l'ajouter à la liste
condFormat.AddNew(cond)
'appliquer la liste de critères
maZone1.conditionalFormat = condFormat
End Sub
Ci-dessous la macro qui me dit qu'une variable n'est pas définie (voir fichier nommé remise_a_zero_marche_pas.ods) alors que les seuls mots modifiés sont
"tata" pour "carottes"
"vert" ou "ligne_verte"
Code : Tout sélectionner
Sub EffacerZoneCarottes
Dim monDocument As Object, mesFeuilles As Object, maFeuille As Object, maZone1 As Object, maZone2 As Object
Dim gomme As LOng
monDocument = ThisComponent
mesFeuilles = monDocument.sheets
maFeuille = mesFeuilles.getByName("carottes")
maZone1 = maFeuille.getCellRangeByName("B8:H37")
'utiliser DATETIME pour effacer date ou heure
'utiliser VALUE pour effacer contenu numérique autre que date ou heure
'utiliser STRING pour effacer contenu texte
'utiliser HARDATTR + STYLE pour effacer style
gomme = com.sun.star.sheet.CellFlags.VALUE + com.sun.star.sheet.CellFlags.STRING
maZone1.clearContents(gomme)
'remettre la mise en forme conditionnelle
condFormat = maZone1.conditionalFormat
condFormat.Clear
'former un critère
Dim cond(2) As New com.sun.star.beans.PropertyValue
cond(0).Name = "Operator"
cond(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
cond(1).Name = "Formula1"
cond(1).Value = "=MOD(ROW();2)"
cond(2).Name = "StyleName"
cond(2).Value = "ligne_verte" 'style à créer au préalable
'l'ajouter à la liste
condFormat.AddNew(cond)
'appliquer la liste de critères
maZone1.conditionalFormat = condFormat
End Sub
Pourquoi la macro fonctionne d'un côté et pas de l'autre ?
J'ai repris le fichier avec la macro qui ne fonctionne pas : j'ai renommé ma feuille, j'ai renommé mon style
donc le code est mot pour mot identique et pourtant cela ne fonctionne pas
Voir fichier nommé remise_a_zero1_marche_pas2.ods
A+
Re: [Calc] Variable non définie
Publié : 30 oct. 2013 07:21
par luky-luke
Bonjour
Zelada
Il faut lire les messages de tes petits camarades
joel275 a écrit :il me semble que tu as deux variables non définies: condFormat et MaCellule; une fois définie, tout semble fonctionner.
+1
Tu mets l
'option explicit en début de module, il te faut donc déclarer
toute les variables sous peine de voir le message d'erreur.
Comme l'écris
joel275 condFormat n'est pas définies. Il est donc normal d'avoir une erreur . Une fois cet objet déclaré, il n'y a plus le message d'erreur
Variable non définie.
Cordialement
Luke
Re: [Calc] Variable non définie
Publié : 30 oct. 2013 07:31
par bm92
Bonjour,
J'ai regardé la ligne 2 du module 1
Et qu'en as-tu pensé ? Sais-tu à quoi elle sert ?
Cette page de Wiki donne des explications fondamentales :
Utilisation des variables. À lire attentivement, pas seulement regarder.
Re: [Calc] [Résolu]Variable non définie
Publié : 30 oct. 2013 07:36
par Zelada
Bonjour
Merci
luky-luke
J'avais bien lu le message de joel275 mais j'ai fait ma tête de mule

car dans un fichier, je n'avais pas déclaré ces deux variables et cela fonctionnait .
Je n'avais pas vu que sur le fichier où la macro fonctionnait, j'avais omis d'indiquer Option Explicit
Je n'ai pas dormi de la nuit à cause de çà
Encore merci
A+