Contrôler l'existence d'une feuille (masquée ou non) dans un classeur

hagakure69100

XLDnaute Nouveau
Bonjour,

j'avais trouvé cette fonction, qui me semblait, fonctionnait, mais en fait non auriez vous une idée du pourquoi, et une solution s'il vous plaît ?

Code:
Function WsExist(WsName As Variant) As Boolean
    Dim shFound As Worksheet
    On Error Resume Next
    Set shFound = Sheets(WsName)
    If (Err.Num <> 0) Then
        WsExist = False
    Else
        WsExist = True
    End If
    On Error GoTo 0
End Function

et ensuite dans ma macro, je l'utilise de la manière suivante :
Code:
'Fonction qui permet de vérifier la présence de la future nouvelle feuille
If WsExist(num_new_family) = True Then
    MsgBox ("the family " & num_new_family & " already exists.")
    Select Case MsgBox("Do you want to copy all the data of family " & num_old_family & " to Family " & num_new_family & " and overwrite the data of this family ?", vbYesNo + vbQuestion + vbDefaultButton2, "Comparison")
        Case vbYes
            GoTo line_deb_split
        Case vbNo
            Exit Sub
    End Select
    Else: MsgBox ("la famille n'existe pas" & num_new_family)
End If

J'ai affiché la feuille num_new_family avant d'utiliser la fonction mais ça ne change rien...

Je vous remercie d'avance pour vos réponses.
 

Papou-net

XLDnaute Barbatruc
Re : Contrôler l'existence d'une feuille (masquée ou non) dans un classeur

Bonjour hagakure69100,

Peut-être comme ceci :

Code:
Function WsExist(WsName As Variant) As Boolean
    Dim shFound As Worksheet
    On Error Resume Next
    Set shFound = Sheets(WsName)
    If shFound Is Nothing Then
        WsExist = False
    Else
        WsExist = True
    End If
    On Error GoTo 0
End Function
Sub macro1()
'Fonction qui permet de vérifier la présence de la future nouvelle feuille
If WsExist("num_new_family") = True Then
    MsgBox ("the family " & num_new_family & " already exists.")
    Select Case MsgBox("Do you want to copy all the data of family " & num_old_family & " to Family " & num_new_family & " and overwrite the data of this family ?", vbYesNo + vbQuestion + vbDefaultButton2, "Comparison")
        Case vbYes
            MsgBox "Trouvé"
        Case vbNo
            Exit Sub
    End Select
    Else: MsgBox ("la famille n'existe pas" & num_new_family)
End If
End Sub

Espérant avoir répondu.

Cordialement.
 

hagakure69100

XLDnaute Nouveau
Re : Contrôler l'existence d'une feuille (masquée ou non) dans un classeur

Bonsoir,

merci pour la réponse, pas encore eu le temps de le tester, je le ferai demain matin, ayant passé ma journée à débugger et améliorer d'autres points.

Bref, merci au courant, et je vous dis ce qu'il en est demain.

Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 758
Messages
2 091 788
Membres
105 074
dernier inscrit
JPATOUNE