Vérifier existence d'une feuille

Résolu/Fermé
Signaler
-
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
-
Bonjour,

j'ai un petit soucis
j'utilise ce code dans une macro pour activer la bonne feuille :

For Each shFo In Worksheets
Set a = shFo.Range("A1").Find(shBase.Range(référence).Value, lookat:=xlWhole
If Not a Is Nothing Then
Worksheets(shFo.Name).Activate
Exit For
End If
Next
active une autre macro

- je faisais ma recherche sur A1 mais maintenant la recherche peut se faire sur le nom de la feuille donc si ça vous arrange vous pouvez modifier.
- quand je lance la macro avec une référence ne correspondant à aucune feuille existante, je n'ai aucune erreur et pire la macro se poursuit et je me retrouve avec des données écrites mais sur la feuille qui était active à l'ouverture. du coup cetet feuille là comprend des données qui ne devraient pas être présentes.

donc je ne sais pas comment modifier le code pour que ça m'alerte que la feuille n'existe pas et donc que la macro s'arrête.
Si vous pouviez m'aider.

2 réponses

Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
103
Bonjour Nico,

Tu peux utiliser la fonction ci-dessous pour savoir si la feuille appelée StrName existe

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 

Bonjour et merci de m'aider
par contre je ne sais pas comment utiliser cette fonction. je l'ai collée dans un module mais j'imagine que je dois l'appeler depuis le code que j'ai collé dans mon message initial ?!
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
103
Oui, tu appelles simplement en faisant :

if IsWorkSheet("NomDetaFeuille") then
  --Je fais le code si elle existe
else
--Je renvoie un message par exemple
end if 

ah oui effectivement ça fonctionne mieux et c'est plus simple que ce que j'avais notamment pour la condition.
Merci beaucoup, ça m'enlève uen épine du pied
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
103
Avec plaisir. Par souci d'aide aux personnes qui auront peut-être le même problème que toi, penses à noter ce post en résolu :)