Vérifier existence d'une feuille

Résolu/Fermé
nico - 9 sept. 2011 à 11:13
Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 - 9 sept. 2011 à 14:40
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.
A voir également:

2 réponses

Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 102
9 sept. 2011 à 11:21
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 

0
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 ?!
0
Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 102
9 sept. 2011 à 13:27
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 

0
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
0
Heremion Messages postés 539 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 1 juin 2022 102
9 sept. 2011 à 14:40
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 :)
0