Bonjour, je souhaite tester si une feuille existe

V

viniboy

Guest
Bonjour à toutes et à tous,

Je cherche à tester que la feuille nommé feuil3 existe dans mon document. Si elle n'existe pas, cela arrete le programme et renvoie une msgbox expliquant le probleme. Cette formule que j'ai trouvée sur un site ne fonctionne pas chez moi (excel 2000) si la feuille n'existe pas, cela renvoie une erreur d'execution 9 'l'indice n'appartient pas à la selection'.

Voila le code:
Dim Feuille_remplissage_etudes as string
Feuille_remplissage_etudes = feuil3
'Début des tests de conformité des données
'teste si la feuille de remplissage existe
Worksheets(Feuille_remplissage_etudes).Select
If Err <> 0 Then
MsgBox ('Le programme va s'arreter. Vous devez d'abord créer une feuille de remplissage dans le bilan')
Exit Sub
End If

Merci beaucoup à tous de votre aide!
Cordialement,
Vincent
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Vinboy, le Forum

Le mieux étant de commencer par le commencement...

Voici un début :

Option Explicit
Option Compare Text

Sub TestFeuille()
Dim WS As Worksheet
Dim WSname As String
Dim Found As Boolean


WSname = InputBox('Saisir le Nom de Feuille')

For Each WS In Worksheets
&nbsp; &nbsp;
If WS.Name = WSname Then
&nbsp; &nbsp; &nbsp; &nbsp; WS.Select
&nbsp; &nbsp; &nbsp; &nbsp; Found =
True
&nbsp; &nbsp;
End If
Next

If Not Found Then MsgBox 'Feuille : ' & WSname & ' Non Trouvée'

End Sub

Cette macro va boucler sur toutes les feuilles, si la feuille existe elle sera sélectionnée, sinon tu auras un message...

Une méthode plus rapide serait de générer une erreur et de la récupérer, mais comme j'ai dit, vaut mieux commencer par le début...

Bonne Soirée
@+Thierry
 

ChTi160

XLDnaute Barbatruc
Re:Bonjour, je souhaite tester si une feuille exis

Salut vinboy
bonjour @+Thierry
bonjour le Forum

@+Thierry dit
Une méthode plus rapide serait de générer une erreur et de la récupérer
@+Thierry
je ne sais pas si tu le sais mais tu es très interressant pour les débutants
pourrais tu donc, m'expliquer avec un exemple cette façon de Faire ' récupérer une erreur ' suite à l'existance d'une feuille
merci d'avance
Bonne Journée

Message édité par: ChTi160, à: 22/07/2005 08:35
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Bonjour, je souhaite tester si une feuille exis

Bonjour Jean-Marie, Pyrof, VinBoy, le Forum

Très bien Pyrof, il est tout à fait juste de faire cet 'Exit For' dans ce type de boucle, j'aurais dû le préciser à VinBoy, surtout pour lui donner 'les bonnes habitudes' dès le départ, donc merci à toi pour lui.


Pour ce qui est de 'générer une erreur' et de la récupérer c'est un peu ce que Vinboy a trouvé comme code plus haut.

Sub OutIfNotFound()

On Error GoTo Out
Sheets(InputBox('Saisir le Nom de Feuille')).Select
Exit Sub
Out:
MsgBox 'Feuille Non Trouvée'
End Sub

Les puristes feraient de ceci un Function Boolean... (Voir Ti par exemple)

Bonne Journée
@+Thierry


EDITION !!!

Et sans être puriste ni puritain (lol)

Je me risque à cette function ;)

Sub Testing()
&nbsp; &nbsp;
If Not OutIfNotFound(InputBox('Saisir le Nom de Feuille')) Then
&nbsp; &nbsp; &nbsp; &nbsp; MsgBox 'Feuille Non Trouvée'
&nbsp; &nbsp;
Else
&nbsp; &nbsp; &nbsp; &nbsp; MsgBox 'Feuille Trouvée'
&nbsp; &nbsp;
End If
End Sub

Function OutIfNotFound(WS As String) As Boolean
On Error GoTo Out
&nbsp; &nbsp; Sheets(WS).Select
&nbsp; &nbsp; OutIfNotFound =
True
&nbsp; &nbsp;
Exit Function
Out:
End Function

Bonne Journée
@+Thierry

Message édité par: _Thierry, à: 22/07/2005 09:19
 

Pyrof

XLDnaute Occasionnel
Re:Bonjour, je souhaite tester si une feuille exis

Pour information voici une autre façon


Code:
Sub test()
nom_feuille = 'toto'
On Error Resume Next
Sheets(nom_feuille).Select
If Err = 9 Then MsgBox 'La feuille ' & nom_feuille & ' n'existe pas'
on error goto 0
End Sub


et il y a surement d'autres méthodes .....

A+
 
V

viniboy

Guest
Re:Bonjour, je souhaite tester si une feuille exis

Franchement, merci beaucoup de votre aide, c'est beaucoup mieux encore que ce que j'esperais. Et merci Thierry pour ton aproche didactique, qui me permet de comprendre en plus, et pas juste d'écrire des lignes de code.
:p :p
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 910
Membres
103 983
dernier inscrit
AlbertCouillard