macro: lien entre fichiers variables

J

Jean michel

Guest
Hello le forum,

j'ai une macro qui dit d'écrire dans la cellule C686 du fichier essai un lien vers le classeur2.xls.

Jusqu'ici ca va .

Mais je complique le truc en voulant que Classeur2 soit une variable 'nomfichier2' qui a été définit en amont de la macro.

Le pblm c que si j'écris nomfichier2 à la place de '=[Classeur2.xls], je peux toujours courir pour qu'il me trouve mon fichier

qqun aurait il un autre idée ou solution


Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 08/09/2005 par JM
'

'
Windows('essai.xls').Activate
Range('C686').Select
ActiveCell.FormulaR1C1 = '=[Classeur2.xls]Feuil1!R[-671]C'
Range('C687').Select
End Sub


merci
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Jean-Michel,

Tu peux essayer comme ça :
      Range('C686').FormulaR1C1 = '=[' & nomfichier2 & '.xls]Feuil1!R[-671]C'
Ou comme ça :
      Range('C686').Formula = '=' & Workbooks(nomfichier2 & '.xls').Sheets('Feuil1'). _
                                          Range('C15').Address(external:=True)
Tu remarqueras également qu'il n'est point besoin de faire 'Range('C686').Select' avant l'affectation de formule dans la cellule. Sauf cas exceptionnels, la sélection d'une cellule est souvent inutile (et même déconseillée) pour agir sur cette dernière en VBA.

Cordialement,
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Jean-Michel,

Mais je complique le truc en voulant que Classeur2 soit une variable 'nomfichier2' qui a été définit en amont de la macro.
Je n'avais pas compris que '.xls' était déjà inclus dans 'nomfichier2'...


Cela dit, dans ce cas, tu peux essayer :
        Range('C686').FormulaR1C1 = '=[' & nomfichier2 & ']Feuil1!R[-671]C'
Ou
        Range('C686').Formula = '=' & Workbooks(nomfichier2).Sheets('Feuil1'). _
                                                              Range('C15').Address(external:=True)
Chez moi, les 2 fonctionnent.

Cordialement,
 
J

jean michel

Guest
avec le fichier [file name=Book1_20050909095422.zip size=6157]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Book1_20050909095422.zip[/file]
 

Pièces jointes

  • Book1_20050909095422.zip
    6 KB · Affichages: 7
J

jean michel

Guest
salut mdf,
j'avais pas vu ta réponse, ta pas beaucoup dormi , donc comme tu vois j'y arrive pas.
Je me demandait si on a pas oublié les '

bon merci en tout cas pour ton aide et les codes. Je teste différents trucs
cdt
jm
 

myDearFriend!

XLDnaute Barbatruc
Re

Un peu de patience Jean-Michel STP...

Tu trouveras ci-joint ton fichier modifié pour tenter de répondre à ta demande. Les 2 méthodes devraient donc être utilisables.

[ol][li]Pour la méthode type RC, j'ai supprimé le '.xls' et j'ai du également modifier l'adresse RC qui ne pointait pas au bon endroit du fichier à mon avis (j'ai pris pour cible la cellule N666 du premier classeur).[/li]
[li]Pour l'autre méthode, tu as tout simplement écrit 'Adress' au lieu de 'Address' (et oui, sauf erreur de ma part, tu es bien placé pour savoir qu'en anglais, Address prend 2 d !)[/li][/ol]

Je me suis également permis de revoir tes InputBox pour gérer la situation où l'utilisateur cliquerait sur 'Annuler' et éviter ainsi un plantage ultérieur...

Bonne continuation...

Cordialement,
[file name=PourJeanMichel.zip size=9897]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourJeanMichel.zip[/file]

Message édité par: myDearFriend!, à: 09/09/2005 10:54
 

Pièces jointes

  • PourJeanMichel.zip
    9.7 KB · Affichages: 10
  • PourJeanMichel.zip
    9.7 KB · Affichages: 11
  • PourJeanMichel.zip
    9.7 KB · Affichages: 11
J

jean michel

Guest
a encore une chose et si à la place de de le faire exit sub qd la réponse est fausse tu proposes de recommencer à saisir dans l'input box, il faut réécrire la ligne supérieur ou tu peux le renvoyer par un code tt simple (ke je connais pas )

merci d'avance
 

myDearFriend!

XLDnaute Barbatruc
Re,

Tu peux réaliser ça simplement comme ça :
      'InputBox dans une boucle Do, jusqu'à ce que nomfichier2 soit <> de FAUX ou rien
      Do
            nomfichier2 = Application.InputBox(Prompt:='entrer la date du fichier', Type:=2)
      Loop Until nomfichier2 <> False And nomfichier2 <> ''
Je te joins le fichier modifié en conséquence...

Mais es-tu sûr de vouloir procéder ainsi ? L'utilisateur sera obligé de répondre une valeur sinon il ne pourra plus sortir de ton appli...

Cordialement, [file name=PourJeanMichel2.zip size=10246]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourJeanMichel2.zip[/file]
 

Pièces jointes

  • PourJeanMichel2.zip
    10 KB · Affichages: 8

Statistiques des forums

Discussions
312 972
Messages
2 094 051
Membres
105 928
dernier inscrit
mbitso