Accès rapide à cellule nommée d'un autre classeur

sergio_bzh

XLDnaute Nouveau
Bonjour
J'écris en ce moment une macro dans un classeur "Classeur1" et je cherche à accéder à la valeur d'une cellule nommée dans un autre classeur déjà ouvert "Classeur2" pour ensuite écrire cette valeur dans mon classeur1.

Je peux toujours faire comme cela, 'plage' contenant le nom de ma cellule nommée :

Code:
Application.Screenupdating = False 
Workbooks("Classeur2.xls").Activate 
v = Application.Range(plage).Value
Workbooks("Classeur1.xls").Activate 
ActiveCell.Value = v
Cela fonctionne bien mais en fait c'est une boucle à faire quelques milliers de fois et de switcher sans arrêt entre les 2 classeurs prend pas mal de temps.

Je pensais que quelque chose comme ça allait fonctionner mais que nenni :

Code:
Workbooks("Classeur2.xls").Application.Range(plage).Value

Comment peut-on accéder plus rapidement à la cellule nommée d'un autre Classeur ?

Au passage, je trouve curieux que le Range d'une cellule nommée dépende de 'Application' et non pas de 'Workbooks' car le tableau des noms (Names) est propre à un workbook.

Merci.
Sergio
 

sergio_bzh

XLDnaute Nouveau
Re : Accès rapide à cellule nommée d'un autre classeur

Rien ne fonctionne, j'ai essayé un peu tout :

Nam est donc le nom d'une variable et 'Activ' est le nom d'une cellule nommée contenu dans Nam :
Code:
            Workbooks(xlName).Range("""" & Nam & """").Value
            Workbooks(xlName).Range("Activ").Value
            Workbooks(xlName).[Activ].Value
            Workbooks(xlName).["Activ"].Value
Range n'étant pas une propriété de Workbooks, j'ai toujours l'erreur "Propriété ou méthode non géré par cet objet".

Et pour le code suivant , je n'essaie pas car cela ne dépend pas des Worksheets et je ne sais pas dans quelle Worksheet est ma cellule nommée :
Code:
Workbooks("classeur2.xls").Sheets("feuil1").Range( "toto").Value

En tous cas, merci pour les réponses.
 

Pierrot93

XLDnaute Barbatruc
Re : Accès rapide à cellule nommée d'un autre classeur

bonsoir à tous

peut être comme ceci, si j'ai bien compris :

Code:
Workbooks("classeur1.xls").Sheets("Feuil1").Range("A1").Value = _
    Workbooks("classeur2.xls").Names("plage").RefersToRange.Value

"plage" étant une plage nommée d'une seule cellule.

bonne soirée
@+

Edition : .value au lieu de .value2
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 997
Messages
2 084 452
Membres
102 579
dernier inscrit
JLB35