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 :

Envoi de données dans table ACCESS [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 63
    Points
    63
    Par défaut Envoi de données dans table ACCESS
    Bonjour,

    Je souhaiterai envoyer des données depuis un fichier Excel par le lancement d'une macro excel vers une table Acess

    J'ai un fichier excel SUIVIPROJETTEST.XLS dans lequel j'ai une feuille projets en dangers . Dans ce fichier les utilsateurs vont remplir la colonne B Num Projets et les colonnes M et N Commentaires et plan d'ation .

    J'ai une base de donnée Suivideprojets.mbd dans laquelle j'ai une table PROJDANGER avec les champs (N°Projet, Commentaire,Planaction)

    Je souhaiterai que dans le fichier excel une fois que l'utilisateur clic sur un bouton les données du tableau excel des colonnes B,M et N viennent remplacer les donnees dans la table projdangeR EN fonction du NujmProjet .


    Merci pour votre aide

    Je suis débutant et j'ai du mal

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    Essayer avec ce code
    Il faut ajouter la référence - Microsoft DAO 3.6 Object Library - (menu Outils\Références de l'éditeur Visual Basic)
    Adapter les valeurs : nom fichier, feuille d'excel, ligne, ...

    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
     
     Dim db As DAO.Database, t As DAO.Recordset, xlw As Workbook, sh As Worksheet
     
     Set db = OpenDatabase("C:\projets\Suivideprojets.mdb")
     Set t = db.OpenRecordset("PROJDANGER", dbOpenDynaset)
     Set xlw = ActiveWorkbook
     Set sh = xlw.Worksheets("Feuil1")
     
     ligne = 2     'commence en ligne 2
     Do Until sh.Cells(ligne, 2) = ""
      t.FindFirst "[Nprojet]=" & sh.Cells(ligne, 2)
      If Not t.NoMatch Then
       t.Edit
       t!commentaires = sh.Cells(ligne, 13)
       t!planaction = sh.Cells(ligne, 14)
       t.Update
      End If
      ligne = ligne + 1
     Loop
     t.Close
     db.Close

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 63
    Points
    63
    Par défaut
    merci de votre aide , j'ai essayé d'adapter ce code à ma solution ca donne :

    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
    Sub UpdateDataAccess_DAO()
     
        Dim db As DAO.Database, t As DAO.Recordset, xlw As Workbook, sh As Worksheet
     
     Set db = OpenDatabase("D:\Documents and Settings\Bureau\test2\Suivideprojets.mdb")
     Set t = db.OpenRecordset("PROJETSDANGERS", dbOpenDynaset)
     Set xlw = ActiveWorkbook
     Set sh = xlw.Worksheets("Projets en Danger")
     
     ligne = 7     'commence en ligne 2
     Do Until sh.Cells(ligne, 2) = ""
      t.FindFirst "[Numproj]=" & sh.Cells(ligne, 2)
      If Not t.NoMatch Then
       t.Edit
       t!commentaires = sh.Cells(ligne, 13)
       t!planaction = sh.Cells(ligne, 14)
       t.Update
      End If
      ligne = ligne + 1
     Loop
     t.Close
     db.Close
     
    End Sub

    La macro se déroule sans erreur mais ca ne mets pas à jour les enregistrements dans ma base .

    Je joins la base et le fichier excel correspondant si c'est plus parlant.

    Concretement je souhaiterai récupérer dans la Table PROJETSDANGERS les valeurs TTTTTTT dans commentaires et GFD dans planaction pour le projet SJ.09023.

    Pouvez m'aider pour trouver ce qui cloche .

    Encore merci

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour
    il y a eu une discussion similaire il y a peu de temps regarde ici:http://www.developpez.net/forums/d91...-table-access/
    et là
    http://www.developpez.net/forums/d91...-table-access/
    $pour emplacer les données adapte le code pour créer une requete sql "UPDATE" pour mettre à jour des enregistrements ou "INSERT INTO" pour ajouter de nouveaux enregistrements

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 63
    Points
    63
    Par défaut
    Merci pour ton aide j'ai essayer d'adapter les infos trouvées sur les liens

    J'arrive à importer les données dans la base gr

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 63
    Points
    63
    Par défaut
    Merci pour ton aide grace aux liens j'ai réussi à importer les données par la fonction insert into. Avec le champ numprojet comme clé primaire je n'importe que les nouveaux enregistrements

    J'aimerai aussi enchainer une requete mais cette fois si qui UPDATE en fonction du numprojet en colonne B.

    Voici mon code
    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
    Sub connect_base_access()
    Dim Db As DAO.Database
    Dim strSQL As String
    Dim derlign As Long, i As Long
     
    'connexion à la base
    Set Db = DAO.OpenDatabase("D:\Documents and Settings\Bureau\test2\Suivideprojets.mdb", False, False)
     
     
    '
     
    'boucle de la ligne 2 jusque la derniere ligne
    For i = 7 To 50
    strSQL = "INSERT INTO PROJETSDANGERS VALUES ('" & Range("B" & i) & "', '" & Range("M" & i) & "','" & Range("n" & i) & "')"
    Db.Execute strSQL
    Next i
     
     
    'deconnexion de la base
    Db.Close
     
    End Sub
    Pouvez m'aidez pour transformer la fonction insert into en update par rpport au numprojet .
    J'ai essayé ce code mais ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 7 To 50
    strSQL = "UPDATE PROJETSDANGERS SET [commentaires]= '" & Range("M" & i) & "', [planaction]='" & Range("n" & i) & "')WHERE ([Numproj]='" & Range("b" & i) & "')"
    Db.Execute strSQL
    Next i
    Merci encore

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Re,
    j'ai un peu modifié ta requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 7 To 50
    strSQL = "UPDATE PROJETSDANGERS SET commentaires = '" & Range("M" & i) & "', planaction = '" & Range("n" & i) & "' WHERE Numproj = '" & Range("b" & i) & "'"
    Db.Execute strSQL
    Next i
    .
    je vois que tu as un champ "commentaires" et un champ planaction, pour éviter une erreur fait attention si dans ton texte il y a une ou des apostrophes comme dans le mot aujourd'hui par exemple. dans ce cas regarde le lien que je t'ai donné précédemment ou j'explique qu'il faut doubler l' apostrophe ("''").tu trouveras une fonction qui permet de le faire automatiquement.
    Et également si le champ Numproj est en INTEGER donc un ou des chiffres remplace la clause WHERE comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Numproj = " & Range("b" & i) & ""
    bon courage

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 63
    Points
    63
    Par défaut
    Merci ca marche !!!!!!!



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

Discussions similaires

  1. Problème d'import de donnée Excel dans table Access
    Par shakapouet dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/08/2012, 23h12
  2. Envoi de données dans une table MySQL
    Par MacZerbe dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2009, 11h12
  3. [VBA-E] Tableau Croise Dynamique données dans table access
    Par winner103 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/11/2006, 11h49
  4. [MySQL] envoi de données dans une table
    Par suya95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/06/2006, 15h48
  5. [VBA-E]Export données dans table Access
    Par lolo_bob2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/04/2006, 09h56

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