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 :

[VBA-E]Existence d'une feuille dans un classeur EXCEL


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut [VBA-E]Existence d'une feuille dans un classeur EXCEL
    Bonjour!!
    Voila, ma question est tte bête mais je ne trouve rien dans les tutoriels et dans le forum:
    Comment, dans mon code VBA (EXCEL), vérifier si une feuille existe ou non (à partir de son nom) ?

    Dans le tutoriel Access, j'ai trouver un semblant de réponse mais c'est depuis Access et je ne peux pas l'appliquer à mon cas.

    Merci d'avance!!!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function feuillexiste(sonnom As String) As Boolean
       On Error GoTo final
          Sheets(sonnom).Select
       feuillexiste = True
       Exit Function
    final:
     feuillexiste = False
     On Error GoTo 0
      End Function
    Elle est pas belle la vie ?

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tiens ... une petite variante en passant .. qui garde le même principe tu remplace la ligne
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print Sheets(sonnom).name

    ce qui évite de changer de feuille excel...

    PS : bon je suis pas sur que cela soit vraiment uitile ... mais dans un cas particulier... (il y en as qui les aimes ici... )

  4. #4
    Expert confirmé
    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
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Une méthode qui évite de passer par le gestionnaire d'erreurs mais qui peut être longue s'il y a beaucoup, mais beaucoup de feuilles dans le classeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Function FeuilleExiste() As Boolean
    Dim lbTempo As Boolean
    lbTempo = False
    For i = 0 to Worksheets.Count - 1
        If Worksheets(i).Name = Worksheets("sonNom").Name Then
            lbTempo = True
            Exit For
        End If
    Next i
    FeuilleExiste = lbTempo
    End Function
    Notez qu'il y a une différence entre la propiété Name d'une feuille dans le code et le nom qu'on donne à la feuille de calcul dans Excel (l'onglet de la feuille). On peut avoir donné un nom à une feuille par son onglet, par exemple Ventes2005 alors que cette feuille a toujours pour nom Feuil1 dans le code de l'éditeur VB.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Parfait!! ca marche super!

    Merci bcq!!

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Citation Envoyé par zazaraignée
    Salut



    Notez qu'il y a une différence entre la propiété Name d'une feuille dans le code et le nom qu'on donne à la feuille de calcul dans Excel (l'onglet de la feuille). On peut avoir donné un nom à une feuille par son onglet, par exemple Ventes2005 alors que cette feuille a toujours pour nom Feuil1 dans le code de l'éditeur VB.
    non il n'y a pas de différences tu confonds la propriété name de la feuille
    et l'index de la feuille dans la collection sheets

    au passage bravo bbil bon réflexe
    Elle est pas belle la vie ?

  7. #7
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Pas d'accord avec toi, Random. Zaza a raison.
    Il y a bien 2 noms distincts pour un onglet.
    Je l'ignorais jusqu'il y a peu, mais un post est passé sur ce sujet il-y-a quelques temps.
    Regarde dans l'explorateur de projet de l'éditeur VBA: tu as, pour les onglets, Feuil1(nom_de_la_feuille).
    -"nom_de_la_feuille", qui se change facilement en renommant l'onglet dans Excel
    -"Feuil1", qui se change aussi, mais c'est plus dur... Je ne me souviens lpus de l'objet par lequel il faut passer, mais c'est possible...

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par L'aide en ligne
    CodeName Property

    Returns the code name for the object. Read-only String.

    Remarks

    The code name for an object can be used in place of an expression that returns the object. For example, if the code name for worksheet one is "Sheet1", the following expressions are identical:

    Worksheets(1).Range("a1")
    Sheet1.Range("a1")

    It's possible for the sheet name to be different from the code name. When you create a sheet, the sheet name and code name are the same, but changing the sheet name doesn'tchange the code name, and changing the code name (using the Properties window in the Visual Basic Editor) doesn't change the sheet name.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    damned je suis pris en faute
    pardon à vous deux
    enfin partiellement si dans l'inspecteur d'objet je cherche feuille1
    je le trouve à vbaproject
    l'objet en question n'est pas la feuille mais son code
    je peux d'ailleurs renommer dans la fenêtre propriétes
    et lui donner un beau nom genre CodeFeuille1
    moralité la feuille n'a qu'un nom, mais elle est associée à un élément
    de code nommé vbaproject par défaut je peux renommer vbaproject
    par code
    j'aurais donc une collection code associée à un classeur nommé xx
    et des items de cette collection associée à des feuilles
    l'explorateur de projet met bien cela en évidence en montrant
    nomducode(nomdelafeuille)
    Elle est pas belle la vie ?

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    redamned pendant ce temps là
    Alain Tech expliquait bien mieux que moi et dans un anglais
    plus pur que mon français
    pardon encore à vous trois
    Elle est pas belle la vie ?

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

Discussions similaires

  1. [AC-2003] Copier/Inserer une feuille dans un classeur Excel depuis ACCESS
    Par moilou2 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/08/2009, 14h45
  2. [VBA-E][2k7] Enregistrer une feuille d'un classeur dans un autre document
    Par tazamorte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2007, 18h15
  3. Réponses: 4
    Dernier message: 20/04/2007, 09h13
  4. [VBA-E] Existence d'une feuille
    Par pierrOPSG dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2006, 17h07
  5. VBA-Recherche d'une feuille dans plusieurs classeurs
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/07/2006, 14h50

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