Pb avec un Range

  • Initiateur de la discussion Laeti
  • Date de début
L

Laeti

Guest
Bonjour,
j etais décidée a essayer de m en sortir toute seule mais j y suis depuis 9h ce matin et je ne trouve pas de solution.
Je voux explique mon probleme :
j ai un fichier qui en genere un autre, sur le fichier de depart je genere un formulaire a partir du fichier d arrivee et ensuite je dois recuperer des donnees du fichier d arrivee avec un :
Windows(nom_fichier).Activate

et la je dois recuperer la valeur de cette case :
Worksheets("Recap").Range("ligne1").Cells(12).Value
mais il me sort une erreur 1004 ...
Qu est ce que je peux faire ?

J espere que j ai ete un peu clair et que c comprehensible ...

Merci beaucoup,

Laeti
 
J

john

Guest
Salut,

Je viens de faire ce que tu aimerai et ça marche très bien.

Télécharge le fichier zip ci-joint, et dézippe le (attention il y a 2 fichiers exel et il doivent êtres dans le même répertoire).

Une fois dézippé, lanche le fichier nommé "pb_range", et là tu n'as plus qu'à cliquer sur "lancer la macro".

Voilà c'est tout.

Bonne journée.

John
 

Pièces jointes

  • pb_range.zip
    9.2 KB · Affichages: 13
@

@+Thierry

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista