Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 22h07   #1
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 6
Points : 0
Points : 0
Par défaut Problème importation Excel vers Access

Bonsoir ,
débutant dans access , je n'arrive pas à importer mon fichier excel dans access à cause des (.) dans les titres des colonnes.

J'ai une macro automatique lié à un bouton : voir pièce jointe


Pourriez-vous m'aider?

Cordialement
Fichiers attachés
Type de fichier : docx MACRO.docx (29,2 Ko, 17 affichages)
vince9535z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 21h59   #2
Membre éclairé
 
Avatar de tee_grandbois
 
Inscription : novembre 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 216
Points : 321
Points : 321
Bonsoir,
comme le point '.' est un caractère réservé, la seule solution est de les remplacer par un autre caractère (par exemple le souligné '_').
tee_grandbois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 21h19   #3
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 6
Points : 0
Points : 0
Par défaut macro

Merci pour votre réponse , mais je cherche à automatiser cette étape pour les utilisateurs et donc cela passe surement par une macro avec ouverture du fichier excel avant importation et suppression des points?

A votre avis?
Merci
vince9535z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 00h47   #4
Membre éclairé
 
Avatar de tee_grandbois
 
Inscription : novembre 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 216
Points : 321
Points : 321
Bonsoir,
tu peux remplacer les '.' par des '_' en exécutant rechercher/remplacer depuis Access avant l'importation de ton classeur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Function importXls()
Dim objApp As Object
Dim objBook As Object
Dim objSheet As Object
Dim strFic As String
strFic = "C:\TonClasseur.xls"
 
    Set objApp = CreateObject("Excel.Application")
    Set objBook = objApp.workbooks.Open(strFic)
    Set objSheet = objBook.worksheets(1)
    objSheet.Activate
     With objSheet
        objApp.Rows("1:1").Select
        objApp.Selection.Replace What:=".", Replacement:="_", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    End With
 
objBook.Save
objApp.Quit
 
Set objSheet = Nothing
Set objBook = Nothing
Set objApp = Nothing
 
End Function
à intégrer dans ta macro avec Exécuter code
tee_grandbois est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/02/2012, 19h40   #5
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 6
Points : 0
Points : 0
Par défaut variables en fonction de ma base

je te remercie pour le code précédent , en revanche quand je clique sur le bouton avec le code , celui ci affiche une erreur voir (pièce jointe), il y a marqué "END SUB attendu" quand je lance la macro.


emplacement de mon fichier C:\Users\vincent\Desktop\FICHIER\BASE ACCESS\suivi_portefeuille.xls

Nom de la feuille dans excel "Listes des affaires" et dans le code Feuil12

les données d'entête sont sur la ligne 3
colonnes de A3 à FS3

Merci d'avance pour votre aide.
Fichiers attachés
Type de fichier : docx probleme sub.docx (78,6 Ko, 3 affichages)
vince9535z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2012, 22h11   #6
Membre éclairé
 
Avatar de tee_grandbois
 
Inscription : novembre 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 216
Points : 321
Points : 321
Bonsoir,
ce n'est pas ce qu'il faut faire, le code que je t'ai donné ne doit pas être placé tel quel dans le formulaire.
2 solutions :
1) enlève les deux instructions ci-dessous :
Code :
1
2
Function importXls()
End Function
2) Enlève tout le code du formulaire et enregistre et compile-le dans un module, ensuite appelle la fonction sur l'événement clic de ton formulaire comme ceci :
Code :
1
2
3
Private Sub Commande48_Click()
Call importXls
En Sub
ci-joint la base modifiée
Fichiers attachés
Type de fichier : zip DB_Tests.zip (28,2 Ko, 6 affichages)
tee_grandbois est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/02/2012, 15h01   #7
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 6
Points : 0
Points : 0
Par défaut UN GRAND MERCI

un grand merci , j'arrive maintenant à supprimer les points à partir de mon bouton , maintenant il me reste à l'insérer dans ma macro d'import.

objApp.Rows("1:10000").Select , si j'ai bien compris cela marche en ligne?

mais franchement un grand merci encore une fois car j'étais dans la merde sans ton aide.
vince9535z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2012, 22h52   #8
Membre éclairé
 
Avatar de tee_grandbois
 
Inscription : novembre 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 216
Points : 321
Points : 321
Bonsoir Vince9535z,
Je suis content d'avoir pu t'aider
Citation:
objApp.Rows("1:10000").Select , si j'ai bien compris cela marche en ligne?
C'est bien çà, on indique la première ligne car, en général, c'est elle qui contient les entêtes de colonnes. Si tu mets "1:10000", il va enlever tous les '.' qu'il va trouver dans tes données jusqu'à la ligne 10000 : je ne pense pas que c'est ce que tu souhaites.
tee_grandbois est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/03/2012, 23h39   #9
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 6
Points : 0
Points : 0
Je voudrais compacter ces 2 codes :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function M_IMPORT_T_PA_ATOT_MP()
On Error GoTo M_IMPORT_T_PA_ATOT_MP_Err

    DoCmd.Hourglass True
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "R SUPP T ATOT MP", acViewNormal, acEdit
    DoCmd.SetWarnings False
INSERTION 2IEME CODE (EN BAS DU MESSAGE)
    DoCmd.TransferSpreadsheet acImport, 8, "T ATOT MP", "C:\Users\vincent\Desktop\FICHIER\BASE ACCESS\suivi_portefeuille.xlsx", True, "Listes des affaires!A3:FS10000"
    DoCmd.Hourglass True
    DoCmd.SetWarnings False
    DoCmd.Hourglass True


M_IMPORT_T_PA_ATOT_MP_Exit:
    Exit Function

M_IMPORT_T_PA_ATOT_MP_Err:
    MsgBox Error$
    Resume M_IMPORT_T_PA_ATOT_MP_Exit

End Function
------------------------------------------------------

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Commande48_Click()
 
Dim objApp As Object
Dim objBook As Object
Dim objSheet As Object
Dim strFic As String
strFic = "C:\Users\vincent\Desktop\FICHIER\BASE ACCESS\suivi_portefeuille.xls"
 
 
    Set objApp = CreateObject("Excel.Application")
    Set objBook = objApp.workbooks.Open(strFic)
    Set objSheet = objBook.worksheets(12)
    objSheet.Activate
     With objSheet
        objApp.Rows("3:3").Select
        objApp.Selection.Replace What:=".", Replacement:=" "
    End With
 
objBook.Save
objApp.Quit
 
Set objSheet = Nothing
Set objBook = Nothing
Set objApp = Nothing
 
 
   End Sub
vince9535z est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h55.


 
 
 
 
Partenaires

Hébergement Web