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 :

Tester la présence d'une feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut Tester la présence d'une feuille Excel
    Bonjour

    malgré mes recherches sur le forum et sur les aide de Excel, je n'ai pas retrouvé le fonction qui me permette de tester l'existence d'une feuille dans mon classeur.

    Existe-t-il une telle fonction?

    merci de votre aide!
    Pti Pié

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Tu peux essayer de faire une boucle sur toutes les feuilles et regarder si une feuille avec un nom précis existe
    Maintenant ça dépend ce que tu entend aussi par "existence d'une feuille" si c'est une feuille spécifique, ou si c'est autre chose
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    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
    Function WorkSheetExist(Sheetname as String)
     
    Dim wSheet As Worksheet
     
    On Error Resume Next
    	Set wSheet = Sheets(Sheetname)
    		If wSheet Is Nothing
                            WorkSheetExist=0
    			On Error GoTo 0
    		Else 'Does exist
     
                            WorkSheetExist=0
    			On Error GoTo 0
    		End If
    		Set wSheet = Nothing
    End fUNCTION
    N'oubliez pas de mettre le

  4. #4
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    ok c'est pas mal cette idée!
    je vais en rester la!

    merci bien
    Pti Pié

  5. #5
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    en fait j'ai trouvé une autre technique plus facile! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'recherche d'une feuille nommée "temp"
    For i = 1 To ThisWorkbook.Worksheets.Count
        If ThisWorkbook.Worksheets(i).Name = "temp" Then
            'si elle est présente
            msgbox "ok"
        End If
    Next i
    Pti Pié

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Vesta Voir le message
    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
    Function WorkSheetExist(Sheetname as String)
     
    Dim wSheet As Worksheet
     
    On Error Resume Next
    	Set wSheet = Sheets(Sheetname)
    		If wSheet Is Nothing
                            WorkSheetExist=0
    			On Error GoTo 0
    		Else 'Does exist
     
                            WorkSheetExist=0
    			On Error GoTo 0
    		End If
    		Set wSheet = Nothing
    End fUNCTION
    Bonjour,
    Bon le post date un peu, mais comme cela est très générique...

    Cette solution marche avec la valeur WorkSheetExist=1 dans le premier block If.
    On peut simplifier en 3 lignes tout cela...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Function WorkSheetExist(Sheetname As String) As Boolean
        WorkSheetExist = False
        On Error Resume Next
        WorkSheetExist= (Sheets(Sheetname) Is Nothing)
        ' On Error GoTo 0 ' Pour annuler l'effet on error resume next: inutil en sortie de function
    End Function
    Tchao !

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    dans ce cas là, pourquoi laisser la ligne 3 également ?

    par défaut, un Booléen est déjà à False

    et puis, pourquoi ne pas en profiter pour ajouter un argument permettant de spécifier si la recherche est uniquement dans le classeur hôte de la procédure, dans un autre classeur ouvert, ou dans tous les classeurs ouverts ? Car à chercher une "Feuil1" pouvant être présente dans plusieurs classeurs ouverts, on risque de se prendre les pieds dans le tapis

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Ultime aménagement
    Citation Envoyé par paoloadv Voir le message
    Bonjour,
    Bon le post date un peu, mais comme cela est très générique...

    Cette solution marche avec la valeur WorkSheetExist=1 dans le premier block If.
    On peut simplifier en 3 lignes tout cela...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Function WorkSheetExist(Sheetname As String) As Boolean
        WorkSheetExist = False
        On Error Resume Next
        WorkSheetExist= (Sheets(Sheetname) Is Nothing)
        ' On Error GoTo 0 ' Pour annuler l'effet on error resume next: inutil en sortie de function
    End Function
    Tchao !
    Le code qui fonctionne demande cependant un NOT dans l'évaluation du nom, on a donc la fonction suivante qui fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Function WorkSheetExist(Sheetname As String) As Boolean
    '    WorkSheetExist = False Inutile
        On Error Resume Next
        WorkSheetExist= NOT (Sheets(Sheetname) Is Nothing)
        ' On Error GoTo 0 ' Pour annuler l'effet on error resume next: inutil en sortie de function
    End Function
    Frantz

  9. #9
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Autrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function WorkSheetExist(Sheetname As String) As Boolean
     
    On Error Resume Next
    WorkSheetExist = Sheets(Sheetname).Index
    End Function
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Il y a également ce code fait par notre ami Marc-L que j'utilise souvent


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function sheetExists(Feuille) As Boolean ' Code Fait par Marc-L
             sheetExists = Evaluate("ISREF('" & Feuille & "'!A1)")
    End Function

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

Discussions similaires

  1. Tester la présence d'une expression dans une feuille excel.
    Par valery.petit dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/01/2019, 14h39
  2. [2005] Tester l'existence d'une feuille Excel
    Par MoitieDeCigare dans le forum SSIS
    Réponses: 4
    Dernier message: 20/10/2011, 16h51
  3. Tester l'existence d'une feuille Excel
    Par RodEpsi dans le forum Delphi
    Réponses: 3
    Dernier message: 01/08/2006, 15h27
  4. tester l'existence d'une feuille excel
    Par Equus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2005, 11h31
  5. [VBA][Excel] Tester l'existence d'une feuille
    Par titflocon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2005, 14h49

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