Excel - code VBA pour import de données
Résolu/Fermé
Tanguyforest
-
22 août 2007 à 11:12
BertrandT Messages postés 1 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 avril 2008 - 22 avril 2008 à 15:39
BertrandT Messages postés 1 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 22 avril 2008 - 22 avril 2008 à 15:39
Bonjour,
J'ai fais une macro qui importe des données sur une feuille Excel.
J'ai enregistré ma feuille excel dans un dossier, et la feuille de données dans le même dossier.
Y a t il un moyen que ma macro fonctionne toujours si je bouge mon dossier de place.
Le code VBA étant d'aller chercher les données à partir d'un chemin absolu, celui du dossier, ce code là ne se modifie pas quand je déplace mon dosier.
merci d'avance
J'ai fais une macro qui importe des données sur une feuille Excel.
J'ai enregistré ma feuille excel dans un dossier, et la feuille de données dans le même dossier.
Y a t il un moyen que ma macro fonctionne toujours si je bouge mon dossier de place.
Le code VBA étant d'aller chercher les données à partir d'un chemin absolu, celui du dossier, ce code là ne se modifie pas quand je déplace mon dosier.
merci d'avance
A voir également:
- Code vba pour importer des données
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Trier des données excel - Guide
8 réponses
coco49rico
Messages postés
92
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
30 novembre 2011
76
22 août 2007 à 22:10
22 août 2007 à 22:10
Salut,
Ton code a l'air d'une usine à gaz (ça sent l'enregistreur de macro sans un nettoyage du superflu)
Tu rajoutes les quelques lignes au début, à la fin et tu remplaces le chemin et le nom de ton fichier par "fileToOpen" (que tu peux renommer comme tu veux, c'est une variable).
Il y a un test en plus qui permet de ne pas planter si tu ne sélectionnes pas de fichier. N'oublies pas les 2 lignes "ExitDoor :" et "Exit Sub" avant la fin.
Sub Macro1()
On Error GoTo Exitdoor
fileToOpen = Application.GetOpenFilename()
If fileToOpen <> False Then
Workbooks.OpenText Filename:=fileToOpen
End If
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=fileToOpen;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 = "données_1"
.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 = fileToOpen
.Refresh BackgroundQuery:=False
End With
Range("E6").Select
Exitdoor:
Exit Sub
End Sub
Rico
Ton code a l'air d'une usine à gaz (ça sent l'enregistreur de macro sans un nettoyage du superflu)
Tu rajoutes les quelques lignes au début, à la fin et tu remplaces le chemin et le nom de ton fichier par "fileToOpen" (que tu peux renommer comme tu veux, c'est une variable).
Il y a un test en plus qui permet de ne pas planter si tu ne sélectionnes pas de fichier. N'oublies pas les 2 lignes "ExitDoor :" et "Exit Sub" avant la fin.
Sub Macro1()
On Error GoTo Exitdoor
fileToOpen = Application.GetOpenFilename()
If fileToOpen <> False Then
Workbooks.OpenText Filename:=fileToOpen
End If
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=fileToOpen;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 = "données_1"
.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 = fileToOpen
.Refresh BackgroundQuery:=False
End With
Range("E6").Select
Exitdoor:
Exit Sub
End Sub
Rico
BertrandT
Messages postés
1
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
22 avril 2008
6
22 avril 2008 à 15:39
22 avril 2008 à 15:39
Bonjour,
J'ai un petit problème :
Je voudrait avoir un exemple d'une macro (simple et commentée si possible ^^) qui permet d'importer des données d'un fichier excel sous un autre fichier excel.
Je m'explique :
Par exemple si j'ai dans mon premier fichier Premier.xls les ifnos suivantes :
A | B | C |
1 | 2 | 3 |
Et je veux les importer dans mon autre document excel Deuxieme.xls et les afficher
Voila si quelqu'un peux m'aider ^^
Merci d'avance !
J'ai un petit problème :
Je voudrait avoir un exemple d'une macro (simple et commentée si possible ^^) qui permet d'importer des données d'un fichier excel sous un autre fichier excel.
Je m'explique :
Par exemple si j'ai dans mon premier fichier Premier.xls les ifnos suivantes :
A | B | C |
1 | 2 | 3 |
Et je veux les importer dans mon autre document excel Deuxieme.xls et les afficher
Voila si quelqu'un peux m'aider ^^
Merci d'avance !
coco49rico
Messages postés
92
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
30 novembre 2011
76
22 août 2007 à 15:03
22 août 2007 à 15:03
La macro ci-dessus permet de changer de répertoire même si tu déplaces ton fichier ...
Peux-tu être plus explicite quand tu parles de feuille, de données, de dossier...
Peux-tu parler de feuille1 de fichier 1 dans dossier 1, de données de fichier 2 dans dossier 2 ?
Les deux fichiers resteront toujours dans le même dossier quand tu les déplaces ?
Les deux fichiers seront dans des répertoires distincts ?
Y-a t'il une logique dans le déplacement de ton fichier ? Nom de répertoire qui s'incrémente ...
Un p'tit peu plus de détails siouplait pour qu'on puisse aider. Tu es à fond dans ton sujet mais pas nous ...
Rico
Peux-tu être plus explicite quand tu parles de feuille, de données, de dossier...
Peux-tu parler de feuille1 de fichier 1 dans dossier 1, de données de fichier 2 dans dossier 2 ?
Les deux fichiers resteront toujours dans le même dossier quand tu les déplaces ?
Les deux fichiers seront dans des répertoires distincts ?
Y-a t'il une logique dans le déplacement de ton fichier ? Nom de répertoire qui s'incrémente ...
Un p'tit peu plus de détails siouplait pour qu'on puisse aider. Tu es à fond dans ton sujet mais pas nous ...
Rico
coco49rico
Messages postés
92
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
30 novembre 2011
76
22 août 2007 à 12:20
22 août 2007 à 12:20
Bonjour Tanguyforest,
Cette fonction te permet de choisir le fichier que tu veux ouvrir :
fileToOpen = Application.GetOpenFilename()
Workbooks.OpenText Filename:=fileToOpen
Je ne réponds pas directement à ta question mais cela peux t'aider.
Rico
Cette fonction te permet de choisir le fichier que tu veux ouvrir :
fileToOpen = Application.GetOpenFilename()
Workbooks.OpenText Filename:=fileToOpen
Je ne réponds pas directement à ta question mais cela peux t'aider.
Rico
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est effectivement un enregistrement de macro sans nettoyage, le code étant tellement petit...
ca marche ton code, je te remercie beaucoup,
++
ca marche ton code, je te remercie beaucoup,
++
coco49rico
Messages postés
92
Date d'inscription
mardi 14 août 2007
Statut
Membre
Dernière intervention
30 novembre 2011
76
7 avril 2008 à 21:14
7 avril 2008 à 21:14
Bonjour,
C'est un peu juste pour répondre avec le peu d'explications ...
Peux-tu expliquer d'où tu veux importer ? Quel type de fichier ?
Rico
C'est un peu juste pour répondre avec le peu d'explications ...
Peux-tu expliquer d'où tu veux importer ? Quel type de fichier ?
Rico
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 écrit:
-------------------------------------------
Sub Macro1()
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=\\Serveur\Public\Test\do" _
, _
"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 = "données_1"
.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 = _
"\\Serveur\Public\Test\données.xls"
.Refresh BackgroundQuery:=False
End With
Range("E6").Select
End Sub
-------------------------------------------
voilà, et maintenant je ne sais pas où et comment placer tes 2 instructions
Le dossier "test" doit pouvoir se déplacer sur l'ensemble des mes disques durs.
Alors pour importer mes données, j'ai écrit:
-------------------------------------------
Sub Macro1()
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=\\Serveur\Public\Test\do" _
, _
"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 = "données_1"
.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 = _
"\\Serveur\Public\Test\données.xls"
.Refresh BackgroundQuery:=False
End With
Range("E6").Select
End Sub
-------------------------------------------
voilà, et maintenant je ne sais pas où et comment placer tes 2 instructions