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

VBA Access Discussion :

Mise à jour Table Access


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut Mise à jour Table Access
    Bonjour,

    Ma problèmatique:

    J'ai deux tables Access, et j'aimerai qu'à partir d'une, je puisse mettre l'autre à jour, et ce en supprimant les doublons (si nécessaire), en supprimant les lignes éronnées (si nécessaire) et en modifiant certaines données (si nécessaire).

    Je pense qu'il faudrait faire cette mise à jour avec l'aide de Recorset. Mais je n'ai aucunes idées de comment je dois m'y prendre.

    Pourriez-vous me donner quelques idées svp.


    Merci de l'aide que vous pourrez m'apporter !!!!

    30avril1989

  2. #2
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    je peux te donner quelques éléments de réponse que j'ai trouvés, à mon niveau, (1) pour mettre à jour une table :

    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
     
    '-- on se place dans la base courante
    Dim Db As DAO.Database
    Set Db = CurrentDb
    '-- on ouvre la table portant le nom "NOM_TABLE"
    Dim Tb As DAO.TableDef
    Set Tb = Db.TableDefs("NOM_TABLE")
    '-- on ouvre le recordset de cette table
    Dim Rs As DAO.Recordset
    Rs = Tb.OpenRecordset
     
    '-- on parcourt les enregistrements
    Do While Not Rs.EOF
       Rs.Edit
       '-- instructions de mise à jour
       Rs.Update
       Rs.MoveNext
    Loop
    Et (2) pour ajouter des enregistrements à une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Do While Not Rs.EOF
        Rs.AddNew
        '-- instructions qui remplissent les champs du nouvel enregistrement
        Rs.Update
        Rs.MoveNext
    Loop
    Néanmoins, je te conseillerais plutôt d'exécuter d'abord une requête d'ajout/mise à jour avec jointure gauche (ou droite, symétriquement) entre tes deux tables. Puis de passer par le recordset pour parcourir linéairement ta table et éliminer les enregistrements qui ne rentrent pas dans tes critères de choix.

    Sur le sujet de la mise à jour d'une table, tu pourras consulter (sql/vba) :
    http://access.developpez.com/faq/

    Et plus généralement, sur le recordset, tu pourras trouver énormément d'informations ici :
    http://warin.developpez.com/access/dao/
    http://vb.developpez.com/bidou/recordset-ado/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    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
    23
    24
    25
    26
    27
    28
    29
    Public Function prout()
    
    Dim Db As DAO.Database
    Set Db = CurrentDb
    
    Dim Tb As DAO.TableDefs
    Set Tb = Db.TableDefs("employés")
    
    'MonSql = "SELECT * FROM employés"
    
    Dim Rs As DAO.Recordset
    Set Rs = Db.OpenRecordset("SELECT * FROM employés")
    
    Rs.AddNew
    Rs![Numéro de poste] = 8
    Rs![Prénom] = Valentin
    Rs![Nom] = GERMAIN
    Rs![Poste] = ASW
    Rs![Bureau] = Vendome
    Rs![Salaire] = 1000
    Rs![Commission] = 123
    Rs![Embauche] = 28 / 4 / 2010
    Rs![Statut] = 9
    Rs![Permanence] = oui
    Rs![commentaire] = je
    Rs.Update
    Rs.Close
    
    End Function
    Lorsque je le compile, j'ai une erreur:

    Erreur d'exécution: Incopatibilité de type

    Cette erreur se situe sur la ligne de code qui est en gras et soulignée.

    Merci pour l'aide que vous pourrez m'apporter.

    30avril1989

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Re,

    J'ai réussi à résoudre mon problème de compilation.

    Mais maintenant, le problème est que çà n'ajoute pas le nouvel enregistrement à la table "employés".

    Merci pour votre aide!

    30avril1989

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Re,

    Pour que ma table soit mise à jour, il faut que je revienne en "mode création" puis de nouveau "affichage" pour que je vois la mise à jour. Pourquoi?

    Merci pour votre aide

    30avril1989

  6. #6
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Si tu veux ajouter des enregistrements à ta table, à mon avis, dans ton cas, il faut que tu travailles avec le recordset de ta table et pas celui de ta requête, qui, de toute façon, sélectionne tous les champs. C'est suffisant pour ce que tu veux, mais je ne sais pas si c'est nécessaire : je ne sais pas si une requête SELECT puis des AddNew sur son recordset a le même effet qu'une requête d'ajout. J'imagine que oui.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 115
    Points : 45
    Points
    45
    Par défaut
    Je te remercie beaucoup!

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par 30avril1989 Voir le message
    Re,

    Pour que ma table soit mise à jour, il faut que je revienne en "mode création" puis de nouveau "affichage" pour que je vois la mise à jour. Pourquoi?

    Merci pour votre aide

    30avril1989
    L'enregistrement est ajouté mais tu ne le vois pas. Fais F5 (rafraichir) sur ta table et tu verras qu'il est bien présent.

Discussions similaires

  1. mise à jour table Access
    Par lokura dans le forum Access
    Réponses: 2
    Dernier message: 09/02/2012, 18h01
  2. [XL-2007] Mise à jour table access depuis Excel
    Par daimadoshi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/09/2011, 15h15
  3. [AC-2000] Mise à jour Table Access
    Par 30avril1989 dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/05/2010, 08h21
  4. Mise à jour Tables access via Datagridview
    Par Apocalyptico dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/02/2010, 14h17
  5. Mise à jour table Access en SQL
    Par KrSt94 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/06/2007, 09h47

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