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 "exist" ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Par défaut Fonction "exist" ?
    Bonjour à tous!

    Je voudrais savoir s'il existe une fonction qui permet d'utiliser une macro ou un object qui existe peut être...Pas très clair? Je m'explique:

    En gros je voudrais qu'à l'ouverture de mon classeur Excel, le programme ajoute une barre d'outil. Le problème est que cette barre d'outil existe peut être deja, si je l'avais ajoutée précédemment. Et si elle existe déjà, quand j'ouvre mon classeur et que CommandBars.Add s'execute automatiquement, Excel me renvoie une erreur, car la barre d'outil existe déjà, et je ne peux donc la "réajouter"... Donc je voudrais faire un truc du style:

    Si Bar existe alors blablabla
    Sinon, Ajoute Bar et Blablabla.

    Pourriez-vous m'aider?

    Merci.

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Y'a toujours la gestion des erreurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub AfficherOutilsToto()
        On Error GoTo GestionErreur
        Application.CommandBars("Toto").Visible = True
     
    GestionErreur:
        If Err.Number = 5 Then  ' la barre d'outils n'existe pas
            'Créer la barre d'outils toto
        End If
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Par défaut
    Pas bête!
    Cette solution m'interesse, mais j'ai dejà un On erro go to dans ma macro...
    Est ce que je peux cumuler les "On error"?

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Bonjour
    Non, tu ne peux mettre qu'un On Error Goto par procédure, par contre tu testes le code erreur qui te permetra de savoir d'où vient l'erreur et ce que tu veux faire et en cas de Resume, le programme repart là où il y a eu lieu l'erreur
    Slts

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Un type d'erreur à la fois. Tu peux créer une procédure qui s'appelle AfficherBarreOutils qui contient le traitement des erreurs. Et qui, en cas d'erreur, appelle une autre procédure qui s'appelle CreerBarreOutils. Tu appelle la première depuis ta procédure principale (probablement un procédure événementielle).

    D'ailleurs, à chaque fois que tu as à traiter des erreurs par le code d'erreur, il vaut mieux faire une procédure séparée avec l'action qui risque de provoquer l'erreur.

    Ci-joint, un petit organigramme:

  6. #6
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    La proposition de zazaraignée est très bonne. Si tu veux toutefois le faire en une seule subroutine, c'est possible.

    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
     
    On Error Goto ErrHandler
     
    ' Ecrit ici ton code
     
     
     
     
    On Error Resume Next
     
    ' Ecrit ici le code pour afficher la barre d'outil et immédiatement après, teste la valeur retournée par Err.Number
     
    If Err.Number <> 0 Then 
     
       ' La barre d'outil n'existe pas.   Il faut donc la créer.
     
    End if
     
    On Error Goto 0
     
     
     
     
     
     
       Goto ErrFin:
     
    ErrHandler:
     
       Msgbox "Gestionnaire principal d'erreur"
     
    ErrFin:
     
       On Error Goto 0

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

Discussions similaires

  1. Fonction Replace pour quote
    Par piero53 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/11/2009, 01h19

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