IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

L'utilisation d'Option Explicit [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut L'utilisation d'Option Explicit
    Bonjour a tous et toutes, forum bonjour,

    Voila j'ai repris un code qui fonctionnais bien et je viens de lire qu'il est conseillé de mettre en début de procédure le code Option Explicit alors je mets et depuis j'ai l'erreur de compilation avec variable non définie

    Si quelqu'un svp veut bien m'expliquer si il y a vraiment un erreur dans le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Explicit
    Function sommecouleur(zne As Range)
    Application.Volatile True
    For Each Cell In zne
    If Cell.Interior.ColorIndex = 4 Then Cvsomme = Cvsomme + Cell.Value
    Next Cell
    sommecouleur = Cvsomme
    End Function
     
    Function moisencours(zone As Range)
    For Each Cell In zone
    If Cell.Value > 0 Then tot = Cell.Column
    Next Cell
    tot2 = Cells(3, tot)                 
    moisencours = tot2
    End Function
     
    '*** Touche controle au clavier:Ctrl + M
    Sub Macro1()
    Cells(16, 1) = Cells(16, 1) + 1       
    End Sub
    Merci a vous et de votre temps bonne apres midi

    Raymond

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Demande à ce que toutes les variables utilisées soient définies, le message est donc normal si le code ne l'est pas, a noter qu'il met en surbrillance la variable a definir

    Edit: Cvsomme n'est pas défini par exemple

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Mais...VB s'arrête en prinicipe alors sur toute variable non définie (typée)

    aucune de tes variables n'est définie !

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Le message est bien explicite (comme l'option ... )

    Il te manque toutes les declarations de variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Option Explicit
    Function sommecouleur(zne As Range) as Double 'Ne pas oublier le type renvoyé
    ' Declaration des variables
    Dim Cell as Range
    Dim Cvsomme as Double
     
    Application.Volatile True
    For Each Cell In zne
    If Cell.Interior.ColorIndex = 4 Then Cvsomme = Cvsomme + Cell.Value
    Next Cell
    sommecouleur = Cvsomme
    End Function
     
    Function moisencours(zone As Range) as Double  'Ne pas oublier le type renvoyé
    ' Declaration des variables
    Dim Cell as Range
    Dim tot as Byte
    Dim tot2 as Double
     
    For Each Cell In zone
    If Cell.Value > 0 Then tot = Cell.Column
    Next Cell
    tot2 = Cells(3, tot)                 
    moisencours = tot2
    End Function
     
    '*** Touche controle au clavier:Ctrl + M
    Sub Macro1()
    Cells(16, 1) = Cells(16, 1) + 1       
    End Sub
    ++
    Minick

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je ne saurais que te conseiller les tutos sur les variables que tu trouveras ici

  6. #6
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut minick, ucfoutu,aalex38, forum,

    Merci pour la reponse c'est bon c'etait un code fait au boulot il y a deja longtemps et sur xl 2007 soucis reparer grace vous

    je vous remercie tous pour le coup de main.

    et bon W-end du 1ier mai a tous et au forum

    Raymond

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les options régionales
    Par kamikazbe dans le forum NetBeans
    Réponses: 1
    Dernier message: 07/06/2007, 12h59
  2. Problème avec "option explicit"
    Par tribaleur dans le forum ASP
    Réponses: 3
    Dernier message: 01/06/2006, 10h46
  3. Utiliser les options qui sont dans ma table
    Par valery17 dans le forum Access
    Réponses: 1
    Dernier message: 21/04/2006, 22h45
  4. option explicite????!!!
    Par shinrei dans le forum ASP
    Réponses: 1
    Dernier message: 14/04/2006, 18h09
  5. Utilisation de Option explicit
    Par Perihan dans le forum ASP
    Réponses: 5
    Dernier message: 29/10/2003, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo