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 :

Copier les donées d'une table vers une autre ligne de cette même table [AC-2000]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut Copier les donées d'une table vers une autre ligne de cette même table
    Bonjour

    Je cherche une solution en VBA pour pouvoir copier certaines données d'un table vers une autre ligne de cette même table.
    Exemple:

    Dans un formulaire j'ai une liste modifiable pour sélectionner la ligne de départ de ma table et une autre liste modifiable pour sélectionner la ligne de ma table où je voudrais copier certaines données de la ligne de départ.
    Par exemple pour faire simple, dans une table,3 colonnes, 2 lignes. Après sélection dans la 1ère liste modifiable de la ligne n°1 de ma table et dans la seconde liste la ligne n°2. Je voudrais cliquer sur un bouton que la valeur contenue dans la colonne n°3 de la ligne n°1 soit copiée dans la colonne n°3 de la ligne n°2.

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 486
    Points : 16 385
    Points
    16 385
    Par défaut
    Bonjour

    Raisonner en lignes ne semble pas une bonne approche : l'ordre des lignes étant dépendant de choix de tri ou filtre à un instant T...

    Ne peux-tu utiliser les clés uniques de tes enregistrements ?

    La copie se fera par une requête de mise à jour de type
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE NOMTABLE SET CHAMP3 = (SELECT CHAMP3 FROM NOMTABLE WHERE CHAMPCLE=valeur clé ligne départ) WHERE CHAMPCLE=valeur clé ligne destination;

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour

    C'est quelque chose que j'avais plus ou moins mis de coté et qui n'est toujours pas résolu.

    Voici le code que j'ai fait :

    - Dans un module, j'ai inscris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public VARIABLE1 As Integer
    Public VARIABLE2 As Integer
    Public VAR_SCHEMA As String
    - Sur le click d'un bouton j'ai mis le code suivant :
    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
    Option Compare Database
     
    Private Sub CLIENT_1_BeforeUpdate(Cancel As Integer)
    Me.LISTE_CLIENT_1.Requery
    End Sub
     
    Private Sub CLIENT_2_BeforeUpdate(Cancel As Integer)
    Me.LISTE_CLIENT_2.Requery
    End Sub
     
    Private Sub COPIE_Click()
    Dim SQL As String
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim sSQL As String
     
        Set db = CurrentDb()
     
        sSQL = "SELECT SCHEMA FROM Table1 WHERE NAuto =" & VARIABLE1
     
        Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
     
     
    VAR_SCHEMA = rst.Fields("SCHEMA").Value
     
    DoCmd.RunSQL "Update TABLE1 Set SCHEMA = VAR_SCHEMA WHERE NAuto = " & VARIABLE2
    rst.Close
    End Sub
     
    Private Sub LISTE_CLIENT_1_Click()
     
    VARIABLE1 = LISTE_CLIENT_1.Column(0)
     
    End Sub
     
    Private Sub LISTE_CLIENT_2_Click()
     
    VARIABLE2 = LISTE_CLIENT_2.Column(0)
    End Sub
    Cela fonctionne presque, il ne me reste plus qu'une petite chose à résoudre je pense.
    A la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "Update TABLE1 Set SCHEMA = VAR_SCHEMA WHERE NAuto = " & VARIABLE2
    Ca ne veut pas me prendre la valeur de ma variable VAR_SCHEMA. J'ai toujours un message me demandant d'indiquer la valeur de cette variable.

    Auriez-vous une idée ?
    Cordialement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Dans ta requete, tu utilises VAR_SCHEMA comme etant un champ de la table alors qu'en realite, c'est une variable de ton module...

    Ton code devrait etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "Update TABLE1 Set SCHEMA = '" & VAR_SCHEMA & "' WHERE NAuto = " & VARIABLE2
    Bonne chance !

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour

    Merci SSJconsult pour ta réponse. Je savais bien que c'était une histoire ' ou de " mais sans réussir à trouver la syntaxe exacte.
    Ca fonctionne correctement.
    Merci encore

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

Discussions similaires

  1. [AC-2007] Copier une table depuis une base vers une autre
    Par Triton972 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/11/2009, 19h27
  2. Comment copier une table d'une BD vers une autre BD?
    Par js8bleu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/10/2009, 09h13
  3. Réponses: 4
    Dernier message: 03/07/2008, 15h53
  4. copier une table d'une bdd1 vers une bdd2
    Par passion_info dans le forum Bases de données
    Réponses: 3
    Dernier message: 30/10/2006, 18h57
  5. Réponses: 5
    Dernier message: 04/07/2006, 11h29

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