Access Importation Excel VBA
Résolu/Fermé
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
-
6 déc. 2007 à 10:35
blaster_soft - 2 sept. 2009 à 00:52
blaster_soft - 2 sept. 2009 à 00:52
A voir également:
- Access vba import excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
13 réponses
Le code que tu a copié est plutot pour des gens un peu avancé. Tu auras beaucoup plus facile ave le FileOpenDialog. Là le nom du fichier est une propriété de l'objet.
Re salut,
voici une solution très simple qui march aussi bien avec une macro Access qu'en VBA. elle te permet de naviger dans tes repertoires pour prendre le fichier voulu et active le wizard d'import.
DoCmd.RunCommand acCmdImport
good luck
voici une solution très simple qui march aussi bien avec une macro Access qu'en VBA. elle te permet de naviger dans tes repertoires pour prendre le fichier voulu et active le wizard d'import.
DoCmd.RunCommand acCmdImport
good luck
voila la solution a tous vos problème il suffit de copier coller la formule magique dans une nouveau module et modifier que le nom de la table qui va etre créer après l'importation et le tours et jouer. et surtout ne toucher à rien :d
Function fOpenFiles() As String
'Nécessite la référence microsoft office x.x object library
Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)
With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.xls"
.Filters.Clear
.Filters.Add "Tableur Microsoft Excel", "*.xls"
.InitialView = msoFileDialogViewList
.Title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Next
End If
End With
If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If
Set Dialogue = Nothing
End Function
'------------------------------------------------------------
' importer_DATA_1_importer
'
'------------------------------------------------------------
Function importer_DATA_1_importer()
On Error GoTo importer_DATA_1_importer_Err
DoCmd.TransferSpreadsheet acImport, 8, "Nom de la table", fOpenFiles(), True, ""
importer_DATA_1_importer_Exit:
Exit Function
importer_DATA_1_importer_Err:
MsgBox Error$
Resume importer_DATA_1_importer_Exit
End Function
Function fOpenFiles() As String
'Nécessite la référence microsoft office x.x object library
Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)
With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.xls"
.Filters.Clear
.Filters.Add "Tableur Microsoft Excel", "*.xls"
.InitialView = msoFileDialogViewList
.Title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Next
End If
End With
If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If
Set Dialogue = Nothing
End Function
'------------------------------------------------------------
' importer_DATA_1_importer
'
'------------------------------------------------------------
Function importer_DATA_1_importer()
On Error GoTo importer_DATA_1_importer_Err
DoCmd.TransferSpreadsheet acImport, 8, "Nom de la table", fOpenFiles(), True, ""
importer_DATA_1_importer_Exit:
Exit Function
importer_DATA_1_importer_Err:
MsgBox Error$
Resume importer_DATA_1_importer_Exit
End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
6 déc. 2007 à 14:56
6 déc. 2007 à 14:56
Bonjour à toutes et à tous,
Je me retrouve coincé, car je suis obligé de mettre un chemin précis et un nom de fichier prédéfini, je peux avoir à mettre à jour ma base avec un fichier dans c:\toto.xls, ou encore c:\Temp\Boite1\tata.xls, concrètement le nom du fichier excel ainsi que son chemin peuvent varier.
J'ai trouvé quelque chose qui s'aparente à ce que je recheche, cette fonction VBA me permet d'afficher dans une MSGBOX le chemin avec le fichier, le but est de le stocker dans une variable et d'ouvrir le doc.
https://access.developpez.com/faq/?page=CheminsRep
Je pense que vous avez compris que j'étais une belle buse en VBA :)
Je me retrouve coincé, car je suis obligé de mettre un chemin précis et un nom de fichier prédéfini, je peux avoir à mettre à jour ma base avec un fichier dans c:\toto.xls, ou encore c:\Temp\Boite1\tata.xls, concrètement le nom du fichier excel ainsi que son chemin peuvent varier.
J'ai trouvé quelque chose qui s'aparente à ce que je recheche, cette fonction VBA me permet d'afficher dans une MSGBOX le chemin avec le fichier, le but est de le stocker dans une variable et d'ouvrir le doc.
https://access.developpez.com/faq/?page=CheminsRep
Je pense que vous avez compris que j'étais une belle buse en VBA :)
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
6 déc. 2007 à 17:42
6 déc. 2007 à 17:42
Voici le code de la fonction que j'ai trouvé:
'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
'Structure du fichier
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'Constantes
Private Const OFN_READONLY = &H1
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_NOCHANGEDIR = &H8
Private Const OFN_SHOWHELP = &H10
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_NOVALIDATE = &H100
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_EXTENSIONDIFFERENT = &H400
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_NOREADONLYRETURN = &H8000
Private Const OFN_NOTESTFILECREATE = &H10000
Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHARENOWARN = 1
Private Const OFN_SHAREWARN = 0
Public Function OuvrirUnFichier(Handle As Long, _
Titre As String, _
TypeRetour As Byte, _
Optional TitreFiltre As String, _
Optional TypeFichier As String, _
Optional RepParDefaut As String) As String
'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
'la boîte de dialogue de sélection d'un fichier.
'Explication des paramètres
'Handle = le handle de la fenêtre (Me.Hwnd)
'Titre = Titre de la boîte de dialogue
'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
'1 = Chemin complet + Nom du fichier
'2 = Nom fichier seulement
'TitreFiltre = Titre du filtre
'Exemple: Fichier Access
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'TypeFichier = Extention du fichier (Sans le .)
'Exemple: MDB
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'RepParDefaut = Répertoire d'ouverture par defaut
'Exemple: C:\windows\system32
'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
Dim StructFile As OPENFILENAME
Dim sFiltre As String
'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
'Configuration de la boîte de dialogue
With StructFile
.lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
.hwndOwner = Handle 'Identification du handle de la fenêtre
.lpstrFilter = sFiltre 'Application du filtre
.lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
.nMaxFile = 254 'Taille maximale du fichier
.lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
.nMaxFileTitle = 254 'Taille maximale du nom du fichier
.lpstrTitle = Titre 'Titre de la boîte de dialogue
.flags = OFN_HIDEREADONLY 'Option de la boite de dialogue
If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
RepParDefaut = CurrentDb.Name
PathStripPath (RepParDefaut)
.lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
InStr(1, RepParDefaut, vbNullChar) - 1)))
Else: .lpstrInitialDir = RepParDefaut
End If
End With
If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
Select Case TypeRetour
Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
End Select
End If
End Function
Private Sub Commande1_Click()
MsgBox OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Fichier Excel", "xls")
End Sub
En effet c'est long, mais cette dernière me permet d'afficher le chemin de mon fichier, le problème qui se pose à moi est le suivant maintenant, comment retrouver la variable où est stocké le "chemin" du fichier choisi???
Je maintiens je suis une buse en VBA :)
'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
'Structure du fichier
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'Constantes
Private Const OFN_READONLY = &H1
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_NOCHANGEDIR = &H8
Private Const OFN_SHOWHELP = &H10
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_NOVALIDATE = &H100
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_EXTENSIONDIFFERENT = &H400
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_NOREADONLYRETURN = &H8000
Private Const OFN_NOTESTFILECREATE = &H10000
Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHARENOWARN = 1
Private Const OFN_SHAREWARN = 0
Public Function OuvrirUnFichier(Handle As Long, _
Titre As String, _
TypeRetour As Byte, _
Optional TitreFiltre As String, _
Optional TypeFichier As String, _
Optional RepParDefaut As String) As String
'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
'la boîte de dialogue de sélection d'un fichier.
'Explication des paramètres
'Handle = le handle de la fenêtre (Me.Hwnd)
'Titre = Titre de la boîte de dialogue
'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
'1 = Chemin complet + Nom du fichier
'2 = Nom fichier seulement
'TitreFiltre = Titre du filtre
'Exemple: Fichier Access
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'TypeFichier = Extention du fichier (Sans le .)
'Exemple: MDB
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'RepParDefaut = Répertoire d'ouverture par defaut
'Exemple: C:\windows\system32
'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
Dim StructFile As OPENFILENAME
Dim sFiltre As String
'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
'Configuration de la boîte de dialogue
With StructFile
.lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
.hwndOwner = Handle 'Identification du handle de la fenêtre
.lpstrFilter = sFiltre 'Application du filtre
.lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
.nMaxFile = 254 'Taille maximale du fichier
.lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
.nMaxFileTitle = 254 'Taille maximale du nom du fichier
.lpstrTitle = Titre 'Titre de la boîte de dialogue
.flags = OFN_HIDEREADONLY 'Option de la boite de dialogue
If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
RepParDefaut = CurrentDb.Name
PathStripPath (RepParDefaut)
.lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
InStr(1, RepParDefaut, vbNullChar) - 1)))
Else: .lpstrInitialDir = RepParDefaut
End If
End With
If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
Select Case TypeRetour
Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
End Select
End If
End Function
Private Sub Commande1_Click()
MsgBox OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Fichier Excel", "xls")
End Sub
En effet c'est long, mais cette dernière me permet d'afficher le chemin de mon fichier, le problème qui se pose à moi est le suivant maintenant, comment retrouver la variable où est stocké le "chemin" du fichier choisi???
Je maintiens je suis une buse en VBA :)
libasse76
Messages postés
7
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
10 juin 2008
4 juin 2008 à 10:07
4 juin 2008 à 10:07
BONJOUR Al3xandr3
J'ai le meme probleme que tu avais pour inserer des feuilles excels dans ma base de données access j'ai un bouton de commande et à partir de la je veux acceder à mon classeur excel et je veux le faire avec le code vba
svp es ce que tu peux m'aider avec le ode c urgent
J'ai le meme probleme que tu avais pour inserer des feuilles excels dans ma base de données access j'ai un bouton de commande et à partir de la je veux acceder à mon classeur excel et je veux le faire avec le code vba
svp es ce que tu peux m'aider avec le ode c urgent
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
6 déc. 2007 à 17:47
6 déc. 2007 à 17:47
Admettons qu'une bonne âme me trouve la variable où est stocké le "chemin" du fichier choisi et que cette dernière s'appelle Tata.
Est-ce que je peux faire ça:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", TATA, True
Au lieu de ça:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", "c:\recap.xls", True
Merci :))
Est-ce que je peux faire ça:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", TATA, True
Au lieu de ça:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", "c:\recap.xls", True
Merci :))
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
6 déc. 2007 à 21:58
6 déc. 2007 à 21:58
Y-a-t-il quelqun qui saurait répondre à ma question je désespère là :-(
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
7 déc. 2007 à 07:22
7 déc. 2007 à 07:22
Bonjour à toutes et à tous,
Okiz je vais tenter de tirer quelque de la fonction FileOpenDialog, je vous tiendrai au courant de l'avancement de mon problème.
En effet le code j'ai pompé sur developper.com est d'un niveau très avancé pour mes maigres compétences en VBA, mais comme dit le vieil adage aide toi et le ciel t'aidera :p
Merci en tout cas de me mettre sur la bonne voie.
Bonne journée à vous et peut bon weekend pour les veinards :)
Alex
Okiz je vais tenter de tirer quelque de la fonction FileOpenDialog, je vous tiendrai au courant de l'avancement de mon problème.
En effet le code j'ai pompé sur developper.com est d'un niveau très avancé pour mes maigres compétences en VBA, mais comme dit le vieil adage aide toi et le ciel t'aidera :p
Merci en tout cas de me mettre sur la bonne voie.
Bonne journée à vous et peut bon weekend pour les veinards :)
Alex
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
7 déc. 2007 à 09:58
7 déc. 2007 à 09:58
Re
Quand j'essaie de mettre l'objet Commoni Dialog Control, je me fais jeter par access!!!
Il me dit de réinstaller le serveur OLE, je ne comprends pas ce qui se passe sérieusement... C'est vraiment pénible.
Bref je continue à farfouiller partout pour trouver une solution.
Merci de votre aide.
Alex
Quand j'essaie de mettre l'objet Commoni Dialog Control, je me fais jeter par access!!!
Il me dit de réinstaller le serveur OLE, je ne comprends pas ce qui se passe sérieusement... C'est vraiment pénible.
Bref je continue à farfouiller partout pour trouver une solution.
Merci de votre aide.
Alex
Al3xandr3
Messages postés
34
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
7 décembre 2007
2
7 déc. 2007 à 13:07
7 déc. 2007 à 13:07
MERCI !!!!!
Mon problème est résolu grâce à ta commande!!!!
DoCmd.RunCommand acCmdImport It rocks!
Mon problème est résolu grâce à ta commande!!!!
DoCmd.RunCommand acCmdImport It rocks!
jamcher08
Messages postés
10
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
13 mai 2008
13 mai 2008 à 17:51
13 mai 2008 à 17:51
bonjour alexandre
je rencontre le memeprobleme que vous avez recontre pour appliquer une procedure sur un fichier a partir de son chemin
je vois que vous etes sevis de la commande "DoCmd.RunCommand acCmdImport It rocks!"
je pense que cadoit me servir moi aussi mais leproblem c'est que je vois pas comment l'inserer dans mon code
j'espere que tu va pouvoir m'aider Alexandre
je rencontre le memeprobleme que vous avez recontre pour appliquer une procedure sur un fichier a partir de son chemin
je vois que vous etes sevis de la commande "DoCmd.RunCommand acCmdImport It rocks!"
je pense que cadoit me servir moi aussi mais leproblem c'est que je vois pas comment l'inserer dans mon code
j'espere que tu va pouvoir m'aider Alexandre
libasse76
Messages postés
7
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
10 juin 2008
>
jamcher08
Messages postés
10
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
13 mai 2008
4 juin 2008 à 13:59
4 juin 2008 à 13:59
bonjour jamcher08,
on o le meme probleme toi et moi sur l'importation de données si tu as le code es ce que tu peut me passer please
c'est très urgent et merci de ta collaboration
on o le meme probleme toi et moi sur l'importation de données si tu as le code es ce que tu peut me passer please
c'est très urgent et merci de ta collaboration
mya1
Messages postés
334
Date d'inscription
samedi 5 juillet 2008
Statut
Membre
Dernière intervention
28 janvier 2013
42
22 août 2008 à 00:36
22 août 2008 à 00:36
slt les developpeurs! bah pr ma part g une application à réaliser en VB qui permet d'importer/exporter des fichiers textes resultats issus d'un logiciel CIRPLUS(c1 logiciel ki permet le traitement genre cordination et plannification des fréquences. on px executer des calculs la dessus, le resultat est donc exhibé sous forme de fichiers textes où ya bcp d'information, mais mon but est donc extraire seules les données pertinentes ,ainsi les importer dans un fichier excel.. bah là je cherche à le réaliser mais puisque c'est l a1ère fois que je code av le VB 6.0 bah je ss un peu debordée pr ne po dire trop.. ce que je demande c'est si vous pouvez m'aider à codifier la fonction importer le fichier texte vers un fichier excel..
merci d'avance
merci d'avance