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 :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 ?
 Ajout : 03:33 
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 :fou:
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 :lol:
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 :oops: 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 çà :lol:

Encore merci

A+