OVH Cloud OVH Cloud

tester existence feuille

4 réponses
Avatar
serge
Bonjour a tous,

comment fait-on pour tester l'existence d'une feuille sosu VBA?

merci d'avance.

Serge

4 réponses

Avatar
denis le breton
dans la procédure
...
' activation du fichier et test de l'existence de la feuille
Workbooks(fic).Activate
Dim WS As Worksheet
On Error Resume Next
Set WS = Workbooks(nomdemon fichier).Worksheets(nomdemafeuille)
...
suite de la procédure
...
Next

en espérant avoir répondu à ton attente
A+
Denis
PS le soleil se maintient


Bonjour a tous,

comment fait-on pour tester l'existence d'une feuille sosu VBA?

merci d'avance.

Serge


Avatar
anomymousA
bonjour,

pour compléter la réponse de denis, un petit peu d'explication. Qaund Denis
écrit "on error resume next", ceci va permettre au programme de continuer à
se dérouler même en cas d'erreur et ce en ne tenant pas compte de la ligne
qui a généré celle-ci.
En effet, dans le programme qui t' a été transmis, quand on écrit Set WS =
Workbooks(nomdemon fichier).Worksheets(nomdemafeuille) et que la feuille
nomdemafeuille n'existe pas, il se produit une erreur.
Grace à on error resume next, le programme va continuer quand même, il te
faut donc gérer le on error en écrivant une remise à zéro de l'objet err.

Le + souvent utilisé est d'écrire une fonction booleenne p.e nommée
Existsheet qui retournera true si la feuille existe dans le workbook
spécifié. Tu feras alors le test de la valeur booleenne de la fonction
appelée pour décider ce que tu fais.
Exemple suivant:

Sub essai()

'essai par exemple sur une feuille appelée rencontre dans le classeur actif

If existsheet(ActiveWorkbook, "rencontre") Then
MsgBox "existe"
Else
MsgBox "n'existe pas"
End If

End Sub

Function existsheet(wb As Workbook, ws As String) As Boolean

On Error Resume Next
Set wse = wb.Sheets(ws)

If Err.Number <> 0 Then
Err.Clear
Exit Function
End If

existsheet = True

End Function

l'interet majeur de l'utilisation d'une fonction à cet effet, c'est que
d'une part tu peux la réutiliser à loisir dans n'importe quelle module ou
l'ensemble du classeur en la déclarant Public et d'autre part la gestion
particulière des erreurs que tu peux avoir déclaré dans ta procédure
appelante reste valide bien que dans la fonction on ait déclaré un on error
resume next qui serait donc une autre manière de gérer l'erreur.

A+


Bonjour a tous,

comment fait-on pour tester l'existence d'une feuille sosu VBA?

merci d'avance.

Serge


Avatar
denis le breton
Merci aA de cette précision qui m'en apprend encore plus
Cordialement
Denis


bonjour,

pour compléter la réponse de denis, un petit peu d'explication. Qaund Denis
écrit "on error resume next", ceci va permettre au programme de continuer à
se dérouler même en cas d'erreur et ce en ne tenant pas compte de la ligne
qui a généré celle-ci.
En effet, dans le programme qui t' a été transmis, quand on écrit Set WS =
Workbooks(nomdemon fichier).Worksheets(nomdemafeuille) et que la feuille
nomdemafeuille n'existe pas, il se produit une erreur.
Grace à on error resume next, le programme va continuer quand même, il te
faut donc gérer le on error en écrivant une remise à zéro de l'objet err.

Le + souvent utilisé est d'écrire une fonction booleenne p.e nommée
Existsheet qui retournera true si la feuille existe dans le workbook
spécifié. Tu feras alors le test de la valeur booleenne de la fonction
appelée pour décider ce que tu fais.
Exemple suivant:

Sub essai()

'essai par exemple sur une feuille appelée rencontre dans le classeur actif

If existsheet(ActiveWorkbook, "rencontre") Then
MsgBox "existe"
Else
MsgBox "n'existe pas"
End If

End Sub

Function existsheet(wb As Workbook, ws As String) As Boolean

On Error Resume Next
Set wse = wb.Sheets(ws)

If Err.Number <> 0 Then
Err.Clear
Exit Function
End If

existsheet = True

End Function

l'interet majeur de l'utilisation d'une fonction à cet effet, c'est que
d'une part tu peux la réutiliser à loisir dans n'importe quelle module ou
l'ensemble du classeur en la déclarant Public et d'autre part la gestion
particulière des erreurs que tu peux avoir déclaré dans ta procédure
appelante reste valide bien que dans la fonction on ait déclaré un on error
resume next qui serait donc une autre manière de gérer l'erreur.

A+


Bonjour a tous,

comment fait-on pour tester l'existence d'une feuille sosu VBA?

merci d'avance.

Serge




Avatar
Aurélien29
Salut,
autre solution sans générer d'erreur:
sub test(nom_page)

for page to sheets.count
if sheets(page).name=nom_page then
msgbox("la feuille existe")
end if
next page


Bonjour a tous,

comment fait-on pour tester l'existence d'une feuille sosu VBA?

merci d'avance.

Serge