OVH Cloud OVH Cloud

Récup. données

3 réponses
Avatar
YANN24
Bonjour,
j'ai eu cette macro sur le site de Frédéric Sigonneau, mais je voudrais
savoir comment l'adapter.
En effet, je voudrais pouvoir copier des données d'un classeur source A.xls
"feuilleBB", zone B5:H35 (chemin : C:\Mes Documents\Moi) sur mon classeur
destination B.xls, "feuilleDA", zone A7:G37.
Comment faire.
Merci d'avance. YANN

Attribute VB_Name = "DonneesClasseurFerme4"

Sub test()
GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "\[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub

3 réponses

Avatar
papou
Bonjour
Il y a la fonction INDIRECT2 de Laurent en cours de test.
Regarde la réponse d'Isabelle faite à Fan dans son message "Rapatriement de
la valeur d'une cellule" du 06/04/05 à 14H13.
Sinon, tu peux essayer ceci que je viens de tester (très) brièvement (il
s'agit d'une adaptation de code) :
'*** Début ***
Option Base 1
Sub ValeursExternes(Chemin As String, _
NomFic As String, NomFeuil, Plage As String, DestF As String, PlageDest
As String)
'papou mpfe 04 2005
Dim TabloDest As New Collection
Dim Argument, Resultat
Dim i&, c, cellule
If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""
If Dir(Chemin & NomFic) = "" Then
Resultat = "Fichier non trouvé"
Exit Sub
End If

For Each c In Range(Plage)
Argument = "'" & Chemin & "[" & NomFic & "]" & NomFeuil & "'!" & _
Range(c.Address).Range("A1").Address(, , xlR1C1)
Resultat = ExecuteExcel4Macro(Argument)
TabloDest.Add Resultat
Next c

i = 1
For Each cellule In Worksheets(DestF).Range(PlageDest)
cellule.Value = TabloDest(i)
i = i + 1
Next cellule

End Sub
Sub TestIt()
ValeursExternes "C:Documents and SettingsPropriétaireMes
documentsPapaDocsExcelTestsMPFE", _
"synchroListe.xls", "MaFeuille", "C1:D5", "Feuil1", "A1:B5"
End Sub

'*** Fin ***

Cordialement
Pascal

"YANN24" a écrit dans le message de news:

Bonjour,
j'ai eu cette macro sur le site de Frédéric Sigonneau, mais je voudrais
savoir comment l'adapter.
En effet, je voudrais pouvoir copier des données d'un classeur source
A.xls
"feuilleBB", zone B5:H35 (chemin : C:Mes DocumentsMoi) sur mon classeur
destination B.xls, "feuilleDA", zone A7:G37.
Comment faire.
Merci d'avance. YANN

Attribute VB_Name = "DonneesClasseurFerme4"

Sub test()
GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub



Avatar
YANN24
Ok, merci, je testerai ça la semaine prochaine, et je t'en reparle.
YANN


Bonjour
Il y a la fonction INDIRECT2 de Laurent en cours de test.
Regarde la réponse d'Isabelle faite à Fan dans son message "Rapatriement de
la valeur d'une cellule" du 06/04/05 à 14H13.
Sinon, tu peux essayer ceci que je viens de tester (très) brièvement (il
s'agit d'une adaptation de code) :
'*** Début ***
Option Base 1
Sub ValeursExternes(Chemin As String, _
NomFic As String, NomFeuil, Plage As String, DestF As String, PlageDest
As String)
'papou mpfe 04 2005
Dim TabloDest As New Collection
Dim Argument, Resultat
Dim i&, c, cellule
If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""
If Dir(Chemin & NomFic) = "" Then
Resultat = "Fichier non trouvé"
Exit Sub
End If

For Each c In Range(Plage)
Argument = "'" & Chemin & "[" & NomFic & "]" & NomFeuil & "'!" & _
Range(c.Address).Range("A1").Address(, , xlR1C1)
Resultat = ExecuteExcel4Macro(Argument)
TabloDest.Add Resultat
Next c

i = 1
For Each cellule In Worksheets(DestF).Range(PlageDest)
cellule.Value = TabloDest(i)
i = i + 1
Next cellule

End Sub
Sub TestIt()
ValeursExternes "C:Documents and SettingsPropriétaireMes
documentsPapaDocsExcelTestsMPFE", _
"synchroListe.xls", "MaFeuille", "C1:D5", "Feuil1", "A1:B5"
End Sub

'*** Fin ***

Cordialement
Pascal

"YANN24" a écrit dans le message de news:

Bonjour,
j'ai eu cette macro sur le site de Frédéric Sigonneau, mais je voudrais
savoir comment l'adapter.
En effet, je voudrais pouvoir copier des données d'un classeur source
A.xls
"feuilleBB", zone B5:H35 (chemin : C:Mes DocumentsMoi) sur mon classeur
destination B.xls, "feuilleDA", zone A7:G37.
Comment faire.
Merci d'avance. YANN

Attribute VB_Name = "DonneesClasseurFerme4"

Sub test()
GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub








Avatar
papou
Heu..
Tu peux enlever le "Option Base 1" qui ne sert à rien.
Cordialement
Pascal

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
%
Bonjour
Il y a la fonction INDIRECT2 de Laurent en cours de test.
Regarde la réponse d'Isabelle faite à Fan dans son message "Rapatriement
de la valeur d'une cellule" du 06/04/05 à 14H13.
Sinon, tu peux essayer ceci que je viens de tester (très) brièvement (il
s'agit d'une adaptation de code) :
'*** Début ***
Option Base 1
Sub ValeursExternes(Chemin As String, _
NomFic As String, NomFeuil, Plage As String, DestF As String, PlageDest
As String)
'papou mpfe 04 2005
Dim TabloDest As New Collection
Dim Argument, Resultat
Dim i&, c, cellule
If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""
If Dir(Chemin & NomFic) = "" Then
Resultat = "Fichier non trouvé"
Exit Sub
End If

For Each c In Range(Plage)
Argument = "'" & Chemin & "[" & NomFic & "]" & NomFeuil & "'!" & _
Range(c.Address).Range("A1").Address(, , xlR1C1)
Resultat = ExecuteExcel4Macro(Argument)
TabloDest.Add Resultat
Next c

i = 1
For Each cellule In Worksheets(DestF).Range(PlageDest)
cellule.Value = TabloDest(i)
i = i + 1
Next cellule

End Sub
Sub TestIt()
ValeursExternes "C:Documents and SettingsPropriétaireMes
documentsPapaDocsExcelTestsMPFE", _
"synchroListe.xls", "MaFeuille", "C1:D5", "Feuil1", "A1:B5"
End Sub

'*** Fin ***

Cordialement
Pascal

"YANN24" a écrit dans le message de
news:
Bonjour,
j'ai eu cette macro sur le site de Frédéric Sigonneau, mais je voudrais
savoir comment l'adapter.
En effet, je voudrais pouvoir copier des données d'un classeur source
A.xls
"feuilleBB", zone B5:H35 (chemin : C:Mes DocumentsMoi) sur mon classeur
destination B.xls, "feuilleDA", zone A7:G37.
Comment faire.
Merci d'avance. YANN

Attribute VB_Name = "DonneesClasseurFerme4"

Sub test()
GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub