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
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 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 30 novembre 2011 76
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
7
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
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 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 30 novembre 2011 76
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
3
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
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
22 août 2007 à 13:39
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
23 août 2007 à 08:37
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 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 30 novembre 2011 76
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
0
Tanguyforest
22 août 2007 à 16:25
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
3 avril 2008 à 20:26
plz ki peu m aider a faire un code capable d importer les données d excel pour etre utiliser par la suite
-1