IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Code VBA qui fonctionne sous XL 2007 mais ne fonctionne pas sous ACCESS 2003. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Code VBA qui fonctionne sous XL 2007 mais ne fonctionne pas sous ACCESS 2003.
    Bonjour,

    Je ne suis en train de construire une macro, qui doit à partir de ACCESS 2003 , chercher des valeurs dans des xls, pour les importer dans ma database.
    Etant plus familier ( a peu près) avec le XL 2007, j'ai compilé mon code sur celui ci en pensant qu'il était compatible avec ACCESS 2003.

    j'ai testé mon code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Function cmdOpenExcel_file(Path As String) As Object
    'Application.DisplayAlerts = False
        Dim xls As Excel.Application
        On Error GoTo errHnd
            Set xls = CreateObject("Excel.Application")
                xls.Workbooks.Open Path
                xls.Visible = True
        Exit Function
    errHnd:
            MsgBox "Erreur N° " & Err.Number & vbLf & Err.Description, , Err.Source
    End Function
     
    Sub Call_OpenXlsFile()
     
    Call cmdOpenExcel_file("D:\Users\didier.cheung\Desktop\Reforming test.xls")
     
    End Sub

    Il fonctionne parfaitement sur XL 2007 mais m'affiche une erreur de compilation sur ACS 2003. :/

    Comment ca se fait?

    Merci d'avance de votre retour XLnautes!

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim wb as Object
    set wb = xls.Workbooks.Open("D:\Users\didier.cheung\Desktop\Reforming test.xls")

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Bonjour rdurupt !

    Merci pour ce code beaucoup plus compact...

    J'ai trouvé un code VBA sous excel pour export des données vers une db,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    Sub test()
        ‘ exports data from the active worksheet to a table in an Access database
        ‘ this procedure must be edited before use
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
        ‘ connect to the Access database
    Set cn = New ADODB.Connection
        cn.open “provider = microsoft.ace.oledb.12.0;” & _
    “Data Source=D:\Users\user\Documents\D4R pack\ReliabilityStudies\extdataDataBaseName.mdb;”
        ‘ open a recordset
    Set rs = New ADODB.Recordset
    rs.Open “Table1”, cn, adOpenKeyset, adLockOptimistic, adCmdTable
    ‘ all records in a table
    r = 2 ‘ the start row in the worksheet
    Do While Len(Range(“A” & r).Formula) > 0
    ‘ repeat until first empty cell in column A
    With rs
    .AddNew ‘ create a new record
    ‘ add values to each field in the record
    .Fields(“Field1") = Range(“A” & r).Value
    .Fields(“Field2?) = Range(“B” & r).Value
    .Fields(“FieldNameN”) = Range(“C” & r).Value
    ‘ add more fields if necessary…
    .Update ‘ stores the new record
    End With
    r = r + 1 ‘ next row
    Loop
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
     
    End Sub
    Sauf que celui-ci me spam erreur d'instruction à chaque fois, pourquoi? :s

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    je ne comprends pas tu veux travailler avec Excel dans Access ou avec Access dans Excel?

    tu veux insérer tes donnée Excel dans une table Access ou insérer ta table Access dans Excel.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Oui , en effet, c'était pas très clair, j'ai changé de fusil d'épaule entre temps, je souhaite travailler exporter des données excel vers access , car je suis plus confortable avec le vba d'XL 2007 que ACS 2003.

  6. #6
    Invité
    Invité(e)
    Par défaut
    ton fichier est il enregistré au moment de l'export vers Access?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    le fichier XL est existant et n'est pas re-enregistré avant export

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    Sub test()
    Const Fichier = "C:\Users\RDurupt\Documents\Base de données6.mdb"
    Dim GenereCSTRING As String
    Dim Cn As Object
    Dim Rs As Object
    Dim R As Range
    Dim L As Long
    Const Sql = "SELECT Table1.*FROM Table1;"
    GenereCSTRING = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Fichier & ";user=" & User & ";Passwors=" & Password
    Set Cn = CreateObject("ADODB.Connection")
    Cn.Open GenereCSTRING
    Set Rs = CreateObject("ADODB.RECORDSET")
    Rs.LockType = 3
    Rs.Open Sql, Cn, 2
    Set R = Sheets("Feuil1").UsedRange
    For L = 2 To R.Rows.Count
        Rs.AddNew
        Rs("Champs1") = R(L, 1)
        Rs("Champs2") = R(L, 2)
        Rs("Champs3") = R(L, 3)
        Rs("Champs4") = R(L, 4)
        Rs("Champs5") = R(L, 5)
        Rs.Update
    Next
    Rs.Close
    Cn.Close
    Set Rs = Nothing
    Set Cn = Nothing
    MsgBox "fin"
    End Sub

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Désolé du retard !!

    Ca marche nickel !! Je dois juste adapter mon code pour aller chercher des informations précises ! :]

    Je n'ai pas tout compris du code, juste qu'il faut créer une connection entre les applications office, et que ACCESS gère des objects RECORDSET et CONNECTION.
    Une dernière chose, je ne comprends pas comment ces lignes ci-dessous


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rs.LockType = 3
    Rs.Open Sql, Cn, 2
    merci encore!

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ces 2 lignes sont pour rendre la requête dynamique, ajout,mise a jour et suppression d'enregistrement.
    Comme j'utilise la méthode creatobject, je n'es pas besoin d'ajouter la référence adodb a mon projet donc pas d'accès a la constante opendynaset (2)
    et locktype le déverrouillage des enregistrement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Code VBA qui fonctionne mal
    Par Eddy95500 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2015, 18h10
  2. [XL-2007] Pb de code VBA qui ne fonctionne plus
    Par rch05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2011, 07h41
  3. code vba qui fonctionnes plus du jour au lendemain
    Par alexkickstand dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2008, 16h41
  4. Réponses: 2
    Dernier message: 09/06/2006, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo