Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lister les plages

8 réponses
Avatar
Jacquouille
Bonjour
La première, trouvée sur le Net, me donne la liste des noms que j'ai encodés
via menu/insérer/nom ....
La seconde ne me donne rien, ni les noms (via menu), ni les noms via VBA
Pourquoi?
Et surtout, quelle terminologie pour lister Tous les noms (ceux issus du
menu ET de VBA)
Merci et bon WE
--------------------------
Sub nom_des_plages()
's'écrira dans la cel sélectionnée
Selection.ListNames
End Sub
------------------------------------------------
Sub Lister_noms_plages()
Dim derL As Integer
Dim derLA As Integer
Dim derLB As Integer
Dim PlgA As Variant
Dim PlgB As Variant

derLA = Cells(Rows.Count, 1).End(xlUp).Row
derLB = Cells(Rows.Count, 2).End(xlUp).Row

If derLA < derLB Then
derL = derLB
Else: derL = derLA
End If

MsgBox derL

Set PlgA = Range("A1:A" & derLA)
Set PlgB = Range("B1:B" & derLB)
Set Tablo = Range("A1:B" & derL)

Range("A" & derL + 2).Value.ListNames
'Range("A" & derL + 2).Value = ListNames ne fonctionne pas non plus

PlgB.Interior.ColorIndex = 45

ActiveWorkbook.Save
End Sub
--------------------------------------
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

8 réponses

Avatar
MichD
Bonjour,
"ListNames" retourne tous les "Noms visibles" (on peut créer des noms
qui ne sont pas visibles par la commande de l'interface de la feuille de
calcul) d'une feuille de calcul. Les noms s'affichent dans cette feuille
à partir de A1. Cet outil n'est pas flexible!
Que veux-tu obtenir comme résultat?
MichD
Avatar
MichD
Le 2019-03-02 à 08:34, MichD a écrit :
Bonjour,
"ListNames" retourne tous les "Noms visibles" (on peut créer des noms
qui ne sont pas visibles par la commande de l'interface de la feuille de
calcul) d'une feuille de calcul. Les noms s'affichent dans cette feuille
à partir de A1. Cet outil n'est pas flexible!
Que veux-tu obtenir comme résultat?
MichD

Si tu veux boucler sur une plage précise d'une feuille de calcul et que
tu veux obtenir la liste des noms représentant une "Plage nommée" de
cette plage, utilise plutôt ceci :
Dans la procédure, adapte le nom de la feuille et de la plage de
cellules visées dans :
Worksheets("Feuil1").Range("A1:A4")
'------------------------
Sub test()
Dim N As Name
For Each N In ThisWorkbook.Names
'Un test pour inclure seulement les noms visibles
'i n'est pas obligatoire...
If Names(N.Name).Visible = True Then
If Not Intersect(Worksheets("Feuil1").Range("A1:A4"),
Range(N.RefersTo)) Is Nothing Then
Msgbox N.name " et " & n.RefersTo
End If
End If
Next
End Sub
'------------------------
MichD
Avatar
MichD
Le 2019-03-02 à 08:49, MichD a écrit :
Le 2019-03-02 à 08:34, MichD a écrit :
Bonjour,
"ListNames" retourne tous les "Noms visibles" (on peut créer des noms
qui ne sont pas visibles par la commande de l'interface de la feuille
de calcul) d'une feuille de calcul. Les noms s'affichent dans cette
feuille à partir de A1. Cet outil n'est pas flexible!
Que veux-tu obtenir comme résultat?
MichD

Si tu veux boucler sur une plage précise d'une feuille de calcul et que
tu veux obtenir la liste des noms représentant une "Plage nommée" de
cette plage, utilise plutôt ceci :
Dans la procédure, adapte le nom de la feuille et de la plage de
cellules visées dans :
Worksheets("Feuil1").Range("A1:A4")
'------------------------
Sub test()
Dim N As Name
For Each N In ThisWorkbook.Names
    'Un test pour inclure seulement les noms visibles
    'i n'est pas obligatoire...
    If Names(N.Name).Visible = True Then
        If Not Intersect(Worksheets("Feuil1").Range("A1:A4"),
Range(N.RefersTo)) Is Nothing Then
            Msgbox N.name " et " & n.RefersTo
        End If
    End If
Next
End Sub
'------------------------
MichD

Cette ligne : Msgbox N.name " et " & n.RefersTo
devrait être : Msgbox N.name & " et " & n.RefersTo
MichD
Avatar
Jacquouille
Bonsoir Denis
Merci beaucoup.
En fait, je cherchais un truc sur le Net et je suis tombé sur
"""Selection.ListNames""" qui m'a paru très intéressant car, il arrive que
mon neurone oublie des variables ou des noms.
tant qu'à faire, je me demandais si cette fonction retournait les noms des
plages attribués via VBA. Il semblerait que non.
Mon but était de pouvoir lister tout cela dans un coin de la feuille sur
laquelle je travaille, afin d'avoir accès directement à ces noms.
Voilà.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
q5e7s4$1vmn$
Le 2019-03-02 à 08:49, MichD a écrit :
Le 2019-03-02 à 08:34, MichD a écrit :
Bonjour,
"ListNames" retourne tous les "Noms visibles" (on peut créer des noms qui
ne sont pas visibles par la commande de l'interface de la feuille de
calcul) d'une feuille de calcul. Les noms s'affichent dans cette feuille
à partir de A1. Cet outil n'est pas flexible!
Que veux-tu obtenir comme résultat?
MichD

Si tu veux boucler sur une plage précise d'une feuille de calcul et que tu
veux obtenir la liste des noms représentant une "Plage nommée" de cette
plage, utilise plutôt ceci :
Dans la procédure, adapte le nom de la feuille et de la plage de cellules
visées dans :
Worksheets("Feuil1").Range("A1:A4")
'------------------------
Sub test()
Dim N As Name
For Each N In ThisWorkbook.Names
'Un test pour inclure seulement les noms visibles
'i n'est pas obligatoire...
If Names(N.Name).Visible = True Then
If Not Intersect(Worksheets("Feuil1").Range("A1:A4"),
Range(N.RefersTo)) Is Nothing Then
Msgbox N.name " et " & n.RefersTo
End If
End If
Next
End Sub
'------------------------
MichD

Cette ligne : Msgbox N.name " et " & n.RefersTo
devrait être : Msgbox N.name & " et " & n.RefersTo
MichD
Avatar
Jacquouille
Re-bonsoir
Mon vieux 2003 me donne une erreur 2004 ...
mais, c'est pas grave
Bon WE et merci
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
q5e7s4$1vmn$
Le 2019-03-02 à 08:49, MichD a écrit :
Le 2019-03-02 à 08:34, MichD a écrit :
Bonjour,
"ListNames" retourne tous les "Noms visibles" (on peut créer des noms qui
ne sont pas visibles par la commande de l'interface de la feuille de
calcul) d'une feuille de calcul. Les noms s'affichent dans cette feuille
à partir de A1. Cet outil n'est pas flexible!
Que veux-tu obtenir comme résultat?
MichD

Si tu veux boucler sur une plage précise d'une feuille de calcul et que tu
veux obtenir la liste des noms représentant une "Plage nommée" de cette
plage, utilise plutôt ceci :
Dans la procédure, adapte le nom de la feuille et de la plage de cellules
visées dans :
Worksheets("Feuil1").Range("A1:A4")
'------------------------
Sub test()
Dim N As Name
For Each N In ThisWorkbook.Names
'Un test pour inclure seulement les noms visibles
'i n'est pas obligatoire...
If Names(N.Name).Visible = True Then
If Not Intersect(Worksheets("Feuil1").Range("A1:A4"),
Range(N.RefersTo)) Is Nothing Then
Msgbox N.name " et " & n.RefersTo
End If
End If
Next
End Sub
'------------------------
MichD

Cette ligne : Msgbox N.name " et " & n.RefersTo
devrait être : Msgbox N.name & " et " & n.RefersTo
MichD
Avatar
MichD
Le 2019-03-02 à 12:50, Jacquouille a écrit :
Re-bonsoir
Mon vieux 2003 me donne une erreur 2004 ...
mais, c'est pas grave
Bon WE et merci

A ) tu as fait cette correction :
Cette ligne : Msgbox N.name " et " & n.RefersTo
devrait être : Msgbox N.name & " et " & n.RefersTo

2 ) Si tu as un "NOM" qui fait référence à une formule où une constante
numérique par exemple, évidemment, tu vas obtenir un message d'erreur,
car cette ligne de code "Intersect()" se fait entre 2 plages de cellules
désignées. Par conséquent, si "Names(toto).Refers ne fait pas référence
à une plage de cellules, une erreur est générée.
Ajoute au début de la procédure : On Error Resume Next.
N.B. Je ne peux pas deviner le type de "NOMS" que contient ton fichier.
MichD
Avatar
Jacquouille
Voici le lien.
Accroche-toi bien ..... -))
https://www.cjoint.com/c/ICcspGAZwQa
Juste un fichier test
Merci et bon WE
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
q5egju$187t$
Le 2019-03-02 à 12:50, Jacquouille a écrit :
Re-bonsoir
Mon vieux 2003 me donne une erreur 2004 ...
mais, c'est pas grave
Bon WE et merci

A ) tu as fait cette correction :
Cette ligne : Msgbox N.name " et " & n.RefersTo
devrait être : Msgbox N.name & " et " & n.RefersTo

2 ) Si tu as un "NOM" qui fait référence à une formule où une constante
numérique par exemple, évidemment, tu vas obtenir un message d'erreur,
car cette ligne de code "Intersect()" se fait entre 2 plages de cellules
désignées. Par conséquent, si "Names(toto).Refers ne fait pas référence
à une plage de cellules, une erreur est générée.
Ajoute au début de la procédure : On Error Resume Next.
N.B. Je ne peux pas deviner le type de "NOMS" que contient ton fichier.
MichD
Avatar
MichD
J'ai pris le temps de tester et voilà le résultat :
'----------------------------
Sub test()
Dim N As Name
For Each N In ThisWorkbook.Names
If N.Visible = True Then
If Not Intersect(Worksheets("Feuil1").Range("A1:A35"),
Range(N.RefersTo)) Is Nothing Then
MsgBox N.Name & " et " & N.RefersTo
End If
End If
Next
End Sub
'----------------------------
MichD