Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2027 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment vérifier si une feuille Excel existe ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment vérifier si une feuille Excel existe ?

n°1590878
quick dude
Posté le 24-07-2007 à 15:03:15  profilanswer
 

Bonjour à tous,
 
Je voudrais savoir comment est il possible de créer une variable booléenne qui me renvoie si une feuille, nommée "mafeuille" par exemple, existe ou nom dans mon classeur excel.
 
J'espère avoir été clair, merci d'avance

mood
Publicité
Posté le 24-07-2007 à 15:03:15  profilanswer
 

n°1590888
tegu
Posté le 24-07-2007 à 15:11:00  profilanswer
 

Cette fonction minimaliste devrait t'aider :

Public Function FeuilleExiste(sNomFeuille As String) As Boolean
    On Error GoTo Err_FeuilleExiste
    FeuilleExiste = False
    FeuilleExiste = Not ActiveWorkbook.Worksheets(sNomFeuille) Is Nothing
Err_FeuilleExiste:
End Function


À utiliser, par exemple, comme suit :

If FeuilleExiste("Feuil1" ) Then...

n°1591050
quick dude
Posté le 24-07-2007 à 19:26:01  profilanswer
 

Ca marche nickel, merci pour tout

n°2033282
Jacknight
Posté le 30-10-2010 à 18:18:58  profilanswer
 

J'ai mieux :)
 
La fonction suivante retourne la valeur "Vrai" si la feuille existe.
 
Public Function FeuilleExiste (ByVal strNomFeuille As String) As Boolean
'Retourne TRUE si strNomFeuille est le nom d'une feuille qui existe dans le classeur actif
' FALSE dans le cas contraire

 
    FeuilleExiste = Not (IsError(Evaluate("='" & strNomFeuille & "'!A1" )))
 
End Function

 
Jacknight
www.bluebirdcommunication.ch


Message édité par Jacknight le 30-10-2010 à 18:21:10
n°2033866
Xxxaaavvv
Posté le 03-11-2010 à 17:58:26  profilanswer
 

bof, faire intervenir la gestion d'erreur c'est sale.
 
aussi bien celle de VBA que celle des formules :o
 
 


Public Function IsWorksheet(strName As String) As Boolean
   Dim objWorksheet As Worksheet
   IsWorksheet = False
   For Each objWorksheet In ActiveWorkbook.Worksheets
      If objWorksheet.Name = strName Then
         IsWorksheet = True
      End If
   Next
End Function


 

n°2033908
Jacknight
Posté le 03-11-2010 à 21:54:26  profilanswer
 

Xxxaaavvv a écrit :

bof, faire intervenir la gestion d'erreur c'est sale.
 
aussi bien celle de VBA que celle des formules :o
 
 


Public Function IsWorksheet(strName As String) As Boolean
   Dim objWorksheet As Worksheet
   IsWorksheet = False
   For Each objWorksheet In ActiveWorkbook.Worksheets
      If objWorksheet.Name = strName Then
         IsWorksheet = True
      End If
   Next
End Function



 
Ajouter un "Exit for" optimiserait un peu la procédure.
Toutefois, l'utilisation d'une boucle n'est pas aussi efficace dans le cas présent. D'une part parce qu'une grande quantité de feuilles à "vérifier" affecte la rapidité de la procédure. De plus l'usage répété à un échelon supérieur fait ressortir ce problème.
 
Il y a un inconvénient à la gestion des erreurs VBA : c'est qu'on "suppose" que l'erreur générée est déclenchée par l'évênement qui nous intéresse. Alors qu'en réalité, il existe d'autres sources de génération d'erreur (débordement mémoire, etc..) qui peuvent conduire (rarement c'est vrai mais quand même) à un résultat qui est faux.
 
Alors que dans le cas de la verification d'une formule, celle-ci est précisément orientée sur le problème qu'elle est susceptible de générer. Iserror n'est pas une gestion d'erreur à proprement parlé :) mais une vérification gérée nativement par Excel et donc optimisée dans ce but. Et, je ne vois pas ce qu'il y a de sale :)
 
---
Jacknight
www.bluebirdcommunication.ch


Message édité par Jacknight le 03-11-2010 à 23:27:47
n°2033944
Xxxaaavvv
Posté le 04-11-2010 à 09:37:16  profilanswer
 

Une simple erreur de syntaxe dans la formule inclue dans le evaluate peut être ?
 
ça a beau être tout fait en une seule ligne, le fait de devoir interpreter une formule, la faire planter, de récupérer l'erreur pour dire que "non" elle n'y est pas, c'est pas génial, c'est moyen détourné comme pour l'autre.
 
sinon oui il manque l'exit for pour optimiser ma boucle, mais aussi le "activeworkbook" qu'il faudrait éliminer si je voulais être extrémiste.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment vérifier si une feuille Excel existe ?

 

Sujets relatifs
Excel et PHPInformation VBA excel
<VBA EXCEL> Macro qui remplace des liens par leur valeur...Excel macro pour appliquer fonction sur une colonne
[VBA] Cours/Ressource VBA "correcte", ca existe ?{RESOLU}[BATCH]Renomer fichier .jpg + MultiUpload
[Excel] Mélange de somme.si et nb.sidécomposer une adresse par macro sur excel
excel: connection bdd sql server 2005Extraction de plusieurs requêtes SQL Server sous Word ou Excel
Plus de sujets relatifs à : Comment vérifier si une feuille Excel existe ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR