Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…