Salut Laeti, John, STéphane et DNJ90 et the Forum
Je ne connaissais même cette méthode de sélection de range ...
Sub test()
toto = Workbooks("Test.xls").Worksheets("Recap").Range("ligne1").Cells(12).Address
MsgBox toto
End Sub
J'ai fai un test et ceci fonctionne très bien... Pour autant :
1) Que Le Classeurs Test.Xls soit bien ouvert
2) Que Le Classeurs Text.xls contiennent une feuille nommée "Recap"
3) Qu'une plage de la feuille "Recap" soit nommée "Ligne1"
4) Que la plage nommée "Ligne1" contienne au moins 12 cellules adjacentes....<<<< FAUX (Voir plus bas)
Si par exemple je nomme "Ligne" la plage "A1:L20" la macro ci dessus me retournera une MsgBox avec "$L$1"
Si maintenant je mets 102 :
Sub test()
toto = Workbooks("Test.xls").Worksheets("Recap").Range("ligne1").Cells(102).Address
MsgBox toto
End Sub
la MsgBox retournera $F$9...
Si toujours avec la même plage nommée A1:L20 je mets Cell(500)... alors qu'il n'y a que 240.........
Et ben pas de souci la message box m'indique "$H$42" qui est donc bien la 500ièm cellule entre les colonnes A et L... (Même si on est sorti de la plage nommée, l'adresse est conservé sur la largeur de la range nommée...) Ce peut être très utile pour faire une boucle à l'intérieur d'une plage nommée...
En fait si on nomme A1:L1 ce fera idem... MsgBox = $H$42 pour 500
Et si on nomme A1:B1 la MsgBox retournera $B$250 toujours pour 500...
Je ne sais pas si je m'en servirai un jour, mais aujourd'hui je suis moins idiot que hier !!
Pour Laeti... Peut être que la méthode de base de John :
Range("A1").Value = Workbooks("temp1.xls").Worksheets(1).Range("A1").Value
Suffit en fait, si tu n'as pas à faire une variable sur Cells(i)...
Bon aller Bon Appétit (Pas encore mangé avec cette trouvaille
@+Thierry