Recopier la donnée d'une cellule d'un lien hypertext aléatoire.

Antibios

XLDnaute Nouveau
Bonjour,

J'aimerai extraire les données d'un cellule d'un autre classeur excel.
Code:
='c:\documents\excel\[classeur]'!$F8
La cellule F8 est a rechercher dans le [classeur]. Pour le moment, l'emplacement est fixe mais, il pourra changer par la suite.

Cependant, le nom du fichier [classeur] se trouve dans la cellule A5 qui à un lien hypertexte.
Je cherche à lui dire de rechercher les données de la cellule F8 mais dans le fichier dont la cellule A5 à le nom.
Code:
='c:\documents\excel\'[A5]'!$F8
Avec cette formule, j'optient #REF!. Je n'arrive pas à lui faire comprendre qu'il doit chercher F8 dans le fichier de la cellule A.
De plus, si c'est possible j'aimerai qu'il s'adapte entièrement à la cellule A5, emplacement et le nom.

J'ai essayé un combinaison avec =LIEN_HYPERTEXT et RECHECHE(V,H) mais, Excel me comprend pas.

Pourriez-vous m'aider?

Merci d'avance.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Antibios, Iznogoood1 et bonne année.

Dans un module standard. Attention ! Code à adapter.
VB:
Option explicit
Public Const Chemin As String = "C:\Users\Antibios\AppData\Local\Nouveau dossier\"
Public WkS As Workbook, Sh As Worksheet, plage As Range, Fichier As String

Sub Init_Variables()
    Fichier = "Source.xls"
    Set WkS = Workbooks.Open(Chemin & Fichier)
    Set Sh = WkS.Sheets(1)
    Set plage = Sh.Range("a2:g" & Sh.Range("g" & Rows.Count).End(xlUp).Row)
End Sub

Dans le Module de la feuille en créant une liste avec les mots recherchés ou en écrivant directement dans la cellule.

VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range, lig As Long

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    If Not Intersect(Target, Range("l2")) Is Nothing Then

    If Range("l2") <> "" Then
        Call Init_Variables
        With ActiveWorkbook
            Set cel = plage.Find(Range("l2"), , xlValues, xlWhole)
            If Not cel Is Nothing Then
                lig = cel.Offset(0, 0).Row
               cel.Offset(0, 3).Copy Cells(lig, cel.Offset(0, 3).Column)
            End If
            Columns.AutoFit
        End With
    End If
    ActiveWorkbook.Close True
    ThisWorkbook.Save
    Else
    Exit Sub
End If
    Application.EnableEvents = True
End Sub
 

Antibios

XLDnaute Nouveau
J'ai essayé vos différents code mais, même en adaptant, je n'arrive pas a faire fonctionner vos codes.
Je connais vraiment très très peu le language VBA. J'apprends tant bien que mal au fur et a mesure.
J'ai fait 2, 3 trucs en VBA avec de l'aide mais, sans être bien écrit.
Je vous joint le fichier, pour que se soit plus clair.
 

Pièces jointes

  • Synthèse 2.0.xlsm
    41.9 KB · Affichages: 23

Iznogood1

XLDnaute Impliqué
Enregistre le fichier "test.xlsx" quelque part sur ton disque (C:\ par exemple)
Ouvre le fichier Demo.xlsm et change les valeurs des cellules jaunes (mets "F7" en E4 par exemple)
--> En A1, tu obtiens la valeur de la cellule F47 de la Feuil1 du fichier c:\test.xlsx

Adapte ensuite la macro à tes besoins
 

Pièces jointes

  • test.xlsx
    8.2 KB · Affichages: 25
  • Demo.xlsm
    16.6 KB · Affichages: 31

Lone-wolf

XLDnaute Barbatruc
Re

Un test avec ton classeur modifier. Et normal que ma macro ne foctionnait pas; tu as mis Private Sub Worksheet_Change(ByVal Target As Range)
dans un module standard alors qui fallait le copier dans le module de la feuille. Pour ce faire: clic-droit sur la feuille > Visualiser le code. Mais comme c'est déjà fait...

Inscrit un nouveau nom dans la colonne F pour tester.
 

Pièces jointes

  • Synthèse 2.0-V2.xlsm
    42.5 KB · Affichages: 29

Antibios

XLDnaute Nouveau
Je ne savais pas que les "Private Sub" devaient se mettre dans la feuille de classeur :)

Maintenant, quand j'active ma macro, il active le "Private Sub". Il ouvre dans une autre classeur excel le pdf.
Donc le code ne doit pas être adapté à ce que je veux faire.

Enregistre le fichier "test.xlsx" quelque part sur ton disque (C:\ par exemple)
Ouvre le fichier Demo.xlsm et change les valeurs des cellules jaunes (mets "F7" en E4 par exemple)
--> En A1, tu obtiens la valeur de la cellule F47 de la Feuil1 du fichier c:\test.xlsx

Adapte ensuite la macro à tes besoins
Je vais essayé tes classeurs pour voir si j'arrive à faire quelques choses.
 
Dernière édition:

Antibios

XLDnaute Nouveau
Enregistre le fichier "test.xlsx" quelque part sur ton disque (C:\ par exemple)
Ouvre le fichier Demo.xlsm et change les valeurs des cellules jaunes (mets "F7" en E4 par exemple)
--> En A1, tu obtiens la valeur de la cellule F47 de la Feuil1 du fichier c:\test.xlsx

Adapte ensuite la macro à tes besoins
Ton exemple fonctionne mais, je ne vois pas comment appliquer sur mon fichier.

Je me suis sûrement mal exprimé.
J'essaye d'extraire dans les cellules de droite de B à N, certaines informations (nom, adresse, etc...) qui se trouvent dans le fichier de la cellules A5.
Toutes les 2 cellules, un nouveau fichier .xlsm est entré sans connaître son future nom et j'aimerais que le classeur cherche automatiquement les informations.
Je ne veux pas ouvrir ces fichiers mais, juste extraire les informations.
Manuellement pas de problème je le fait avec RECHERCHEH mais je suis obligé de changer le nom du fichier entre [].
Je voudrai qu'il le face tout seul en remplaçant le nom du fichier entre [] par [A5] [A7] [A9] dans la formule, si bien sur c'est possible mais , je ne comprend pas comment lui dire.
A5 vers B4, C4, D5...
A7 vers B6, C6, D6...
Code:
B4=RECHERCHEH("Nom";[nomclasseur]feuil'!$G7;1;FAUX)
B6=RECHERCHEH("Nom";[A7]feuil'!$G7;1;FAUX)
B8=RECHERCHEH("Nom";[A9]feuil'!$G7;1;FAUX)
Etc...
 

Lone-wolf

XLDnaute Barbatruc
Re Antibios

Faudrait savoir ce que tu veux. Après tous ces messages, tu n'a toujours pas dit combient de classeurs il y a, qu'elles sont les cellules que tu veux extraire où elles doivent être copiées; et est-ce que les classeurs on tous la même structure.
 

Antibios

XLDnaute Nouveau
:D Je sais ce que je veux mais, je me suis sûrement mal exprimé.;)

Les autres classeurs ont tous la même structures.
Je ne peux pas te dire combien il y a de classeur car, les classeurs sont créés au fur et a mesure mais, s'il faut faire une estimation, il y en aura environ 600 au total (50 par mois).

Le nom des classeurs .xlsm non pas de récurrence pour pouvoir anticipé avec une formule, il change en fonction des dates et de différentes informations dans le classeurs. J'avais commencé à écrire les formules avec des noms de fichiers qui se suive mais, ils ne se suivent pas.
L’emplacement quand à lui reste le même "S:\Commun\Département Technique\Centre logistique\Missions\2017\01-2017\*.xlsm".

Alors je me suis dit que de référencer tout les fichiers par leurs nom dans la colonne A toute les 2 lignes avec un lien hypertexte pourrait aidé à automatisé à copié les cellules rechercher.

Dans chaque classeur Excel, il y a plusieurs cellules à copiées (f8 à f13 de la feuil 1) et d'autres cellules qui sont dans d'autres onglets du classeur.
Comme je ne maitrise absolument pas le VBA, je trouvais la fonction RECHERCHEV ou H était nickel car ça fonctionne facilement quand je lui dit manuellement le nom du fichier. Sauf que le bute est que le classeur synthèse le face automatiquement avec la formule RECHERCHE.

Je pense que l'idée de base est bonne mais, la création de l'automatisation qui me pose problème vue que la formule RECHERCHE n'arrive pas à trouver le fichier de la colonne A tout seul.

En espérant avoir été plus clair :rolleyes:
J'ai modifié le classeur pour avoir des exemples concrets.
 

Pièces jointes

  • Synthèse 2.0-V2.xlsm
    43.7 KB · Affichages: 37

Discussions similaires

Statistiques des forums

Discussions
299 938
Messages
1 980 230
Membres
207 037
dernier inscrit
Cld.