Vérifier si une plage est définie par un nom [VBA]

Rep

XLDnaute Junior
Bonjour à tous !

Je bute depuis hier sur un test VBA tout bête : je souhaite savoir si la colonne D de ma feuille a un nom.

J'ai tenté :
Code:
If ThisWorkbook.Sheets("feuil1").Range("D:D").Name.Name = "" Then
    current_date = ""
Else
    current_date = Sheets("feuil1").Range("D:D").Name.Name
    current_date = CStr(Right(current_date, 8))
End If

Mais VBA me renvoit une erreur 1004. J'ai pensé à utiliser la fonction IsError, mais résultat idem.

Si une âme charitable pouvait m'aider, je l'en remercie par avance ;)
 

job75

XLDnaute Barbatruc
Re : Vérifier si une plage est définie par un nom [VBA]

Bonjour Rep,

Vous pouvez adapter cette macro :

Code:
Sub RechercheNom()
Dim nom As Name, dat As String
For Each nom In ThisWorkbook.Names
  If nom.RefersTo = "=" & ActiveSheet.Name & "!$D:$D" Then
    MsgBox "Nom de la colonne D : " & nom.Name
    'dat = Right(nom.Name, 8) 'éventuellement...
    'MsgBox dat
  End If
Next
End Sub
Notez qu'une plage peut avoir plusieurs noms...

Edit : bien sûr aussi, si la feuille s'appelle "Feuil1" :

Code:
Sub RechercheNom()
Dim nom As Name, dat As String
For Each nom In ThisWorkbook.Names
  If nom.RefersTo = "=Feuil1!$D:$D" Then
    MsgBox "Nom de la colonne D : " & nom.Name
    'dat = Right(nom.Name, 8) 'éventuellement...
    'MsgBox dat
  End If
Next
End Sub
A+
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Vérifier si une plage est définie par un nom [VBA]

Bonjour Rep, job :)

Une variante (juste parce que j'étais "dessus"):
Code:
    For Each n In ActiveWorkbook.Names
        If Mid(n.RefersTo, InStr(n.RefersTo, "!") + 1, 2) = "$D" Then MsgBox n.Name
    Next n
Permet de tester si la référence commence par $D ... attention au cas où le '$' serait absent!?
 

Rep

XLDnaute Junior
Re : Vérifier si une plage est définie par un nom [VBA]

Merci pour vos réponses.

C'est quasiment ce que je cherchais, merci ;)

N'y a-t-il pas moyen d'éviter de passer par une boucle? Le fichier que je crée devrait avoir un certain nombre de noms définis lorsqu'il sera opérationnel et l'utilisation du For ... Each risque de sérieusement ralentir l'exécution de la macro...
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94