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 :

Dupliquer des enregistrements [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Dupliquer des enregistrements
    Bonjour,

    Tout d'abord, je vous précise que mon niveau en VBA est assez faible.

    Je souhaiterais pouvoir dupliquer les enregistrements d'une table en fonction des champs présents dans celle-ci.

    Exemple d'une ligne de la "TableA" :

    Champ 1 = Nom (Texte) : Dupont
    Champ 2 = Année (Texte) : Vide pour tout le monde
    Champ 3 = Montant (Monétaire) : 50,00 €
    Champ 4 = RefContact (Numérique) : 4036 -> Liaison avec 1 autre table
    Champ 5 = Année 2011 (Case à cocher) : True or False
    Champ 6 = Année 2010 (Case à cocher) : True or False
    Champ 7 = Année 2009 (Case à cocher) : True or False
    Champ 8 = Année 2008 (Case à cocher) : True or False
    Champ 9 = Année 2007 (Case à cocher) : True or False
    Champ 10 = Année 2006 (Case à cocher) : True or False
    Champ 11 = Année 2005 (Case à cocher) : True or False
    Champ 12 = Année 2004 (Case à cocher) : True or False
    Champ 13 = Année 2003 (Case à cocher) : True or False
    Champ 14 = Année 2002 (Case à cocher) : True or False
    Champ 15 = Année 2001 (Case à cocher) : True or False

    Pour cette ligne, je souhaiterais pouvoir dupliquer autant de ligne que de cases à cocher dont la valeur est à "True" et insérer dans le champ 2 l'année correspondante.

    De cette façon pour "Dupont", il y aurait les 3 lignes suivantes (cases à cocher 2011,2008 et 2006 = True) dans la table d'origine :

    Ligne 1

    Champ 1 = Nom (Texte) : Dupont
    Champ 2 = Année (Texte) : 2011
    Champ 3 = Montant (Monétaire) : 50,00 €
    Champ 4 = RefContact (Numérique) : 4036 -> Liaison avec 1 autre table

    Ligne 2

    Champ 1 = Nom (Texte) : Dupont
    Champ 2 = Année (Texte) : 2008
    Champ 3 = Montant (Monétaire) : 50,00 €
    Champ 4 = RefContact (Numérique) : 4036 -> Liaison avec 1 autre table

    Ligne 3
    Champ 1 = Nom (Texte) : Dupont
    Champ 2 = Année (Texte) : 2006
    Champ 3 = Montant (Monétaire) : 50,00 €
    Champ 4 = RefContact (Numérique) : 4036 -> Liaison avec 1 autre table

    Comment puis je faire cela ? J'ai 1700 enregistrements dans ma table et je me vois mal faire cela à la main.

    Merci pour vos conseils et votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    Hello
    tu n'as besoin d'aucune programation pouur réaliser ton 'rève'
    Il suffit de faire des requêtes ajout:
    la première avec:
    Nom, "2011", Montant, RefContact de la tableA avec Année 2011 (Case à cocher) = vrai
    la deuxième avec:
    Nom, "2010", Montant, RefContact de la tableA avec Année 2010 (Case à cocher) = vrai
    ainsi de suite, ça fat juste 10 requêtes ajout à exéctuer une seule fois chacune
    -------------------Simplifi----------comme si tout était simple--------

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Salut,

    Sinon voici une fonction (ça m'a permis de m'entraîner un ti peu ).
    Tu places ce code dans un module :
    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
    Public Function Transfert(tblOrigine As String, tblDestination As String)
     
        Dim i As Integer, j As String
        Dim rstSrc As Recordset, rstDest As Recordset
        Set rstSrc = CurrentDb.OpenRecordset(tblOrigine)
        Set rstDest = CurrentDb.OpenRecordset(tblDestination)
     
        rstSrc.MoveFirst
     
        While Not rstSrc.EOF
            For i = 2001 To 2011
                j = CStr(i)
                If rstSrc(j) = -1 Then
                    rstDest.AddNew
                    rstDest("Nom") = rstSrc("Nom")
                    rstDest("Annee") = i
                    rstDest("Montant") = rstSrc("Montant")
                    rstDest("RefContact") = rstSrc("RefContact")
                    rstDest.Update
                End If
            Next i
            rstSrc.MoveNext
        Wend
     
        Set rstSrc = Nothing
        Set rstDest = Nothing
     
    End Function
    Puis sur l'évènement Click d'un formulaire tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Transfert "MaTable1", "MaTable2"
    MaTable1 correspond au nom de ta table d'origine
    MaTable2 correspond au nom de ta table de destination

    Fais attention au nom et au type des champs(mon champ Année est Numérique et je l'ai écrit sans accent par exemple).

    En un click tu transfert toutes tes données J'ai essayé et ça marche
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour ces informations, j'ai choisi la première solution mais la seconde je la garde sous le coude, plus sympa je trouve.
    Ca fonctionne !
    Merci à tous les 2

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

Discussions similaires

  1. Dupliquer des enregistrements quand IDENTITY
    Par Barbrady dans le forum Développement
    Réponses: 1
    Dernier message: 25/08/2011, 12h09
  2. [AC-2007] Dupliquer des enregistrements selon la valeur d'un champ
    Par youssefbsf dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/08/2011, 14h27
  3. [XL-2002] Dupliquer des enregistrements
    Par eurekgeez dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/07/2011, 17h29
  4. Dupliquer des enregistrements
    Par yamino dans le forum SQL
    Réponses: 2
    Dernier message: 15/10/2008, 15h28
  5. dupliquer des enregistrements dans une nouvelle table
    Par CINQ_MARSIENNE dans le forum Modélisation
    Réponses: 3
    Dernier message: 15/09/2007, 00h31

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