Importer d'un autre fichier

Le
Denys
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
cousinhub
Le #4807791
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



Denys
Le #4807751
On 10 août, 12:08, 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



Bonsoir Cousinhub,

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

Bonne soirée

Denys

cousinhub
Le #4807711
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
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




MichDenis
Le #4807691
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"
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
JB
Le #4807651
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
On 10 août, 12:08, cousinhub
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



Youky
Le #4807641
Salut,
La variable cellRange n'est sans doute pas renseignée
à tester......
Youky
JB
Le #4807581
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
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


Denys
Le #4807541
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"
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





Publicité
Poster une réponse
Anonyme