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 :

Problème d'étiquette dans une procédure


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Problème d'étiquette dans une procédure
    Bonjour,

    Je n'arrive pas à faire fonctionner ma macro comme je le veux. J'ai mis en place deux étiquettes qui doivent selon le choix de l'utilisateur déterminer quelle procédure lancer. Ci-dessous le code entré :

    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
    Sub MEF_RDIM()
     
    ' Permet de mettre en forme les relevés de dimension
     
    Application.ScreenUpdating = False
     
        Dim Question1 As Integer
        MsgBox "Souhaitez-vous conserver les soldes d'ouverture et de fermeture de la période ?", vbYesNo + vbQuestion, "Paramétrage"
        If Question1 = vbYes Then
            GoTo Func1
        Else
            GoTo Func2
        End If
     
    Func1:
     
    'Ici la première procédure
     
    Exit Sub
     
    Func2:
     
    'Ici la deuxième procédure
     
    Application.ScreenUpdating = True
     
    End Sub
    Le problème est que que je clique sur "Oui" ou "Non", c'est toujours ma "Func2" qui se lance... Pouvez-vous m'expliquer ce que j'ai mal fait SVP ?

    Je vous remercie d'avance et vous souhaite une bonne journée !

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Avec une petite modification du code
    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 MEF_RDIM()
    'Permet de mettre en forme les relevés de dimension
    Application.ScreenUpdating = False
    Dim Question1 As Integer
        Question1 = MsgBox("Souhaitez-vous conserver les soldes d'ouverture et de fermeture de la période ?", vbYesNo + vbQuestion, "Paramétrage")
        If Question1 = vbYes Then
            GoTo Func1
        Else
            GoTo Func2
        End If
    Func1:
        MsgBox "YES"
        Exit Sub
    Func2:
        MsgBox "NO"
    End Sub
    Cordialement.

  3. #3
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Merci gFZT82, grosse erreur de débutant, j'enrage !!

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour

    sur le fond...

    surtout pourquoi utiliser des étiquettes, ça correspond peu à la nature du VBA.

    Si tu vises des fonctions, tu fais des procédures Function, sinon des procédures Sub

    A part les traitements d'erreur et des cas extrêmes étiquettes ?


    cordialement,

    Didier

  5. #5
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour Ormonth,

    Tu as parfaitement raison, et c'était mon but premier que d'utiliser les fonctions. Voilà à quoi ressemblait mon code initialement :

    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
    32
    33
    34
    Sub MEF_RDIM()
     
    ' Permet de mettre en forme les relevés de dimension
     
    Application.ScreenUpdating = False
     
        'Nettoyer données précédentes et paramétrage de la fonction à utiliser
     
        With Sheets("Final data").UsedRange.ClearContents
        End With
     
        Dim Question1 As Integer
        Question1 = MsgBox("Souhaitez-vous conserver les soldes d'ouverture et de fermeture de la période ?", vbYesNo + vbQuestion, "Paramétrage")
        If Question1 = vbYes Then
            GoTo Function1
        Else
            GoTo Function2
        End If
     
    End Sub
    Sub Function1()
     
     'Procédure 1
     
    Application.ScreenUpdating = True
     
    End Sub
    Sub Function2()
     
     'Procédure 2
     
    Application.ScreenUpdating = True
     
    End Sub
    Problème lors du lancement de la macro, celle-ci s'arrête et le débogage me surligne "GoTo Function2" avec le message suivant "Compile error : Label not defined".
    J'ai donc provisoirement laissé tombé (manque de temps) et suis passé par des étiquettes qui me semblaient pouvoir parer à ce souci. J'espère pouvoir un jour utiliser correctement les fonctions...

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    bonjour,

    oui car ce n'est pas la bonne syntaxe

    Pour appeler une fonction, il suffit d'évoquer son nom genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If VerifieExistence(txtAjoutParam.Value) = False Then
    ... pour la fonction VerifieExistence.

    cordialement,

    Didier

  7. #7
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour Ormonth, bonjour à toutes et tous,


    J'ai eu du mal à comprendre la syntaxe (et je n'ai pas encore tout compris...).
    A force de fouiner sur la toile, voilà comment j'ai fait pour faire fonctionner ma macro :

    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
    Sub MEF_RDIM()
     
    ' Permet de mettre en forme les relevés de dimension
     
    Application.ScreenUpdating = False
     
        'Nettoyer données précédentes et paramétrage de la fonction à utiliser
     
        With Sheets("Final data").UsedRange.ClearContents
        End With
     
        Dim Question1 As Integer
        Question1 = MsgBox("Souhaitez-vous conserver les soldes d'ouverture et de fermeture de la période ?", vbYesNo + vbQuestion, "Paramétrage")
        If Question1 = vbYes Then
            Call Function1
        Else
            Call Function2
        End If
     
    End Sub
    Ecrit ainsi, cela fonctionne, et c'est parfait. Le problème, c'est que je ne vois aucune différence technique dans l'exécution de la macro entre ces fonctions et les étiquettes, comme tu le soulignais dans ton post précédent :

    Bonjour

    sur le fond...

    surtout pourquoi utiliser des étiquettes, ça correspond peu à la nature du VBA.

    Si tu vises des fonctions, tu fais des procédures Function, sinon des procédures Sub

    A part les traitements d'erreur et des cas extrêmes étiquettes ?
    En quoi les fonctions sont-elles plus adaptées à VBA que les étiquettes ? Il faut savoir que mes macros ne sont que de simples mises en forme de données, du data-crunshing, rien de bien puissant.
    En tout cas merci, je vais essayer d'approfondir cela.
    Bonne journée !

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

Discussions similaires

  1. problème de dynamisme dans une procédure
    Par sherdogvdb dans le forum Oracle
    Réponses: 3
    Dernier message: 07/03/2007, 11h43
  2. Réponses: 1
    Dernier message: 06/03/2007, 11h57
  3. Réponses: 1
    Dernier message: 20/07/2006, 17h03
  4. Réponses: 4
    Dernier message: 16/12/2005, 16h25
  5. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 17h45

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