Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment connaître le nom d'un onglet?

38 réponses
Avatar
lematou
bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier . XLS

merci beaucoup et bonne soirée

Jacks

10 réponses

1 2 3 4
Avatar
Jacky
Re...
Heu !
Dans Mon code 1, je ne sélectionne pas de feuille, je teste seulement si
elle existe, bien sûr , pas très pro.
Mais je rappelle quand même la demande initiale:
<...tester la présence d'un onglet dans un fichier ....

et j'ai aussi dit/écrit:
Je m'incline et me rallie volontiers à ces explications.
Merci.
et je confirme.


--
Salutations
JJ

"Pierre Fauconnier" a écrit dans le
message de news:
Salut

Joute intéressante, en tout cas pour moi

Je rappelle que dans ton cas, tu testes une feuille en la sélectionnant,
ce qui peut être gênant pour la suite du code

Imaginons un cas, d'école donc tordu...

Tu veux copier A1 de la feuille active dans la cellule B2 d'une feuille
Feuil3
Range("a1").copy destination:=worksheets("feuil3").range("b2")

Maintenant, tu veux le faire uniquement si la feuille Feuil2 existe. Avec
ton code, tu copieras A1 de Feuil2 !!! Et pour éviter cela, tu devras
retenir, dans une variable, le nom de la feuille active pour pouvoir la
réactiver après ton test... :-(((((

Si AV considère que boucler sur toutes les feuilles n'est pas propre, je
suppose qu'il sera d'accord pour dire que ton code, question propreté...
:-))

Bonne soirée






Avatar
lematou
Bonsoir à tous
et grand merci à vous tous, j'ai testé vos propositions elles sont géniales,
j'ai sélectionné la plus courte et la plus simple
On Error Resume Next
Sheets(Ongl).Select
If Err > 0 Then
Sheets.Add
Sheets(Ongl).Select
Else
MsgBox "Déjà présente..."
End If
Merci bonne soirée
Jacks



bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier . XLS

merci beaucoup et bonne soirée

Jacks


Avatar
Pierre Fauconnier
Salut Jacky

Au temps pour moi, j'ai confondu deux procs....


"Jacky" a écrit dans le message de news:

Re...
Heu !
Dans Mon code 1, je ne sélectionne pas de feuille, je teste seulement si
elle existe, bien sûr , pas très pro.
Mais je rappelle quand même la demande initiale:
<...tester la présence d'un onglet dans un fichier ....

et j'ai aussi dit/écrit:
Je m'incline et me rallie volontiers à ces explications.
Merci.
et je confirme.


--
Salutations
JJ

"Pierre Fauconnier" a écrit dans le
message de news:
Salut

Joute intéressante, en tout cas pour moi

Je rappelle que dans ton cas, tu testes une feuille en la sélectionnant,
ce qui peut être gênant pour la suite du code

Imaginons un cas, d'école donc tordu...

Tu veux copier A1 de la feuille active dans la cellule B2 d'une feuille
Feuil3
Range("a1").copy destination:=worksheets("feuil3").range("b2")

Maintenant, tu veux le faire uniquement si la feuille Feuil2 existe. Avec
ton code, tu copieras A1 de Feuil2 !!! Et pour éviter cela, tu devras
retenir, dans une variable, le nom de la feuille active pour pouvoir la
réactiver après ton test... :-(((((

Si AV considère que boucler sur toutes les feuilles n'est pas propre, je
suppose qu'il sera d'accord pour dire que ton code, question propreté...
:-))

Bonne soirée










Avatar
Pierre Fauconnier
Rejeté... :-)))

Si une feuille graphe porte le nom qui fait l'objet du test, err sera
différent de 0 et tu conclueras que la feuille nommée n'existe pas...alors
qu'elle existe...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"dm" a écrit dans le message de news:

Pour une question de propreté, moi j'obterais pour :
;-))

'-------------------------
Function FeuilExist(Wk as workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------
Sub test()
MsgBox FeuilExist("toto toto")
End Sub
'-------------------------

ET POUR PLUS DE PRÉCISIONS :
'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub
'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------








"lematou" a écrit dans le message de
news:

bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier .
XLS

merci beaucoup et bonne soirée

Jacks




Avatar
Pierre Fauconnier
Tant qu'à être chiant jusqu'au bout...

Pense aux feuilles masquées


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"lematou" a écrit dans le message de
news:
Bonsoir à tous
et grand merci à vous tous, j'ai testé vos propositions elles sont
géniales,
j'ai sélectionné la plus courte et la plus simple
On Error Resume Next
Sheets(Ongl).Select
If Err > 0 Then
Sheets.Add
Sheets(Ongl).Select
Else
MsgBox "Déjà présente..."
End If
Merci bonne soirée
Jacks



bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier .
XLS

merci beaucoup et bonne soirée

Jacks




Avatar
dm
La meilleure forme générique serait alors celle-ci :
;-)

'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub

'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Object
On Error Resume Next
Set Sh = Wk.Sheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------




"Pierre Fauconnier" a écrit dans le message de news:

Rejeté... :-)))

Si une feuille graphe porte le nom qui fait l'objet du test, err sera
différent de 0 et tu conclueras que la feuille nommée n'existe pas...alors
qu'elle existe...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"dm" a écrit dans le message de news:

Pour une question de propreté, moi j'obterais pour :
;-))

'-------------------------
Function FeuilExist(Wk as workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------
Sub test()
MsgBox FeuilExist("toto toto")
End Sub
'-------------------------

ET POUR PLUS DE PRÉCISIONS :
'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub
'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------








"lematou" a écrit dans le message de
news:

bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier .
XLS

merci beaucoup et bonne soirée

Jacks




Avatar
Pierre Fauconnier
C'est vrai que les différents cas exposés ont permis de créer une fonction
qui SEMBLE renvoyer toujours le bon résultat...

Mais c'est un question de philosophie, en fait...

Personnellement, je n'aime pas tirer la conclusion suivante:
Il y a eu une erreur (parmi une multitude d'erreurs possibles que je ne
teste pas) DONC la feuille existe.
On a vu plus haut que pour pouvoir dire cela, il faut envisager tous les cas
possibles (dans le cas présent, le type de feuille, le nom avec ou sans
espaces, une feuille cachée ou non, ...) pour être certain que si erreur il
y a (err <>0), ALORS c'est que la feuille n'existe pas.

Autre question de philosophie. On peut bien sûr interdire à l'utilisateur de
nommer des onglets avec des espaces (très mauvaise habitude?) et de masquer
des feuilles. Tant qu'on y est, pour ne pas douter sur une feuille graphe ou
feuille de calcul, imposons-leur de nommer leurs graphes en commençant par
g_ et leurs feuilles de calcul avec c_ ...

:-))


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"dm" a écrit dans le message de news:
u%
La meilleure forme générique serait alors celle-ci :
;-)

'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub

'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Object
On Error Resume Next
Set Sh = Wk.Sheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------




"Pierre Fauconnier" a écrit dans le
message de news:

Rejeté... :-)))

Si une feuille graphe porte le nom qui fait l'objet du test, err sera
différent de 0 et tu conclueras que la feuille nommée n'existe pas...alors
qu'elle existe...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"dm" a écrit dans le message de news:

Pour une question de propreté, moi j'obterais pour :
;-))

'-------------------------
Function FeuilExist(Wk as workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------
Sub test()
MsgBox FeuilExist("toto toto")
End Sub
'-------------------------

ET POUR PLUS DE PRÉCISIONS :
'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub
'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------








"lematou" a écrit dans le message de
news:

bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier .
XLS

merci beaucoup et bonne soirée

Jacks









Avatar
Pierre Fauconnier
Hum... suis-je chi...?

Avec ta fonction, si tu passes un objet wk valide (thisworkbook par exemple)
et un nom de feuille inexistante, ta fonction génère une erreur 9 (L'indice
n'appartient pas à la sélection), ta fonction renvoie FALSE et tu conclus de
façon correcte que la feuille n'existe pas.

Si l'objet Wk est NOTHING (oubli d'affectation, ...) ta fonction génèrera
une erreur 91 (Variable objet ou variable de bloc With non définie),
renverra FALSE et tu concluras improprement que ta feuille n'existe pas...

AV me demandait
C'est pourquoi j'évite de tester des erreurs car il faut alors tester le
numéro de l'erreur,


** Pourquoi donc ?

Voilà pourquoi!!!

Bon week-end.


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"dm" a écrit dans le message de news:
u%
La meilleure forme générique serait alors celle-ci :
;-)

'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub

'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Object
On Error Resume Next
Set Sh = Wk.Sheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------




"Pierre Fauconnier" a écrit dans le
message de news:

Rejeté... :-)))

Si une feuille graphe porte le nom qui fait l'objet du test, err sera
différent de 0 et tu conclueras que la feuille nommée n'existe pas...alors
qu'elle existe...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"dm" a écrit dans le message de news:

Pour une question de propreté, moi j'obterais pour :
;-))

'-------------------------
Function FeuilExist(Wk as workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------
Sub test()
MsgBox FeuilExist("toto toto")
End Sub
'-------------------------

ET POUR PLUS DE PRÉCISIONS :
'-------------------------
Sub test()
MsgBox FeuilExist(ThisWorkbook, "toto toto")
End Sub
'-------------------------
Function FeuilExist(Wk As Workbook, Nom As String) As Boolean
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Wk.Worksheets(Nom)
If Err = 0 Then FeuilExist = True
End Function
'-------------------------








"lematou" a écrit dans le message de
news:

bonsoir à tous

existe t il un moyen de tester la présence d'un onglet dans un fichier .
XLS

merci beaucoup et bonne soirée

Jacks









Avatar
AV
Re,

Si je ne peux qu'être d'accord sur l'aspect générique d'une boucle pour tester
l'existence/non existence d'une feuille, je ne vois pas en quoi le type (N°)
d'erreur peut avoir une quelconque importance dans la proposition avec Evaluate
:

Function existF(nomF) As Boolean 'test de non existence
existF = Evaluate("iserror('" & nomF & "'!A1)")
End Function

PS : je ne pense pas non plus que XL ait à boucler pour renvoyer le résultat de
la fonction....
Bon... tout ça c'est juste pour le smilblick

AV
Avatar
Pierre Fauconnier
Ben...

existf("Feuil1") me renvoie FALSE alors que feuil1 existe... ce qui est
contradictoire avec le nom de la fonction. L'utilisateur lambda de ta
fonction s'attend (sans voir le commentaire ' test de non existence) à ce
que la fonction s'appelant existf renvoie True si la feuille existe et False
si elle n'existe pas, me semble-t'il

Existf(NomF) passe en débogage si NomF pointe vers un graphe

??


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"AV" a écrit dans le message de news:

Re,

Si je ne peux qu'être d'accord sur l'aspect générique d'une boucle pour
tester l'existence/non existence d'une feuille, je ne vois pas en quoi le
type (N°) d'erreur peut avoir une quelconque importance dans la
proposition avec Evaluate :

Function existF(nomF) As Boolean 'test de non existence
existF = Evaluate("iserror('" & nomF & "'!A1)")
End Function

PS : je ne pense pas non plus que XL ait à boucler pour renvoyer le
résultat de la fonction....
Bon... tout ça c'est juste pour le smilblick

AV




1 2 3 4