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 :

Fonction If et exit sub


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut Fonction If et exit sub
    Bonjour à tous,

    je suis débutant en vba et je souhaite exécuter la procédure suivante.
    Ce if est en début de procédure, de sorte a vérifier que si je suis dans le fichier excel "classeur1", il affiche un message d'erreur (ce qu'il fait bien), se positionne sur le classeur de départ et arrete la procédure en cours. le exit sub ne fonctionne pas du tout et malgré l'affichage du message, la procédure continue, comme si de rien n'était

    Merci de me donner un coup de main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    feuille_active = ActiveSheet.Name
    classeur_actif = ActiveWorkbook.Name
    If classeur_actif = "Classeur1.xls" Then
        MsgBox "Cette commande ne fonctionne pas dans le fichier classeur1.Veuillez recommencer dans le dossier client.", vbExclamation, "Message erreur"
        Workbooks(classeur_actif).Worksheets(feuille_active).Activate
        Exit Sub
    End If

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,

    Et en mettant Exit Sub directement après MsgBox?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut Suite
    pourquoi pas, bien que je ne sache pas comment faire, mais je voudrais revenir sur la feuille de départ et donc mettre le exit sub bien à part.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ton classeur actif n'étant pas encore sauvé, ActiveWorkbook.Name renvoie le nom du classeur sans le préfixe donc ta syntaxe peut-être ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If classeur_actif = "Classeur1" Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut re bonjour
    cette solution ne fonctionne pas.
    le classeur actif est bien classeur1.xls car il m'affiche bien le msgbox mais il "saute" l'instruction exit sub

    merci d'avance de vos idées.

    cordialement

    Crapule

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est curieux car ta syntaxe est bonne.
    Le problème ne peut provenir que dans le fait que classeur_actif n'est pas égal à "classeur1"
    Je teste toujours le code avant de donner une réponse.
    As-tu utilisé le débogage ?
    J'ai l'impression que tu as plus d'un classeur ouvert et sans doute ton classeur actif n'est pas le bon.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 572
    Par défaut
    je confirme que le code est bon. chez moi, il se passe la même chose, sur un classeur non enregistré, il ne detecte que "classeur1" en guise de nom, mais en enlevant le ".xls", il vient bien dans la boucle if, renvoie bien le msgbox et applique bien le exit sub. es-tu sur que le code que tu nous soumet est bien exactement le même que dans ta procédure ?
    par contre, je pense que tu commet une erreur
    quand tu dis
    je voudrais revenir sur la feuille de départ et donc mettre le exit sub bien à part.
    quand tu écris dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    feuille_active = ActiveSheet.Name
    classeur_actif = ActiveWorkbook.Name
    ton but est de ne pas exécuter le code s'il s'agit de classeur1 donc tu récupere le nom du classeur actif, tu le compare à a la chaine "classeur1", jusque la ça va, si la condition est vrai, tu envoie le msg d'erreur et c'est bon, mais ensuite si tu écris
    Workbooks(classeur_actif).Worksheets(feuille_active).Activate
    a ce momment là classeur_actif et feuille_active sont égaux a classeur1 donc ne renverront pas vers la feuille de départ

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Par défaut
    bonjour,

    je confirme que le classeur1.xls est bien enregistré avant de lancer la procédure, par contre petite précision qui a peut etre son importance est que le If est placé dans une procédure UserForm_Initialize puisque c'est la condition n°1 pour que la procédure et la UserForm se lance. le classeur à partir duquel se lance la procédure ne doit pas etre classeur1. je vous renvoie tout le début de la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub UserForm_initialize()
    feuille_active = ActiveSheet.Name
    MsgBox feuille_active
    Sheets("Menu").Activate
    classeur_actif = ActiveWorkbook.Name
    MsgBox classeur_actif
    If classeur_actif = "Classeur1.xls" Then
        MsgBox "Cette commande ne fonctionne pas dans le fichier Classeur1.Veuillez recommencer dans le dossier client.", vbExclamation, "Message Erreur"
        Workbooks(classeur_actif).Worksheets(feuille_active).Activate
        Exit Sub
    End If
    le fichier classeur1 est bien evidemment enregistré avant, il comporte plusieurs feuille dont la feuille Menu.

    je ne sais quoi dire de plus pour arriver à un début d'explication et de solution.

    merci de votre aide d'avance

    Cordialement

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    La question, pourquoi toute cette gymnastique.
    je suis sûr que si tu travaille avec des variables workbook et worksheet, tu n'aura pas besoin d'activer quoique que ce soit ou de chercher lequel des classeurs est le classeur actif.

Discussions similaires

  1. différence entre end sub et exit sub
    Par TaymouWan dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/12/2009, 10h38
  2. [E-03] Problème Exit Sub
    Par allergique dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/10/2008, 22h51
  3. Réponses: 3
    Dernier message: 08/10/2008, 17h34
  4. Problème d'Exit Sub
    Par DeaD78 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2008, 10h53
  5. equivalent exit sub
    Par mapmip dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/03/2007, 17h51

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