Apprentissage VBA, fonction pour vérifier l'existence d'une feuille

Bonjour, j'ai créé le code VBA suivant, le but est de laisser l'utilisateur entrer le nom d'une Sheet excel et de vérifier si la feuille en question existe dans le classeur ou non. Quand je l'essaie (en respectant bien la casse), pour "Feuil1" j'obtiens bien "vrai", mais pour les autres noms la msgbox m'affiche systématiquement "faux". Auriez-vous une idée de pourquoi?

Sub TestFonctionDSE()

Dim a As String, result As Boolean
a = InputBox("entrez le nom de la feuille à vérifier")
result = DoSheetExist(a)
MsgBox (result)

End Sub

Function DoSheetExist(ByVal Nomatester As String)

Dim i As Integer, j As Integer, boool As Boolean
i = 1
j = ThisWorkbook.Sheets.Count
boool = False

Do While i <= j
    If Nomatester = ActiveWorkbook.Sheets(i).Name Then
    boool = True
    Else
    End If
i = i + 1
Loop

DoSheetExist = boool

End Function

Bonjour,

Respectes-tu bien la casse pour le nom des onglets ? Parce que pour moi ça fonctionne bien.

Par ailleurs, tu peux rajouter un exit do une fois que tu as trouvé une correspondance, ça t'évite de boucler sur toutes les feuilles quand c'est bon.

boool = True: Exit Do

Bonjour gaeldr et

Bonjour JoyeuxNoel,

Il y a beaucoup plus simple et plus rapide en fonction

Public Function WsExist(Sheetname As String) As Boolean
  On Error Resume Next
  WsExist = Sheets(Sheetname).Index
  On Error GoTo 0
End Function

@+

Oui oui je respecte bien la casse ^^ Pour le Exit Do j'y ai pensé, puis je me suis dit que pour une boucle de quelques éléments ça n'allait pas changer grand chose... Mais oui, dans l'absolu, oui.

C'est un code que j'ai écrit sur un classeur lambda, puis je l'ai copié collé pour le mettre dans mon classeur PERSONAL, est-ce que ça pourrait être à l'origine d'un quelconque dysfonctionnement?

BrunoM45 j'ai rien compris à ton code ^^ Mon but est surtout d'apprendre le VBA, je me donne des exercices. J'vais essayer de décortiquer les différents éléments présentés dans tes quelques lignes

Bonjour à tous,

@bruno : of course, mais là ce n'était pas l'objectif voulu à priori 😁

@gaeldr : Quand tu mets j = thisworkbook... Tu demandes bien à excel d'exécuter la macro dans le classeur qui contient la macro, et pas le classeur actif. Essaie de remplacer par activeworkbook.

Pour ce qui est du code proposé par Bruno, il renvoie le numéro de la feuille cherchée. On error resume next permet de désactiver l'apparition des messages d'erreur engendrés par le fait de ne pas trouver le nom. On error goto 0 réactive la gestion des erreurs. À utiliser avec beaucoup de précautions au début, voire pas du tout dans ton cas si tu découvres le VBA.

Bonjour messieurs

Désolé je n'avais pas compris que c'était un exercice 😜😂

Bonne journée

Aaaah c'était donc ça, la nuance ThisWorkbook et ActiveWorkbook. Merci !

Rechercher des sujets similaires à "apprentissage vba fonction verifier existence feuille"