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

Importer d'un autre fichier

8 réponses
Avatar
Denys
Bonjour =E0 tous,

Sur le site de F=E9d=E9ric Sigonneau, il y a un code permettant d'importer
des donn=E9es d'un autre fichier excel. Voici le code que j'ai modifi=E9
pour ma cause:

Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName =3D Dir("c:\Data\Heather's Team\Denys.xls") ' j'ai mis
l'adresse du fichier
Do While Len(FName) > 0
FileCounter =3D FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) =3D FName
FName =3D Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating =3D False
For LoopCounter =3D 1 To FileCounter

x =3D LoopCounter
'calcul de la plage de destination
'place =3D Range(Cells((((x - 1) * 10) + 2), 1), Cells(((x * 10)),
3)).Address
place =3D Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x *
1000)), 7)).Address
GetValues "c:", FilesArray(LoopCounter), "Daily Tasks",
"a2:g10000", place
Next
Application.ScreenUpdating =3D True
End If
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray =3D "=3D'" & fPath & "\[" & FName & "]" & sName & "'!" &
cellRange 'voir plus bas
.Value =3D .Value
End With
End Sub

=C0 cet endroit (FormulaArray) une fen=EAtre s'ouvre me demandant de
choisir le fichier Excel, alors que le nom du fichier Denys est
clairement indiqu=E9 dans l'adresse....

Le reste du code fonctionne tr=E8s bien (apr=E8s avoir cliqu=E9 sur le
fichier Denys)

Que dois-je faire pour ne pas voir cette boite de dialogue s'ouvrir ?

Merci

Denys

8 réponses

Avatar
cousinhub
Bonsoir,
A tout hasard, en mettant ton répertoire entre des quotes, peut-être?
Comme il y a un espace....
FName = Dir("c:'DataHeather's Team'Denys.xls")
Bon courage


Bonjour à tous,

Sur le site de Fédéric Sigonneau, il y a un code permettant d'importer
des données d'un autre fichier excel. Voici le code que j'ai modifié
pour ma cause:

Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName = Dir("c:DataHeather's TeamDenys.xls") ' j'ai mis
l'adresse du fichier
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter

x = LoopCounter
'calcul de la plage de destination
'place = Range(Cells((((x - 1) * 10) + 2), 1), Cells(((x * 10)),
3)).Address
place = Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x *
1000)), 7)).Address
GetValues "c:", FilesArray(LoopCounter), "Daily Tasks",
"a2:g10000", place
Next
Application.ScreenUpdating = True
End If
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & sName & "'!" &
cellRange 'voir plus bas
.Value = .Value
End With
End Sub

À cet endroit (FormulaArray) une fenêtre s'ouvre me demandant de
choisir le fichier Excel, alors que le nom du fichier Denys est
clairement indiqué dans l'adresse....

Le reste du code fonctionne très bien (après avoir cliqué sur le
fichier Denys)

Que dois-je faire pour ne pas voir cette boite de dialogue s'ouvrir ?

Merci

Denys



Avatar
Denys
On 10 août, 12:08, cousinhub wrote:
Bonsoir,
A tout hasard, en mettant ton répertoire entre des quotes, peut-être?
Comme il y a un espace....
FName = Dir("c:'DataHeather's Team'Denys.xls")
Bon courage



Bonsoir Cousinhub,

Merci.... malheureusement çà ne fonctionne pas....

Bonne soirée

Denys

Avatar
cousinhub
re-,
en regardant ton code, et celui de FS, peut-être par là :

GetValues "c:", FilesArray(LoopCounter), "Daily Tasks","a2:g10000", place

remplacer par (en gardant les quotes):

GetValues "c:Data'Heather's Team"', FilesArray(LoopCounter), "Daily
Tasks","a2:g10000", place

Peut-être????

On 10 août, 12:08, cousinhub wrote:
Bonsoir,
A tout hasard, en mettant ton répertoire entre des quotes, peut-être?
Comme il y a un espace....
FName = Dir("c:'DataHeather's Team'Denys.xls")
Bon courage



Bonsoir Cousinhub,

Merci.... malheureusement çà ne fonctionne pas....

Bonne soirée

Denys




Avatar
MichDenis
A ) Si tu connais le nom du chemin, du classeur et le nom de la feuille
tu n'as pas besoin de boucler ou d'utiliser le code au cas où .

B ) La fonction a des arguments, il faut les respecter
Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)

fPath = Chemin -> toi, tu as donné seulement le lecteur c: et non
"c:DataHeather's Team"
FName = Nom du fichier => "Denys.xls"
sName = Nom de la feuille => Daily Tasks

Tu peux seulement te permettre ceci :
'-------------------------------
Sub Test()
Dim Chemin as string, Fichier as string, Feuille as string
Dim Place As string
Chemin = "c:DataHeather's Team"
Fichier = "Denys.xls"
Feuille = "Daily Tasks"
Place = Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x * 1000)), 7)).Address
GetValues chemin, fichier,feuille,"a2:g10000", place
End Sub
'-------------------------------
Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & _
sName & "'!" & cellRange 'voir plus bas
.Value = .Value
End With
End Sub
'-------------------------------


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

Bonjour à tous,

Sur le site de Fédéric Sigonneau, il y a un code permettant d'importer
des données d'un autre fichier excel. Voici le code que j'ai modifié
pour ma cause:

Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName = Dir("c:DataHeather's TeamDenys.xls") ' j'ai mis
l'adresse du fichier
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter

x = LoopCounter
'calcul de la plage de destination
'place = Range(Cells((((x - 1) * 10) + 2), 1), Cells(((x * 10)),
3)).Address
place = Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x *
1000)), 7)).Address
GetValues "c:", FilesArray(LoopCounter), "Daily Tasks",
"a2:g10000", place
Next
Application.ScreenUpdating = True
End If
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & sName & "'!" &
cellRange 'voir plus bas
.Value = .Value
End With
End Sub

À cet endroit (FormulaArray) une fenêtre s'ouvre me demandant de
choisir le fichier Excel, alors que le nom du fichier Denys est
clairement indiqué dans l'adresse....

Le reste du code fonctionne très bien (après avoir cliqué sur le
fichier Denys)

Que dois-je faire pour ne pas voir cette boite de dialogue s'ouvrir ?

Merci

Denys
Avatar
JB
Bonsoir,

Voici un code simple pour lire les valeurs d'un champ d'un classeur
fermé.

Sub LitClasseurFermé()
ChampOuCopier = "A1:A4"
Chemin = ThisWorkbook.Path
Fichier = "stock.xls"
onglet = "Janvier"
ChampAlire = "B2:B5"
LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
End Sub

Sub LitChamp(ChampOuCopier, Chemin, Fichier, onglet, ChampAlire)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "[" & Fichier &
"]" & onglet & "'!" & ChampAlire
Range(ChampOuCopier) = Range(ChampOuCopier).Value
End Sub

JB


On 10 août, 18:19, Denys wrote:
On 10 août, 12:08, cousinhub wrote:

Bonsoir,
A tout hasard, en mettant ton répertoire entre des quotes, peut-êtr e?
Comme il y a un espace....
FName = Dir("c:'DataHeather's Team'Denys.xls")
Bon courage


Bonsoir Cousinhub,

Merci.... malheureusement çà ne fonctionne pas....

Bonne soirée

Denys



Avatar
Youky
Salut,
La variable cellRange n'est sans doute pas renseignée
à tester......
Youky
Avatar
JB
Bonsoir,

Sub LitClasseurFermé()
ChampOuCopier = "A1:A4"
Chemin = ThisWorkbook.Path
Fichier = "stock.xls"
onglet = "Janvier"
ChampAlire = "B2:B5"
LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
End Sub

Sub LitChamp(ChampOuCopier, Chemin, Fichier, onglet, ChampAlire)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "[" & Fichier &
"]" & onglet & "'!" & ChampAlire
Range(ChampOuCopier) = Range(ChampOuCopier).Value
End Sub

jb

On 10 août, 17:43, Denys wrote:
Bonjour à tous,

Sur le site de Fédéric Sigonneau, il y a un code permettant d'importer
des données d'un autre fichier excel. Voici le code que j'ai modifié
pour ma cause:

Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName = Dir("c:DataHeather's TeamDenys.xls") ' j'ai mis
l'adresse du fichier
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter

x = LoopCounter
'calcul de la plage de destination
'place = Range(Cells((((x - 1) * 10) + 2), 1), Cells(((x * 10)),
3)).Address
place = Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x *
1000)), 7)).Address
GetValues "c:", FilesArray(LoopCounter), "Daily Tasks",
"a2:g10000", place
Next
Application.ScreenUpdating = True
End If
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & sName & "'!" &
cellRange 'voir plus bas
.Value = .Value
End With
End Sub

À cet endroit (FormulaArray) une fenêtre s'ouvre me demandant de
choisir le fichier Excel, alors que le nom du fichier Denys est
clairement indiqué dans l'adresse....

Le reste du code fonctionne très bien (après avoir cliqué sur le
fichier Denys)

Que dois-je faire pour ne pas voir cette boite de dialogue s'ouvrir ?

Merci

Denys


Avatar
Denys
Bonsoir Cousinhub, JB,Youky et bonjour Denis,

Merci à tous, mon problème est réglé.... Vous m'avez sauvé bien du temps

Bonne journée

Denys


A ) Si tu connais le nom du chemin, du classeur et le nom de la feuille
tu n'as pas besoin de boucler ou d'utiliser le code au cas où .

B ) La fonction a des arguments, il faut les respecter
Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)

fPath = Chemin -> toi, tu as donné seulement le lecteur c: et non
"c:DataHeather's Team"
FName = Nom du fichier => "Denys.xls"
sName = Nom de la feuille => Daily Tasks

Tu peux seulement te permettre ceci :
'-------------------------------
Sub Test()
Dim Chemin as string, Fichier as string, Feuille as string
Dim Place As string
Chemin = "c:DataHeather's Team"
Fichier = "Denys.xls"
Feuille = "Daily Tasks"
Place = Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x * 1000)), 7)).Address
GetValues chemin, fichier,feuille,"a2:g10000", place
End Sub
'-------------------------------
Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & _
sName & "'!" & cellRange 'voir plus bas
.Value = .Value
End With
End Sub
'-------------------------------


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

Bonjour à tous,

Sur le site de Fédéric Sigonneau, il y a un code permettant d'importer
des données d'un autre fichier excel. Voici le code que j'ai modifié
pour ma cause:

Sub LoopThruFiles()
Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName = Dir("c:DataHeather's TeamDenys.xls") ' j'ai mis
l'adresse du fichier
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter

x = LoopCounter
'calcul de la plage de destination
'place = Range(Cells((((x - 1) * 10) + 2), 1), Cells(((x * 10)),
3)).Address
place = Range(Cells((((x - 1) * 1000) + 2), 1), Cells(((x *
1000)), 7)).Address
GetValues "c:", FilesArray(LoopCounter), "Daily Tasks",
"a2:g10000", place
Next
Application.ScreenUpdating = True
End If
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)
'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle

With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & sName & "'!" &
cellRange 'voir plus bas
.Value = .Value
End With
End Sub

À cet endroit (FormulaArray) une fenêtre s'ouvre me demandant de
choisir le fichier Excel, alors que le nom du fichier Denys est
clairement indiqué dans l'adresse....

Le reste du code fonctionne très bien (après avoir cliqué sur le
fichier Denys)

Que dois-je faire pour ne pas voir cette boite de dialogue s'ouvrir ?

Merci

Denys