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

Signaler
-
 Thanks -
Bonjour à tous
Existe t'il en VBA, un moyen de savoir si une feuille nommée "toto" (par exemple) existe dans un classeur ?
Merci

6 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 104
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
35
Merci

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez Comment Ça Marche

CCM 56904 internautes nous ont dit merci ce mois-ci

plus 1 an encore ... Merci
meci pourn le code meme en 2017 il est aide
2018 ... Merci ;)
2020.. Merci ! :)
Messages postés
27
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
4 décembre 2010
53
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 ;)
Messages postés
6
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
12 avril 2011
13
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
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
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
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 104
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
Messages postés
130
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

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