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 :

Générer automatiquement des nouveaux enregistrements [AC-2003]


Sujet :

VBA Access

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut Générer automatiquement des nouveaux enregistrements
    Bonjour

    je souhaiterai générer automatiquement des nouveaux enregistrement dans une table qui ce compose de la maniére suivant,


    id DESIGNATION PREDECESSEUR
    2BX05/012 Travaux de tuyauterie 2BEX05/008 , 2BEX05/010 ,BEX05/022

    générer autant de nouveaux enregistrement qu'il y a de predecesseur

    le résultat que je souhaite est le suivant

    id DESIGNATION PREDECESSEUR
    2BX05/012 Travaux de tuyauterie 2BEX05/008
    2BX05/012 Travaux de tuyauterie 2BEX05/010
    2BX05/012 Travaux de tuyauterie BEX05/022

    merci d'avance

    cordialement
    Images attachées Images attachées  

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    C'est ce que tu as :
    Citation Envoyé par ROUSSIGNE Voir le message
    id DESIGNATION PREDECESSEUR
    2BX05/012 Travaux de tuyauterie 2BEX05/008 , 2BEX05/010 ,BEX05/022
    C'est que tu veux :
    Citation Envoyé par ROUSSIGNE Voir le message
    id DESIGNATION PREDECESSEUR
    2BX05/012 Travaux de tuyauterie 2BEX05/008
    2BX05/012 Travaux de tuyauterie 2BEX05/010
    2BX05/012 Travaux de tuyauterie BEX05/022
    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    oui c'est ca j'ai 3 champs dans une table:

    id
    désignation
    prédecesseur

    avec l'exemple d'enregistrement joint que l'on trouve dans cette table

    j'espére etre claire

    merci encore

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Actuellement tu as les données sous cette forme ou elles te parviennent sous cette forme ?
    2BX05/012 Travaux de tuyauterie 2BEX05/008 , 2BEX05/010 ,BEX05/022

    Et tu voudrais les mettre sous cette forme :
    2BX05/012 Travaux de tuyauterie 2BEX05/008
    2BX05/012 Travaux de tuyauterie 2BEX05/010
    2BX05/012 Travaux de tuyauterie BEX05/022

    Ai-je bien compris ?

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    bonjour

    Je récupére un export d'un logiciel de plannification P6 (primavera)

    actuellement dans le champs [ID] j'ai l'information suivante "2BX05/012"

    dans le champs [designation] j'ai l'information suivante "Travaux de tuyauterie"

    dans le champs [predecesseur] j'ai l'information suivante "2BEX05/008 ,

    2BEX05/010 ,BEX05/022" , je souhaiterai génerer automatiquement autant

    d'enregistrement qu'il y a de predecesseur aprés la virgule , pour avoir le résultat suivant:3 enregistrements au lieu d'un:

    2BX05/012 Travaux de tuyauterie 2BEX05/008
    2BX05/012 Travaux de tuyauterie 2BEX05/010
    2BX05/012 Travaux de tuyauterie BEX05/022

    merci d'avance

    cordialement

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    L'information suivante est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2BX05/012|Travaux de tuyauterie|2BEX05/008 , 2BEX05/010 ,BEX05/022
    • dans une table
    • dans un fichier
    • autre
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    je récupére un export d'un logiciel de planification que je colle dans une table access qui est compose de 3 champs: ID DESIGNATION PREDECESSEUR

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Avec quelque chose comme cela tu devrais y arriver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        SQL = "SELECT * FROM T_DONNEES_INPORTEES"
        Set oSQL = CurrentDb.OpenRecordset(SQL)
        Do Until oSQL.EOF
            VAL_ID = oSQL("ID")
            VAL_DG = oSQL("DESIGNATION")
            VAL_PD = oSQL("PREDECESSEUR")
            DET_PD = Split(VAL_PD, ",")
            For i = 0 To UBound(DET_PD)
                DoCmd.RunSQL "INSERT INTO T_DESTINATION (ID, DESIGNATION, PREDECESSEUR) " _
                    & "VALUES ('" & VAL_ID & "', '" & VAL_DG & "', '" & DET_PD(i) & "')"
            Next
            oSQL.MoveNext
        Loop
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    ce code je le met ou ?

    je crée une requete ? un module?

    est ce que le petit o devant SQL c'est normal "oSQL" ?

    merci encore de m'accorder de votre temps

  10. #10
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Oui tu crées un module et tu colles 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
    Function Transfert()
        SQL = "SELECT * FROM T_DONNEES_INPORTEES"
        Set oSQL = CurrentDb.OpenRecordset(SQL)
        DoCmd.SetWarnings False
        Do Until oSQL.EOF
            VAL_ID = oSQL("ID")
            VAL_DG = oSQL("DESIGNATION")
            VAL_PD = oSQL("PREDECESSEUR")
            DET_PD = Split(VAL_PD, ",")
            For i = 0 To UBound(DET_PD)
                DoCmd.RunSQL "INSERT INTO T_DESTINATION (ID, DESIGNATION, PREDECESSEUR) " _
                    & "VALUES ('" & VAL_ID & "', '" & VAL_DG & "', '" & DET_PD(i) & "')"
            Next
            oSQL.MoveNext
        Loop
        DoCmd.SetWarnings true
    End Function
    Ensuite tu te mets dans la fonction et tu fais F5
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il ne faut utiliser une fonction mais une routine (Sub).

    Une fonction est faite pour renvoyer un résultat, ce qui n'est pas le cas ici, car c'est un traitement.

    Philippe

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    ton code fonctionne , mais il crée tous les enregistrement en double ?

    exemple:

    2BX05/012 Travaux de tuyauterie 2BEX05/008
    2BX05/012 Travaux de tuyauterie 2BEX05/008
    2BX05/012 Travaux de tuyauterie 2BEX05/010
    2BX05/012 Travaux de tuyauterie 2BEX05/010
    2BX05/012 Travaux de tuyauterie BEX05/022
    2BX05/012 Travaux de tuyauterie BEX05/022
    2BX05/012 Travaux de tuyauterie 2BEX05/008 , 2BEX05/010 ,BEX05/022

    une fois que le code à créer les nouveaux enregistrements il faudrait supprimer l'enregistrement qui à plusieur predecesseur

  13. #13
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Peux-tu envoyer ton code VBA ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Voici le 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
    Function generationautomatique()
        SQL = "SELECT * FROM PREDE"
        Set oSQL = CurrentDb.OpenRecordset(SQL)
        DoCmd.SetWarnings False
        Do Until oSQL.EOF
            VAL_ID = oSQL("ID")
            VAL_DG = oSQL("DESIGNATION")
            VAL_PD = oSQL("PREDECESSEUR")
            DET_PD = Split(VAL_PD, ",")
            For i = 0 To UBound(DET_PD)
                DoCmd.RunSQL "INSERT INTO PREDE(ID, DESIGNATION, PREDECESSEUR) " _
                    & "VALUES ('" & VAL_ID & "', '" & VAL_DG & "', '" & DET_PD(i) & "')"
            Next
            oSQL.MoveNext
        Loop
        DoCmd.SetWarnings True
    End Function

  15. #15
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Il faudrait que tu crées une table temporaire pour enregistrer les données venant de ton appli de planif, que tu videras une fois le transfert fait.

    Ce qui donnera :
    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
    Function generationautomatique()
        SQL = "SELECT * FROM TEMPO_PREDE"
        Set oSQL = CurrentDb.OpenRecordset(SQL)
        DoCmd.SetWarnings False
        Do Until oSQL.EOF
            VAL_ID = oSQL("ID")
            VAL_DG = oSQL("DESIGNATION")
            VAL_PD = oSQL("PREDECESSEUR")
            DET_PD = Split(VAL_PD, ",")
            For i = 0 To UBound(DET_PD)
                DoCmd.RunSQL "INSERT INTO PREDE(ID, DESIGNATION, PREDECESSEUR) " _
                    & "VALUES ('" & VAL_ID & "', '" & VAL_DG & "', '" & DET_PD(i) & "')"
            Next
            oSQL.MoveNext
        Loop
        DoCmd.RunSQL = "DELETE TEMPO_PREDE.* FROM TEMPO_PREDE"
        DoCmd.SetWarnings True
    End Function
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    J'ai crée la table tempoprede

    il y a un message:Erreur de compilation:
    Argument non facultatif

    c'est au niveau de la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL = "DELETE TEMPOPREDE. * FROM TEMPOPREDE"
    il surligne ".Run SQL ="

  17. #17
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    C'est pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL = "DELETE TEMPOPREDE.* FROM TEMPOPREDE"
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Bonjour Vincent

    je ne comprend pas ta dernière réponse suite au message d'erreur que j'ai

    indiqué

  19. #19
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Tu as un espace dans ta ligne, il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL = "DELETE TEMPOPREDE.* FROM TEMPOPREDE"
    Et tu as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL = "DELETE TEMPOPREDE.ESPACE* FROM TEMPOPREDE"
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    merci pour tous , vous m'avez bien dépanné

    cordialement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2015, 15h20
  2. Réponses: 13
    Dernier message: 09/02/2010, 10h04
  3. Générer automatiquement des fichiers Word
    Par laurent35000 dans le forum Access
    Réponses: 3
    Dernier message: 13/06/2008, 17h33
  4. Générer automatiquement des fiches HTML
    Par defdef dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 11/05/2007, 14h04
  5. Réponses: 2
    Dernier message: 05/06/2006, 14h24

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