Recuperer une cellule d'un autre fichier en cliquant dessus

Bonjour a tous,

je reussi en general a me debrouiller pour mes petites macros en trouvant les reponses sur le web mais cette fois je suis sec ! Je fais donc appel à vous en esperant que quelqu'un puisse maider... voici mon probleme :

J'ai un fichier de syntese qui doit recevoir une valeurs d'un autre fichier.

A partir de ce fichier de synthese, je voudrais recuperer cette valeur en cliquant sur la cellule de l'autre fichier, car elle n'a pas toujours la même place.

Je ne vous demande pas un code complet mais juste " l'astuce" qui permet a partir d'un fichier de base de recuperer une valeur d'un autre fichier en cliquant dessus.

par avance merci

Fred

Bonjour,

Plus vite fait le code que d'expliquer

Dans "L'autre fichier" coller ce code dans le module de la feuille concernée.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'Adapter nom du classeur et cellule
    Workbooks("syntese.xls").[A1] = Target.Value
    'Pour éviter d'entrer en édition
    Target.Offset(1, 0).Select
End Sub

Tu a certainement compris qu'il faut double-cliquer sur la cellule souhaitée pour qu'elle soit transcrite dans le classeur syntese.

Tu dis.

A+

Merci pour ta reponse

le problème est qu'il faut que ce code soit ecrit dans les fichiers de données (il y en a des centaines......). Est il possible de l'ecrire à l'ouverture du fichier de façon automatique quite a ne pas enregistrer les modifications à la fermeture ? le plus simple serait d'avoir cette fonction ecrite dans le fichier de synthese pour ne pas avoir a modifier les fichiers de données, mais je ne sais pas si c'est possible

frederic

C'est peut-être possible, je dois tester pour ça.

Mais je dois savoir si le nom de la feuille est le même dans tout les classeurs ?

Comment tu ouvre les autres classeurs.?

le non de la feuille n'est pas le même dans tous les classeurs. J'ouvre le classeur en demandant ou se trouve le fichier (getopenfilename) puis la commande workbooks.open filename.

merci

Désolé, mais si le nom de la feuille est différent dans chaque classeur je ne saurais pas incorporer du code dans la feuille cible c'est au delà de mon niveau et je craint fort que ce ne soit impossible.

Sauf si, quand tu sélectionne le classeur tu sait déjà quel sera le nom de la feuille cible il resterait peut-être une option.

A+

Je prefere à la rigeur changer le nom de la feuille et de faire le travail en "automatique". Donc si tu veux bien on va dire que le nom de la feuille sera toujours feuil1...... quite a ce que le change

Tu dois changer les noms de la feuille dans tout les classeurs ???

Tant qu'a faire, autant copier le code dans ces feuilles non ?

Bon, si tu préfère, montre le code qui te permet d'ouvrir un classeur, je verrais pour y incorporer du code. (toujours pas tester bien entendu )

le soucis c'est que je ne serait pas le seul a utiliser ce fichier syntese et donc c'est a la rigueur plus simple de ne changer que le non de la feuille.

dans le fichier synthese le code d'ouverture

Private Sub CommandButton1_Click()

End Sub

et dans les donnée (code feuil1)

Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

End Sub

Je pense que tu n'a pas bien compris, c'est dans LES CLASSEURS CIBLES qu'il faut que la feuille CIBLE ai toujours le même nom, dans tes quelque 400 classeurs.

Ou alors je ne te comprend plus.

Nous sommes d'accord et je pense avoir bien compris :

dans les fichiers de données, la feuille ou je clic pour recuperer les resultats doit toujours avoir le meme nom. Si c'est obligatoire, il est plus simple pour moi de le modifier. De plus, J'ai regardé dans plusieurs fichiesr et elle s'appele en general "feuil1", le nom par defaut.

Je pense que j'ai presque tout, reste plus qu'à concrétiser.

Je sais incorporer du code dans un classeur à l'ouverture mais j'ai jamais essayer sur un autre classeur, mais je pense que ça devrait aller.

Mais t'énerve pas ça risque de prendre du temps.

En fait y a pas eu de problème,

Le code de ton bouton devient..

Private Sub CommandButton1_Click()
Dim code As String
Dim fichier As String
    fichier = Application.GetOpenFilename
    Workbooks.Open fichier

    code = "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" & vbCrLf
    code = code & "Workbooks(""syntese.xls"").Sheets(""Feuil1"").[A1] = Target.Value" & vbCrLf
    code = code & "Cancel = True" & vbCrLf
    code = code & "End Sub" & vbCrLf
    On Error Resume Next
    With ActiveWorkbook.VBProject.VBComponents("Feuil1").CodeModule
        .insertlines .CountOfLines + 1, code
    End With
    ActiveWorkbook.Saved = True
End Sub

Vérifie que le nom de ton classeur est correct.

Adapter Feuil1 et A1 à la cible. (dans la 2ém ligne du code)

Tu dis.

A+

Bonjour

D'abord un grand merci, celà fonctionne mais si et seulement si l'option suivante est cochée.....

Menu Outils d'Excel -> Macro -> Sécurité -> Onglets Sources fiables -> Cocher "Faire confiance au projet Visual Basic".

encore milles merci

fred

Rechercher des sujets similaires à "recuperer fichier cliquant dessus"