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 :

Je n'arrive pas a connecter ma feuille excel à ma base de données access


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Voila, j'aurai besoin d'un exemple fonctionnel pour pouvoir via ADO remplir
    ma base de données access via excel.
    Si j'utilise cette méthode dès que je mettrais ma feuille excel à jour est-ce que mon fichier acces se mettra à jour lui aussi ?
    Est ce que quelqu'un pourrait regarder mon code VBA ?

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Dans la fenêtre VBA, menus Outils, Références, tu dois cocher :

    Microsoft office xx.x Access Database Engine Object Library

    - le nom de la base Access ne correspond pas au fichier fourni.
    - le nom de la feuille Excel de la macro n'existe pas dans le classeur.
    - il faut supprimer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Fields("N°Facture") = Array1(x, 1)
    qui est un champ en numérotation automatique (donc généré automatiquement).
    et la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Fields("Solde") = Array1(x, 4)
    le champ n'existe pas dans la base et il n'y a pas de données dans Excel. Les deux lignes alimentant la base sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                   .Fields("Client") = Array1(x, 1)
     
                   .Fields("Date") = Array1(x, 2)
    Si tu veux que les données soient automatiquement copiées quand les cellules A2 et B2 sont remplies, mets cette macro dans la feuille contenant les données à copier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column > 2 Or Target.Row <> 2 Then Exit Sub
        If Cells(2, 1) <> "" And Cells(2, 2) <> "" Then
            WritingWorksheetData_DAO
        End If
    End Sub

  3. #3
    Invité
    Invité(e)

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut ça ne marche pas toujours pas
    Merci pour vos réponses. J'ai changé mon code mais maintenant
    erreur d’exécution '3055' : Erreur définie par l'application ou par l'objet
    Que veut dire cette erreur ? Que faire ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    envoi mois ton code

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Voici le code VBA
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Sub WritingWorksheetData_DAO()
     
         Dim Plage As Range
     
         Dim Array1 As Variant
     
         Dim x As Variant
     
         Dim Db1 As Database
     
         Dim Rs1 As Recordset
     
         ' Ouverture de la base de données Clients.mdb
     
         Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "Y:\clients.mdb")
     
         ' Ouverture de la table Factures
     
         ' Un objet Recordset représente les enregistrements d'une table
     
         Set Rs1 = Db1.OpenRecordset("factures", dbOpenDynaset)
     
         ' Détermination de la taille de la plage à envoyer vers Access
     
         Set Plage = Worksheets("Clients").Range("A1").CurrentRegion.Offset(1, 0)
     
         Set Plage = Plage.Resize(Plage.Rows.Count - 1, Plage.Columns.Count)
     
         Plage.Select
     
         ' Lecture de la plage pour renvoyer une valeur contenant un tableau
     
         Array1 = Plage.Value
     
         ' Ecriture des données depuis Excel vers les enregistrement de la table Factures
     
         For x = 1 To UBound(Array1, 1)
     
              With Rs1
     
                   .AddNew
     
                   .Fields("Client") = Array1(x, 1)
     
                   .Fields("Date") = Array1(x, 2)
     
                   .Update
     
              End With
     
         Next
     
         ' Fermeture de la base Clients.mdb
     
         Db1.Close
     
         ' Effacement des données copiées vers la base (sauf les titres)
     
         With Selection.CurrentRegion
     
              Intersect(.Cells, .Offset(1)).Select
     
         End With
     
         Selection.ClearContents
     
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "Y:\clients.mdb")
    tu vas ouvrir la fenêtre d'exécution [Alt] + [G]
    tu tapes :
    ?ThisWorkbook.Path & "Y:\clients.mdb" & tu fais entrer
    regard si le chemein de ton fichier te semble chérant
    exemple c:\mesdocument\Y:\clients.mdb
    Dernière modification par AlainTech ; 02/05/2013 à 04h40. Motif: Balises [code], pas [quote]

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Les erreurs que je trouve sont
    3024 Fichier <name> introuvable.
    3055 Nom de fichier incorrect

    Je ne comprends pas car le nom de mon fichier n'est pas incorrect ni introuvable puisqu'il existe !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "C:\Documents and Settings\stagiaire3\Bureau\base de donnéesY:\clients.mdb")
    L'erreur 3055 Nom de fichier incorrect revient toujours.
    Faut-il enlever ThisWorkook.Path ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Db1 = DBEngine.OpenDatabase("Y:\clients.mdb")

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut encore erreur
    Quand je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Db1 = DBEngine.OpenDatabase("Y:\clients.mdb")
    cela me donne l'erreur 3024

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Db1 = DBEngine.OpenDatabase("C:\Documents and Settings\stagiaire3\Bureau\base de donnéesY:\clients.mdb")
    me donne l'erreur 3055

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut je tiens a m'excuser
    Désolé depuis tout ce temps mon fichier est en accdb.

  12. #12
    Invité
    Invité(e)
    Par défaut
    exécute ton code en pas à pas [F8], l'erreur ne devrait pas être au même endroit.
    la première erreur était sur la connexion, deuxième sur la requête qui de tout façon n'existe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql="select champ1,champ2 from table where ??;"
    set Rs1 =Db1.execute(sql)

  13. #13
    Invité
    Invité(e)
    Par défaut
    erreur la requête existe mais fausse!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rs1 = Db1.OpenRecordset("select factures.* from factures;", dbOpenDynaset)

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/06/2009, 14h59
  2. J'arrive pas a connecter a une base access protgee par mot de passe
    Par yahia1982 dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/10/2006, 13h55
  3. J'arrive pas a connecter a une base access
    Par yahia1982 dans le forum Bases de données
    Réponses: 6
    Dernier message: 01/08/2006, 13h31
  4. Réponses: 4
    Dernier message: 06/07/2006, 17h14
  5. Je n'arrive pas à me connecter au chat
    Par méphistopheles dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 27/03/2006, 21h16

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