Fonction NameExists

Résolu
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 25 juil. 2006 à 10:53
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 25 juil. 2006 à 12:05
Bonjour, j'ai trouvé une fonction qui devrait me permettre de me dire si un nom a été défini ou non dans mon workbook... mais ca ne fonctionne pas...
Où se trouve l'erreur ? Merci pour votre aide.

Function NameExists(TheName As String) As Boolean
On Error Resume Next
NameExists = Len(ThisWorkbook.Names(TheName).Name) <> 0
End Function

Sub test3()
If NameExists("nom1") = True Then
MsgBox ("Le nom existe.")
End If
End Sub

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 juil. 2006 à 11:00
Salut,
Soit plus précis car les "Ca ne fonctionne pas" , ne nous éclaire pas trop.
 Quel est ton message d'erreur si il y en a un.
Je viens de tester le code que tu viens de mettre et il fonctionne chez moi.

J ai creer un nom et ensuite j ai teste avec le nom cree et un autre, et il a bien donner les résultats que MOI je pense bon .
D'ou la necessité d'être plus précis.

@+, Julien
Pensez: Règlement,Réponse Acceptée, Moteur de recherche
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
25 juil. 2006 à 11:01
Salut
je viens de tester ton code et ça fonctionne très bien!

 Drikce 06
3
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
25 juil. 2006 à 12:05
Bon j'ai trouvé une fonction qui veut bien tourner dans mon workbook...


Private Function RangeNameExists(nname) As Boolean
'   Returns TRUE if the range name exists
    Dim n As Name
    RangeNameExists = False
    For Each n In ActiveWorkbook.Names
        If UCase(n.Name) = UCase(nname) Then
            RangeNameExists = True
            Exit Function
        End If
    Next n
End Function


Sub test3()
If RangeNameExists("nom1") Then
MsgBox ("le nom existe.")
End If
End Sub
3
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
25 juil. 2006 à 11:24
oui, vous avez raison ca fonctionne.
Je viens de faire comme vous, c'est à dire j'ai créé sur un nouvelle feuille un nom et j'ai testé la fonction, ca marche parfaitement...
Je viens de faire des tests, et en fait la focntion ne fonctionne pas si le code si dessus se trouve sur un workbook où il y a déjà ma macro générale.

Il n'ya pas de message d'erreur, mais c'est comme si il ne trouvait pas le nom1..

Et par exemple si je change la ligne en mettant 
 If NameExists("nom1") = False Then

Là ça me renvoie la MsgBox !!! Bizarre, non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 juil. 2006 à 11:27
Non c'est pas bizarre c'est Normal, car t'as fonction renvoie toujours False. donc il te lance la Msgbox a chaque fois.

@+, Julien
Pensez: Règlement,Répo
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
25 juil. 2006 à 11:31
non, je veux dire, ce qui est bizarre, c'est que dès que ce code se trouve dans mon workbook où se trouve me macro générale, ça ne veut plus fonctionner.., alors que si j'ouvre un  nouveau workbook et que je l'utilise tout va bien.
0
Rejoignez-nous