Avec Excel, vérifier l'existance d'une feuill [Résolu/Fermé]

- - Dernière réponse :  Valou - 28 août 2019 à 17:07
Bonjour à tous
Existe t'il en VBA, un moyen de savoir si une feuille nommée "toto" (par exemple) existe dans un classeur ?
Merci
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3657
33
Merci
bonjour

avec ma boucle, dès que ma fonction rencontre la feuille 3 par exemple il plante car elle n'existe pas.

L'on ne sait absolument pas ce à quoi sert ta boucle mais elle ne part sûrement pas sur un algorithme approprié puisqu'elle ne fonctionne pas. Quelque chose comme ceci devrait fonctionner :
Sub sel_feuilles()
Dim i as integer
For i = 1 to  Worksheets.Count
    If Worksheets(i).Name = "mon test" Then
        ' "mon code"
    Else
        '  "mon autre code"
    End If
Next i
End Sub

Dire « Merci » 33

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 60111 internautes nous ont dit merci ce mois-ci

plus 1 an encore ... Merci
plus 1 an encore ... Merci
meci pourn le code meme en 2017 il est aide
2018 ... Merci ;)
Messages postés
27
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
4 décembre 2010
53
10
Merci
J'ai mieux qu'une boucle ou l'utilisation de gestion d'erreurs pour vérifier si une feuille existe.

La fonction suivante retourne la valeur "Vrai" si la feuille n'existe pas.

Public Function FeuilleInexistante (ByVal strNomFeuille As String) As Boolean
'Retourne TRUE si strNomFeuille est le nom d'une feuille qui n'existe pas dans le classeur actif

FeuilleInexistante = IsError(Evaluate("='" & strNomFeuille & "'!A1"))

End Function

Insérez la dans un module de votre classeur Excel, puis appelez la depuis l'une de vos macro en lui passant en paramètre le nom de votre feuille, comme par exemple cette macro qui affiche un message :

dim strNomFeuille as String

strNomFeuille = "nom de ma feuille"

if FeuilleInexistante (strNomFeuille ) then MsgBox "Cette feuille n'existe pas dans le classeur " & ThisWorkbook.Name


Bonne chance ;)
slyleglobetrotter
Messages postés
6
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
12 avril 2011
12 -
Salut Jacknight,

Ta méthode fonctionne super bien, merci mais que faudrait il ajouter pour qu'elle fonctionne pour une feuille et une feuille "graphique" ?

Merci
Sans créer de fonction, mais selon le même principe:

If IsError(Evaluate("='" & strNomFeuille & "'!A1")) = True Then

MsgBox "Cette feuille n'existe pas dans le classeur "

Else

MsgBox "ok"

End If
1
Merci
Je souhaiterais modifier ma demande précèdente.
Existe t'il en vba le moyen de supprimer les feuilles d'un classeur qui ne sont pas nommées toto ou titi (par exemple) ? MERCI A L'AVANCE
1
Merci
Bonjour,


La solution est pour tester l'existance d'un feuille:

If Not (IsError(Sheets("Feuil1"))) Then
Application.DisplayAlerts = False
Sheets("Feuil1").Delete
Application.DisplayAlerts = True
End If
Chez moi, si la feuille n'existe pas, la macro renvoie:

"Erreur d'exécution '9': L'indice n'appartient pas à la sélection"
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3657
0
Merci
bonjour

Cette macro devrait répondre à ta demande :

Sub sup_feuilles()
' suppression des feuilles
dim i,j as integer
dim codfeu as string
codfeu = "t?t?"
Application.DisplayAlerts = False
j = Worksheets.Count
i = 1
Do Until j < i
If InStr(1, Worksheets(i).Name, codfeu) = 0 Then
' suppression feuille si le nom ne comporte pas le "code feuille"
Worksheets(i).Delete
j = j - 1
Else
i = i + 1
End If
Loop
Application.DisplayAlerts = True
End Sub


Elle ne garde que les feuilles nommées titi ou toto ou tztz
en raison du "?".

pour d'autres noms il faut changer le paramètre "codfeu"

Salut!
J'ai un besoin similaire: je cherche à faire une macro qui supprime des feuilles "Année1", "Année2" sachant que le nombre de ces feuilles est une variable. J'ai essayé votre macro mais elle ne fait rien (pas de message d'erreur mais pas de modification dans Excel). Avez vous une explication?
Voilà ma macro:

Sub sup_feuilles()
Dim i, j As Integer
Dim codfeu As String
codfeu = "Année?"
Application.DisplayAlerts = False
j = Worksheets.Count
i = 1
Do Until j < i
If InStr(1, Worksheets(i).Name, codfeu) = 1 Then
Worksheets(i).Delete
j = j - 1
Else
i = i + 1
End If
Loop
Application.DisplayAlerts = True
End Sub
licool
Messages postés
133
Date d'inscription
lundi 23 janvier 2006
Statut
Membre
Dernière intervention
6 juillet 2009
76 > maksym92 -
Salut,

essayes ça :

Sub Supr_feuil()
For Ctr = Sheets.Count To 1 Step -1
If Sheets(Ctr).Name Like "Année*" Then
SendKeys ("{ENTER}")
Sheets(Ctr).Delete
End If
Next
End Sub
0
Merci
Bonjour,

je realise une boucle sur chaque feuille de mon classeur mais celles ci sont nommés Feuil+un chiffre qui ne sont pas consecutifs (ex : feuil1, feuil2, feuil5, feuil15, etc... mais organiséés tout de meme par ordre croissant.

je souhaiterai tester chaque feuille de mon classeur mais avec ma boucle, dès que ma fonction rencontre la feuille 3 par exemple il plante car elle n'existe pas.

quelqu'un pourrait m'aider svp??
merci