Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche d'une valeur dans un autre fichier par macro

4 réponses
Avatar
Magic Man
Voilà mon problème:
Je doit dans un fichier excel, exécuter une macro qui va aller chercher une
valeur dans une cellule dans un autre fichier excel et la copier dans une
cellule quelqu'onque de mon fichier actuel.
Par contre le nom du fichier d'origine change en fonction de la date.
Ex: mon fichier porte le nom F2008-05-01.xls et je doit aller chercher une
valeur dans le fichier F2008-04-27.xls. Mais le nom peut changer en fonction
de la date d'aujourd'hui (aujourdhui()).
Jai essayé ce code mais ça ne foncitonne pas:

date_fichier = Cells(5,2) ' ou cette cellule contient la date du nom de
fichier recherché
a = Workbooks("FT"&date_fichier&".xls").Sheets("Ftemps").Range("J16") '
copie de la valeur dans la variable a
Cells(5, 10) = a 'cellule ou la valeur sera copié

Quelqu'un peut maider ?
Merci à l'avance.

--
Magic Man
magicman@zefo.ca
Le partage de connaissance est une richesse !

4 réponses

Avatar
Michel Angelosanto
Quelle erreur obtiens-tu et sur quelle ligne ?
Va dans le code Visual basic, positionne toi sur le début de la macro puis
appuie sur la touche F8, jusqu'à ce que tu sois positionné sur la ligne
suivant le a=workbooks ...
positionne la souris sur les différentes zones constituant la variable a et
vérifier que le nom du fichier est correct.
Il faudra probablement ajouter le path devant le nom du fichier
(activeworkbook.path &"" si il est dans le même répertoire)
Tu peux aussi utiliser tout simplement une liaison en utilisant "indirect"
mais dans ce cas, il faut que le fichier soit ouvert.

"Magic Man" a écrit dans le message de
news:
Voilà mon problème:
Je doit dans un fichier excel, exécuter une macro qui va aller chercher
une valeur dans une cellule dans un autre fichier excel et la copier dans
une cellule quelqu'onque de mon fichier actuel.
Par contre le nom du fichier d'origine change en fonction de la date.
Ex: mon fichier porte le nom F2008-05-01.xls et je doit aller chercher une
valeur dans le fichier F2008-04-27.xls. Mais le nom peut changer en
fonction de la date d'aujourd'hui (aujourdhui()).
Jai essayé ce code mais ça ne foncitonne pas:

date_fichier = Cells(5,2) ' ou cette cellule contient la date du nom de
fichier recherché
a = Workbooks("FT"&date_fichier&".xls").Sheets("Ftemps").Range("J16") '
copie de la valeur dans la variable a
Cells(5, 10) = a 'cellule ou la valeur sera copié

Quelqu'un peut maider ?
Merci à l'avance.

--
Magic Man

Le partage de connaissance est une richesse !



--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/

Avatar
Youky
Sub Macro1()
Chemin = "'" & ThisWorkbook.Path & ""
Fichier = cells(5,2).text & ".xls" '....si .xls non inclus et attention au
format
Onglet = "Ftemps'!"
ChampALire = "R16C10" 'R est lla ligne & Cla colonne
On Error Resume Next
'MsgBox Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet &
ChampALire)
Cells(5, 10) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet &
ChampALire)
End Sub

Non testé mais cela doit pas être loin si les fichiers sont bien dans le
même répertoire
Youky

"Magic Man" a écrit dans le message de news:

Voilà mon problème:
Je doit dans un fichier excel, exécuter une macro qui va aller chercher
une valeur dans une cellule dans un autre fichier excel et la copier dans
une cellule quelqu'onque de mon fichier actuel.
Par contre le nom du fichier d'origine change en fonction de la date.
Ex: mon fichier porte le nom F2008-05-01.xls et je doit aller chercher une
valeur dans le fichier F2008-04-27.xls. Mais le nom peut changer en
fonction de la date d'aujourd'hui (aujourdhui()).
Jai essayé ce code mais ça ne foncitonne pas:

date_fichier = Cells(5,2) ' ou cette cellule contient la date du nom de
fichier recherché
a = Workbooks("FT"&date_fichier&".xls").Sheets("Ftemps").Range("J16") '
copie de la valeur dans la variable a
Cells(5, 10) = a 'cellule ou la valeur sera copié

Quelqu'un peut maider ?
Merci à l'avance.

--
Magic Man

Le partage de connaissance est une richesse !



Avatar
Hervé
Bonsoir,

Avec ADO pour récupération de la valeur d'une cellule dans un classeur
fermé.
A mettre dans un module standard et adapter les variables dans la Sub "Test"
:
Si ça convient, adapte la procédure "Test" Le code parraît un peut long aux
premiers abords mais ça fonctionne bien.

Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If
'HDR > YES ou NO; entêtes de colonnes
'IMEX > 1 lecture seule, 2 lecture/écriture
ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 1;"""
End Sub

Sub RecupValeur(Classeur As String, _
NomFeuille As String, _
Cellule As String, _
ValeurCellule)

Dim ConnectCL As Object
Dim Rs As Object

'connecxion
ConnectCLasseur ConnectCL, Classeur, Rs
'lecture
With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$" & _
Cellule & "` ", ConnectCL
ValeurCellule = .Fields(0).Value
End With

ConnectCL.Close
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub


Sub Test()
'variable de type Variant
'pour récupération de la valeur
Dim Retour

'Classeur = chemin complet du classeur cible
'NomFeuille = nom de la feuille où se trouve la cellule
'Cellule = cellule à lire, bien écrire la cellule
'sous la forme "A1:A1"

'gère l'erreur du classeur inexistant
On Error GoTo Fin

RecupValeur "C:F2008-04-27.xls", _
"Feuil1", _
"B2:B2", _
Retour

'teste si la cellule n'est pas vide
If IsNull(Retour) Then
MsgBox "La cellule est vide !"
Else
MsgBox Retour
'récupérer la valeur dans la cellule A1
'de la feuille active (ôter l'apostrophe)
'[A1] = Retour
End If

Fin:
If Err.Number <> 0 Then
MsgBox "Erreur de fichier !"
End If

End Sub


Hervé.


"Magic Man" a écrit dans le message de news:

Voilà mon problème:
Je doit dans un fichier excel, exécuter une macro qui va aller chercher
une valeur dans une cellule dans un autre fichier excel et la copier dans
une cellule quelqu'onque de mon fichier actuel.
Par contre le nom du fichier d'origine change en fonction de la date.
Ex: mon fichier porte le nom F2008-05-01.xls et je doit aller chercher une
valeur dans le fichier F2008-04-27.xls. Mais le nom peut changer en
fonction de la date d'aujourd'hui (aujourdhui()).
Jai essayé ce code mais ça ne foncitonne pas:

date_fichier = Cells(5,2) ' ou cette cellule contient la date du nom de
fichier recherché
a = Workbooks("FT"&date_fichier&".xls").Sheets("Ftemps").Range("J16") '
copie de la valeur dans la variable a
Cells(5, 10) = a 'cellule ou la valeur sera copié

Quelqu'un peut maider ?
Merci à l'avance.

--
Magic Man

Le partage de connaissance est une richesse !



Avatar
Youky
Un oups!!!
remplacer cette ligne sur la macro
Fichier = "[" & Cells(5,2).value & ".xls]"

Youky

"Youky" a écrit dans le message de news:
%
Sub Macro1()
Chemin = "'" & ThisWorkbook.Path & ""
Fichier = cells(5,2).text & ".xls" '....si .xls non inclus et attention
au format
Onglet = "Ftemps'!"
ChampALire = "R16C10" 'R est lla ligne & Cla colonne
On Error Resume Next
'MsgBox Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet &
ChampALire)
Cells(5, 10) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet &
ChampALire)
End Sub

Non testé mais cela doit pas être loin si les fichiers sont bien dans le
même répertoire
Youky

"Magic Man" a écrit dans le message de news:

Voilà mon problème:
Je doit dans un fichier excel, exécuter une macro qui va aller chercher
une valeur dans une cellule dans un autre fichier excel et la copier dans
une cellule quelqu'onque de mon fichier actuel.
Par contre le nom du fichier d'origine change en fonction de la date.
Ex: mon fichier porte le nom F2008-05-01.xls et je doit aller chercher
une valeur dans le fichier F2008-04-27.xls. Mais le nom peut changer en
fonction de la date d'aujourd'hui (aujourdhui()).
Jai essayé ce code mais ça ne foncitonne pas:

date_fichier = Cells(5,2) ' ou cette cellule contient la date du nom de
fichier recherché
a = Workbooks("FT"&date_fichier&".xls").Sheets("Ftemps").Range("J16") '
copie de la valeur dans la variable a
Cells(5, 10) = a 'cellule ou la valeur sera copié

Quelqu'un peut maider ?
Merci à l'avance.

--
Magic Man

Le partage de connaissance est une richesse !