Excel - code VBA pour import de données

Résolu
Tanguyforest -  
BertrandT Messages postés 1 Statut Membre -
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
A voir également:

8 réponses

coco49rico Messages postés 92 Statut Membre 76
 
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
7
BertrandT Messages postés 1 Statut Membre 6
 
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 !
6
coco49rico Messages postés 92 Statut Membre 76
 
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
3
coco49rico Messages postés 92 Statut Membre 76
 
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
2
Tanguyforest
 
oui, cette fontion me permet de choisir le dossier que je veux ouvrir, le problème est que quand je déplacerai mon fichier, ce code ne "suivra pas" et la macro ne marchera pas.
0

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

Posez votre question
Tanguyforest
 
C'est effectivement un enregistrement de macro sans nettoyage, le code étant tellement petit...

ca marche ton code, je te remercie beaucoup,

++
1
coco49rico Messages postés 92 Statut Membre 76
 
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
0
Tanguyforest
 
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
-1
heeeeeeeeeeelp
 
plz ki peu m aider a faire un code capable d importer les données d excel pour etre utiliser par la suite
-1