Création
d'entreprise
Posez votre question Signaler

Excel - code VBA pour import de données [Résolu]

Tanguyforest - Dernière réponse le 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
Lire la suite 

Excel - code VBA pour import de données »

9 réponses
Réponse
+5
moins plus
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
Ajouter un commentaire
Réponse
+4
moins plus
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 !
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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
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.
Ajouter un commentaire
Réponse
+0
moins plus
C'est effectivement un enregistrement de macro sans nettoyage, le code étant tellement petit...

ca marche ton code, je te remercie beaucoup,

++
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-3
moins plus
plz ki peu m aider a faire un code capable d importer les données d excel pour etre utiliser par la suite
Ajouter un commentaire
Ce document intitulé « Excel - code VBA pour import de données » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?