Problème déclaration variable

Bonjour,

J'ai un souci avec un morceau de code que je n'arrive pas à resoudre. ce code me sert a vérifier si le nom de feuille existe déja.

Voila le code:

Dim Nom As Variant 'si feuil exist
 Nom = TextBox_nomfeuille 'valeur à tester
 If TestOnglet(Nom) = True Then
    MsgBox "La feuille " & Nom & " éxiste déja."

Avec ce code, j'ai le message suivant:

erreu de compilation

Type d'argument ByRef incompatible

J'ai essayer alors en changeant le code en mettant ça:

Dim Nom As String'si feuil exist
 Nom = TextBox_nomfeuille 'valeur à tester
 If TestOnglet(Nom) = True Then
    MsgBox "La feuille " & Nom & " éxiste déja."

ce code fonctionne mais uniquement quand ma feuille est nomé qu'avec du texte.

j'ai essayer aussi "integer"! mais pas mieux!

Le nom de mes feuilles est composé de texte, de ²..

Avez vous une solution SVP merci d'avance.

Salut !

A tester :

Dim Nom As Worksheet 'si feuil exist
Set Nom = TextBox_nomfeuille.Value 'valeur à tester

 If Sheets.Name = Nom Then

    MsgBox "La feuille " & Nom & " éxiste déja."

 End If

Bonne soirée !

Bonjour,

une fonction qui te retourne le n° d'index si la feuille existe, 0 (False) sinon.

Function existSheet(nomFeuille As String) As Long
    On Error Resume Next
    existSheet = Sheets(nomFeuille).Index
End Function

eric

Bonjour et merci tout les deux pour vos réponses.

Floo73, j'ai essayé ta méthode, mais j'ai un retour "erreur de compilation Membre de méthode ou de données introuvable.

If Sheets.Name = Nom Then

Eriic, le code ou j'ai le problème, n'est qu'un morceau de code. Mon vrai code est plus long. Du coup, je n'arrive pas à intégrer ton code au mien. de plus, je n'ai pas de message en retour " la feuille existe déjà."

Tu écris la fonction à part, dans un module standard si elle doit être appelée de plusieurs modules.

Dim Nom As String'si feuil exist
Nom = TextBox_nomfeuille 'valeur à tester
If existSheet(Nom) Then
    MsgBox "La feuille " & Nom & " éxiste déja."

Essaie de typer correctement tes variables...

eric

Rien a faire, ça ne passe pas!!

j'ai essayer de mettre le code dans un module, et j'ai le même résultat:

"erreur de compilation sub ou fonction non définie.

If existSheet(Nom) Then

je comprends pas ce qu'il se passe!!

que veux tu dire par "essaye de bien typer tes variables"??

Tu mets Dim Nom As Variant

or Nom doit recevoir une chaine et rien d'autre. Type-là as String.

Voir fonction dans fichier joint

eric

25classeur6.zip (7.19 Ko)

Salut Eriic,

merci pour ta reponse.

Ton code fonctionne lorsque le nom de l'onglet est composé uniquement de texte. Par contre lorsque ce n'est pas le cas, par exemple : RO2V 4x4²

le ca ne fonctionne pas!

C'est ce qu'il se passat deja avec mon code.

Re bonjour,

Toutes mes excuses Eriic, ton code fonctionne parfaitement!! c'est moi qui avait une erreur dans ma base par rapport au nom d'un onglet.

Je te remercie beaucoup.

Bonne journée.

Rechercher des sujets similaires à "probleme declaration variable"