Importation de data
Paulo
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Alors j'ai deux fichiers Excel dans un dossier nommé "test". un fichier excel contient des données et l'autre fichier excel est mon programme qui comporte les données de l'autre fichier.
Le dossier "test" doit pouvoir se déplacer sur l'ensemble des mes disques durs.
Alors pour importer mes données, j'ai une cellule dans une feuille (exemple range (F8)) dans lequelle j'ai un lien c:\test\test.xls et pouvoir changer le lien a par l'intermediare de cette cellule
=====================================================
Dim Import_link As String
Dim Import_name As String
Dim Import AS String
Sub Macro1()
Import_link = Sheets("Feuil1").Range("D7").Value
Import_name = Sheets("Feuil1").Range("E7").Value
Import =Import_link & Import_name
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=Import" _
, _
"nnées.xls;Mode=Share Deny Write;Extended Properties=""HDR=NO;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:" _
, _
"Database Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Gl" _
, _
"obal Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=Fa" _
, _
"lse;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("Feuil1$")
.Name = "Import_name"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "Import"
.Refresh BackgroundQuery:=False
End With
Range("E6").Select
End Sub
j'ai une erreur au niveau de Data Source=Import
avec Data Source:=Import on peut voir que l'on obtien Import et non le nom de la variable
comment resoudre merci ?
Alors j'ai deux fichiers Excel dans un dossier nommé "test". un fichier excel contient des données et l'autre fichier excel est mon programme qui comporte les données de l'autre fichier.
Le dossier "test" doit pouvoir se déplacer sur l'ensemble des mes disques durs.
Alors pour importer mes données, j'ai une cellule dans une feuille (exemple range (F8)) dans lequelle j'ai un lien c:\test\test.xls et pouvoir changer le lien a par l'intermediare de cette cellule
=====================================================
Dim Import_link As String
Dim Import_name As String
Dim Import AS String
Sub Macro1()
Import_link = Sheets("Feuil1").Range("D7").Value
Import_name = Sheets("Feuil1").Range("E7").Value
Import =Import_link & Import_name
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=Import" _
, _
"nnées.xls;Mode=Share Deny Write;Extended Properties=""HDR=NO;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:" _
, _
"Database Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Gl" _
, _
"obal Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=Fa" _
, _
"lse;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("Feuil1$")
.Name = "Import_name"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "Import"
.Refresh BackgroundQuery:=False
End With
Range("E6").Select
End Sub
j'ai une erreur au niveau de Data Source=Import
avec Data Source:=Import on peut voir que l'on obtien Import et non le nom de la variable
comment resoudre merci ?
A voir également:
- Importation de data
- App data - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Get data back - Télécharger - Récupération de données
- Windows data recovery - Télécharger - Récupération de données
- Nombre de jours entre deux dates excel - Guide
7 réponses
Bonsoir Paulo
proposition
1/avec macro dans le fichier test à copier colller dans le module thisworkbook
cette macro écrit dans la base de registre (HKey_current_user/software / VB and VBA Program settings) l'emplacement de test.xls
2/ dans le classeur "programme" macro copier colller dans le module thisworkbook
Private Sub Workbook_Open()
Tu peux bien sûr donner d'autres noms à appname,section, key, settings...
Si une autre utilisateur avec un identifiant différent ouvre test, l'emplacement sera cela sera inscrit dans son propre HKCU
Je n'ai pas testé avec un lecteur externe (HD,USB...)
proposition
1/avec macro dans le fichier test à copier colller dans le module thisworkbook
Private Sub Workbook_Open()
Dim chemin As String
chemin = ThisWorkbook.Path
'Ecrit le nouvel emplacement dans la base de registre
SaveSetting appname:="demo", section:="nomade", key:="lieu", setting:=chemin
End Sub
cette macro écrit dans la base de registre (HKey_current_user/software / VB and VBA Program settings) l'emplacement de test.xls
2/ dans le classeur "programme" macro copier colller dans le module thisworkbook
Private Sub Workbook_Open()
' Lit la valeur dans la base de registre
Range("A1") = GetSetting(appname:="demo", section:="nomade", key:="lieu")
End Sub
Tu peux bien sûr donner d'autres noms à appname,section, key, settings...
Si une autre utilisateur avec un identifiant différent ouvre test, l'emplacement sera cela sera inscrit dans son propre HKCU
Je n'ai pas testé avec un lecteur externe (HD,USB...)
Bonjour Michel
d'abord merci pour ta réponse
Cette macro importe les données d'un autre fichier excel dans notre cas la source est la feuille cocodu fichier C:\Temp\Test.xls et les place dans une nouvelle feuille dans notre classeur excel l'importation ce passe tres bien Avec
' Application.CutCopyMode = False
' With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Temp\Test.xls;Mode=Share Deny Write;Extended" _
, _
" Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine T" _
, _
"ype=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New " _
, _
"Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Comp" _
, "act=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
' .CommandType = xlCmdTable
' .CommandText = Array("coco$")
' .Name = "USFollowUp_ALL"
' .FieldNames = True
' .RowNumbers = False
' .FillAdjacentFormulas = False
' .PreserveFormatting = True
' .RefreshOnFileOpen = False
' .BackgroundQuery = True
' .RefreshStyle = xlInsertDeleteCells
' .SavePassword = False
' .SaveData = True
' .AdjustColumnWidth = True
' ' .RefreshPeriod = 0
' .PreserveColumnInfo = True
' .SourceDataFile = "C:\Temp\Test.xls"
' .Refresh BackgroundQuery:=False
' End With
' activsht = ThisWorkbook.ActiveSheet.Name
End sub
j'ai donc souhaité améliorer cette macro avec la possibiliter de pouvoir changer le lien C:\Temp\Test.xls
depuis une zone de ma premier feuille excel dans notre cas c'est Feuil1 F6
Cordialment Paulo
d'abord merci pour ta réponse
Cette macro importe les données d'un autre fichier excel dans notre cas la source est la feuille cocodu fichier C:\Temp\Test.xls et les place dans une nouvelle feuille dans notre classeur excel l'importation ce passe tres bien Avec
' Application.CutCopyMode = False
' With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Temp\Test.xls;Mode=Share Deny Write;Extended" _
, _
" Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine T" _
, _
"ype=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New " _
, _
"Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Comp" _
, "act=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
' .CommandType = xlCmdTable
' .CommandText = Array("coco$")
' .Name = "USFollowUp_ALL"
' .FieldNames = True
' .RowNumbers = False
' .FillAdjacentFormulas = False
' .PreserveFormatting = True
' .RefreshOnFileOpen = False
' .BackgroundQuery = True
' .RefreshStyle = xlInsertDeleteCells
' .SavePassword = False
' .SaveData = True
' .AdjustColumnWidth = True
' ' .RefreshPeriod = 0
' .PreserveColumnInfo = True
' .SourceDataFile = "C:\Temp\Test.xls"
' .Refresh BackgroundQuery:=False
' End With
' activsht = ThisWorkbook.ActiveSheet.Name
End sub
j'ai donc souhaité améliorer cette macro avec la possibiliter de pouvoir changer le lien C:\Temp\Test.xls
depuis une zone de ma premier feuille excel dans notre cas c'est Feuil1 F6
Cordialment Paulo
bonjour,
je t'ai donné 2 macros qui te permettent de connaitre ou se trouve le fichier sur l'ordi.
Tu as enregistré une macro avec MSQUERY (tu aurais pu le préciser) et il semble me souvenir que cet assistant n'aime pas beaucoup l'insertion de variable
essaies peut-être datasource=`" & (import) &"``; etc.
mais ca m'étonnerait.
merci d'avoir imprimé inutilement une nouvelle fois ta macro
je t'ai donné 2 macros qui te permettent de connaitre ou se trouve le fichier sur l'ordi.
Tu as enregistré une macro avec MSQUERY (tu aurais pu le préciser) et il semble me souvenir que cet assistant n'aime pas beaucoup l'insertion de variable
essaies peut-être datasource=`" & (import) &"``; etc.
mais ca m'étonnerait.
merci d'avoir imprimé inutilement une nouvelle fois ta macro
Bonjour Michel
Merci de ta reponse et dsl pour le repost macro.
Mais le probleme est toujour le meme datasource= ne prend pas de variable tu peut le voir avec datasource:=
Merci de ta reponse et dsl pour le repost macro.
Mais le probleme est toujour le meme datasource= ne prend pas de variable tu peut le voir avec datasource:=
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hé oui hélas,
la donnée que tu importe de ton fichier "test"est bien la feuille "coco" ? est ce la seule ?
précise bien car les codes de l'assistant MSQUERY sont une horreur
On va passer avec un coup d'ADODB, ou alors il faudrait ouvrir "test" et copier dans "A1" de la cible
j'ai un truc sur le gaz, alors peut-^tre ce soir ou demain....
la donnée que tu importe de ton fichier "test"est bien la feuille "coco" ? est ce la seule ?
précise bien car les codes de l'assistant MSQUERY sont une horreur
On va passer avec un coup d'ADODB, ou alors il faudrait ouvrir "test" et copier dans "A1" de la cible
j'ai un truc sur le gaz, alors peut-^tre ce soir ou demain....
P...
J'avais mis un edit mais je n'ai pas appuyé sur le bon bouton!
Donc, je disais mets la feuille coco en pièce jointe sur
http://www.cijoint.fr/
C'est important pour décider de la méthode à employer
J'avais mis un edit mais je n'ai pas appuyé sur le bon bouton!
Donc, je disais mets la feuille coco en pièce jointe sur
http://www.cijoint.fr/
C'est important pour décider de la méthode à employer