Importation de data

Paulo -  
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 ?
A voir également:

7 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonsoir Paulo

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...)

0
Paulo
 
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
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
0
Paulo
 
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:=
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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....
0
Paulo
 
oui les données que j'importe vienne d'une seul feuille qui est coco
0
Paulo
 
oui
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
0