Modification de la plage d'une liste définie par un nom dans le calsseur

SamGuelis - 17 févr. 2013 à 22:51
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 18 févr. 2013 à 15:46
bonjour
Je souhaite modifier dynamiquement la plage des listes quand la feuille qui contient ces listes est mise à jour à partir d'un autre fichier. Après recopie je souhaite modifier les listes au cas où leur taille a changé. J'ai utilisé le code suivant (maplage contenant le nom de chaque colonne identifiant une liste):
----------------------------------
For Each cell In maplage
If cell <> "" Then
'Debug.Print cell
Set objNom = ThisWorkbook.Names.Item(cell)
TableauNom = Split(objNom.RefersTo, "!")
sizeTab = Range(TableauNom(1)).Rows.Count
newsizeTab = Cells(indiceLoop, Rows.Count).End(xlUp).Row
ThisWorkbook.Names.Add _
Name:=objNom.Name, _
RefersTo:=TableauNom(0) & "!" & _
Range(TableauNom(1)).Resize(Range(TableauNom(1)).Rows.Count + (newsizeTab - sizeTab)).Address
indiceLoop = indiceLoop + 1
End If
Next

Set maplage = Nothing
-----------------------------------------

j'ai une erreur de compilation "d'utilisation incorrecte de la propriété" quand j'exécute l'instruction:
objNom = ThisWorkbook.Names.Item(cell)
ou une erreur d'exécution #1004 a été générée par VBA Project si je fais
Set objNom = ThisWorkbook.Names.Item(cell)

Quelqu'un peut-il m'indiquer où est le problème? Merci pour vos suggestions.
Samguelis

SamGuelis

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 févr. 2013 à 00:59
Salut

Appeler une variable 'cell', c'est audacieux; méfie t-en : cela ressemble de trop à un mot clé du langage.

'cell' tout court : essaye avec la syntaxe complète 'cell.Value' ou .Text

.Names ne va te renvoyer qu'un texte (je pense).
Comment est défini objNom ?
Pourquoi un 'Set' devant ?
Que penses-tu récupérer dans cette variable ?
Si c'est une feuille :
Set objNom = ThisWorkbook.Sheets("Le nom de la feuille") (ou une variable)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
merci
0
Bonjour
J'ai changé cell--> cellName

Dim TableauNom() As String
Dim objNom As Name

La variable ObjNom est de type Name et je voudrais récupérer le nom de la liste. J'ai mis Set pour avoir une référence sur la variable. mais ce n'est peut-être pas vraiment nécessaire.

SamGuelis
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 févr. 2013 à 15:45
Name, est un objet (*) appartenant à la collection Names; comme souvent en VBA, les collections ressemblent à leurs objets + 's'.

Pour énumérer une collection :
    Dim mVar As Name
    For Each mVar In Names
        ' Voir fenêtre de debug, Ctrl-G
        Debug.Print mVar.Name, mVar.NameLocal, mVar.RefersTo
    Next 

(*) Name, comme expliqué dans l'aide, est une String et donc pas un objet : Set n'est pas utile.
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 févr. 2013 à 15:46
Pardon : Le Name que je regardais était la propriété d'une feuille. Rien à voir avec l'objet Name.
0
Rejoignez-nous