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 :

Erreur compilation : Sub ou Fonction non définie [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Points : 32
    Points
    32
    Par défaut Erreur compilation : Sub ou Fonction non définie
    Bonjour

    Je viens de créer la macro suivante :
    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
     
    Sub TraitementBrutSansNonSecu()
     
    Dim i As Integer
    Dim j As Integer
     
    j = 2
    Sheet("Brut_NonSecu").Range("1") = Sheet("Brut").Range("1")
    For i = 2 To 189
     If Sheet("Brut").Range("F" & i) <> "PAS SECU" Then
      Sheet("Brut_NonSecu").Range(j) = Sheet("Brut").Range(i)
      j = j + 1
     End If
    Next
     
    End Sub
    mais je ne peux la tester car je tombe sur une erreur de type Sub ou Fonction non définie.
    Après avoir cherché, je sèche complètement sur ce problème. Pouvez-vous m'aider ?

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Fous des s à tes sheets mon ami

    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
    Sub TraitementBrutSansNonSecu()
     
    Dim i As Integer
    Dim j As Integer
     
    j = 2
    Sheets("Brut_NonSecu").Range("1") = Sheets("Brut").Range("1")
    For i = 2 To 189
     If Sheets("Brut").Range("F" & i) <> "PAS SECU" Then
      Sheets("Brut_NonSecu").Range(j) = Sheets("Brut").Range(i)
      j = j + 1
     End If
    Next
     
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour compléter, prenez l'habitude de mettre Option Explicit en haut de chacun de vos modules et de compiler vos procédures avant de les lancer (menu Débogage dans le menu VBA).

    Option Explicit vous forcera à déclarer vos variables. La compilation vous indiquera si le code contient des erreurs rédhibitoires. Attention : Le compilateur ne voit pas tout, mais c'est déjà bien si vous avez franchi cette étape.

    Vous pouvez régler votre VBA pour avoir Option Explicit par défaut.

    Cordialement.
    Dernière modification par AlainTech ; 11/07/2013 à 12h19. Motif: Suppression de la citation

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    L'option explicit va aider à trouver si un sub ou une fonction ne sont pas définies ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Si vous lisez bien ce que j'ai écrit :

    "Option Explicit vous forcera à déclarer vos variables." Dans le cas présent, pas de problème.

    Le compilateur se serait arrêté sur Sheet, il aurait donc pû détecter le problème avant de lancer la procédure.

    Il s'agit simplement d'un conseil pour prendre une habitude qui permet de gagner du temps.

    Cordialement.
    Dernière modification par AlainTech ; 11/07/2013 à 12h22. Motif: Suppression de la citation

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Même sans option explicit ça le fait!

  7. #7
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 807
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 807
    Points : 32 105
    Points
    32 105
    Par défaut
    Si on a pas l'habitude de compiler avant de tester, la compilation - et donc le compte-rendu d'erreur - aura lieu à l'execution.

    ça ne rend pas l'option explicit inutile(je l'active toujours), mais dans ce cas précis, bof.

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Agree

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    J'ai corrigé la faute mais un autre problème vient d'apparaitre. Le problème est que le compilateur n'est franchement pas explicite. Il s'agit d'une erreur d’application ou objet à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("Brut_NonSecu").Range("1") = Sheets("Brut").Range("1")
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Pour compléter, prenez l'habitude de mettre Option Explicit en haut de chacun de vos modules et de compiler vos procédures avant de les lancer (menu Débogage dans le menu VBA).

    Option Explicit vous forcera à déclarer vos variables. La compilation vous indiquera si le code contient des erreurs rédhibitoires. Attention : Le compilateur ne voit pas tout, mais c'est déjà bien si vous avez franchi cette étape.

    Vous pouvez régler votre VBA pour avoir Option Explicit par défaut.

    Cordialement.
    Cette Option Explicit, où dois-je la mettre ? Avant le Sub ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par DSE76 Voir le message

    Cette Option Explicit, où dois-je la mettre ? Avant le Sub ?
    Tout en haut du module, c'est la première ligne.


    Quant à votre problème, une référence de cellule : c'est une lettre (ou un groupe de lettres) et un nombre pour une notation Range comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Brut_NonSecu").Range("A1") = Sheets("Brut").Range("A1")
    Cordialement.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Bon, pas d'erreur de compilation. En revanche, il y a toujours cette erreur dont j'ai parlé dans mon deuxième message.

  12. #12
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Vérifie tes ranges... C'est les coordonnées..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("Brut_NonSecu").Range("CHANGER") = Sheets("Brut").Range("CHANGER")
    For i = 2 To 189
     If Sheets("Brut").Range("F" & i) <> "PAS SECU" Then
      Sheets("Brut_NonSecu").Range(VHANGER) = Sheets("Brut").Range(CHANGER)

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    En fait, je voulais copier la ligne correspondante.
    Edit :
    Réglé ! J'ai du faire la copie ligne par ligne (ce qui est bien lourd). Réglé maintenant !

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

Discussions similaires

  1. [XL-2010] Erreur de compilation : Sub ou Function non définie
    Par forum2015 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 23/07/2014, 18h04
  2. [XL-2007] Erreur de compilation : sub ou fonction non définie
    Par Marine38500 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/02/2014, 17h37
  3. [XL-2007] Erreur de compilation : Sub ou Function non définie
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/03/2013, 20h47
  4. Sub ou fonction non définie (Erreur 35)
    Par xavion dans le forum VBA Word
    Réponses: 5
    Dernier message: 14/12/2012, 21h36
  5. [XL-2007] Sub ou Fonction non définie
    Par locosr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/04/2011, 15h10

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