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

IHM Discussion :

Reporter une valeur d'en tete sur plusieurs lignes [AC-2007]


Sujet :

IHM

  1. #1
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut Reporter une valeur d'en tete sur plusieurs lignes
    Bonjour à tous,
    Tout d'abord je ne sais pas si mon problème trouvera une solution, en effet c'est "in peu" tordu!

    J'ai une extraction SAP qui lorsque l'on extrait vers excel comporte:
    une en-tete de ligne avec la reference de l'article, la designation ainsi que la division.
    Ensuite les lignes suivantes reprennet le magasin concerné, le code movement, le poste, le document article...
    Le problème à l'import dans Access c'est que cette première ligne est "traitée" comme les autres.
    Je voudrais savoir si il était possible de dupliquer les informations: reference de l'article /designation/division
    Afin d'avoir une seule ligne.
    C'est pas "super clair" et j'ai illustré avec le fichier excel ci-joint

    Merci
    Totor
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    bonjour,
    le plus simple serait d'importer le fichier "tel que" dans une table temporaire et ensuite insérer les données filtrées depuis la table temporaire vers la table définitive.
    Pré-requis :
    - les 4 premiers enregistrements sont toujours existants et les données sont toujours à la même place
    - la table temporaire devra être créée à chaque importation (à partir d'une table modèle vide, par exemple)

    Pour importer les enregistrements "classiques" il suffit de filtrer à partir du 4ème enregistrement, pour les 3 colonnes "en ligne", on utilisera la fonction RechDom pour les récupérer dans les cellules 1, 4 et 6 dans l'enregistrement 4.

    Dans la base jointe en exemple, la requête rq_Remplir_Table_Definitive importe les données de la table tb_Import_XlsSAP vers la table tb_Definitive
    ImportXlsSAP.zip
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    une approche possible: Importer les données brutes dans une table d'import temporaire, puis générer des requêtes qui vont alimenter ta table To-Be
    Note: La table d'import temporaire comprendra des champs dont le nom est automatiquement généré par Access (F1, F2...)

    une première requête de création rentre les information de mouvement de magasin basée sur un critère tel que Doc.art. <>null
    une deuxième requête de modification charge article, désignation, et division basée sur le critère Div<>null

  4. #4
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Un grand merci... sauf que...je me suis mal exprimé
    Le fichier joint contenait qu'une seule ref. sauf que j'ai plusieurs lignes à traiter et l'utilisation de "ID=4" est une constante et la reference article change au gré des lignes.
    Par contre dans la colonne d'origine Champ 1 (article & Mag.), le numéro de Magasin contient toujours 4 digits ce qui n'est pas le cas de la reference article.

    Ci-joint in nouveau fichier excel plus complet.

    Un grand merci encore

    Totor
    DvpCom_EnTete.xlsx

  5. #5
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bon, et bien apparement pas de solution

    Merci quand même...

    Merci
    Totor

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si j'ai bien compris tu as quelque chose du genre dans tes donnees :

    • Article, designation,la division
      • magasin concerné1, le code movement, le poste, le document article...
      • magasin concerné2, le code movement, le poste, le document article...
      • magasin concerné3, le code movement, le poste, le document article...



    et tu souhaites avoir :

    • Article, designation, division, magasin concerné1, le code movement, le poste, le document article...
    • Article, designation, division, magasin concerné2, le code movement, le poste, le document article...
    • Article, designation, division, magasin concerné3, le code movement, le poste, le document article...


    Donc comme suggere je t'invite a charger tes donnees dans une table temporaire (tblTemp1), telle qu'elles sont initialement.
    Defini des champs textes de 255 caracteres pour eviter les problemes.

    Puis de creer une seconde table temporaire (tblTemp2) avec autant de champs que necessaire au final.
    Defini des champs textes de 255 caracteres pour eviter les problemes.

    Tu importes tes donnees "brutes" dans tblTemp1.
    En plus des champs pour les donnees brutes, tblTemp1 a un champ AutoNum ([Clef]) qui identifie chacun des enregistrements.

    Tu fais une procedure VBA qui va lire ligne a ligne tblTemp1 et ecrire dans tblTemp2.

    Un truc du genre qui suppose que tu peux distinguer un article d'un magazin.

    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
    private sub RepeterEnteteArticle
     
        dim db as dao.database: set db=currentdb
        dim r1 as dao.recordset: set r1=db.openrecordset("tblTemp1", dbOpenSnapshot)
        dim r1Entete as dao.recordset: set r1Entete=db.openRecordset("tblTemp1", dbOpenSnapshot)
        dim r2 as dao.recordset: set r2=db.openrecordset("tblTemp2", dbOpenDynaset)
     
        do while not r1.eof
     
             if r1.Champ1 [ici un critere pour decider si c est un article] then
                   call r1Entete.FindFirst("Clef=" & r1![Clef]) 'Memorise l'enregistrement d'entete
             elseif r1.Champ1 [ici un critere pour decider si c est un magazin] then
                    'Enregistre l'entete et le magazin associe
                    r2.addnew
                    r2![Champ1]=r1Entete![Champ1]
                    r2![Champ2]=r1Entete![Champ2]
                    'Ici tous les autres champs de l'entete
     
                    r2![ChampX]=r1![Champ1]
                    r2![ChampY]=r1![Champ2]
                    r2![ChampZ]=r1![Champ3]
                    'Ici tous les autres champs de detail
     
                    r2.update
                 else
                    call err.raise(5,,error(5) & " - Type d'enregistrement inconnu")
             end if
     
             r1.movenext
        loop
     
        r2.close: set r2=nothing
        r1Entete.close: set r1Entete=nothing
        r1.close: set r1=nothing
        db.close: set db=nothing
     
    end sub
    Apres tu n'as plus qu'a faire une requete de selection (reqDonneesImport) qui prend tes donnees de tblTemp2 pour les preparer pour l'ajout a la table definitive.

    Et une requete d'ajout qui prend les donnees de reqDonneesImport et les ajoute a la table definitive.

    Proceder comme ceci te permet de valider tes resultats a chaque etape et de mettre au point chaque "traitement" independement des autres.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    bonsoir,
    Le fichier joint contenait qu'une seule ref. sauf que j'ai plusieurs lignes à traiter et l'utilisation de "ID=4" est une constante et la reference article change au gré des lignes.
    dans ce cas, comme l'a dit marot_r, la seule solution c'est VBA. Je te joins donc une nouvelle version avec cette solution:
    ImportXlsSAP2.zip
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Ouah... Merci
    le problème c'est que je ne maitrise pas le code VB !
    J'ai donc "bêtement" copier/coller le code de tee_grandbois.
    Malheureusement le code article qui est répliqué reste le même (le 1er)

    ci-joint in fichier excel pour illustrer
    Dans l'onglet "ModuleResult" on voit bien le même numéro d'article / designation...
    Dans l'onglet "ShouldBe" j'ai mis des couleurs: les articles designation div, ils changent

    Je ne sais pas si je suis clair
    Quoi qu'il en soit MERCI pour votre dispo et votre temps !!!!

    TotorDvpCom_EnTete_V2.xlsx

  9. #9
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Je viens d'essayé avec le code de Marrot_r,

    et ça bloque!
    le champ ".Champ1" de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If r1.Champ1 = "TXXM" Then
    est surligné en jaune

    message d'erreur:
    Compile error:
    Method or data member not found
    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
    Private Sub Marot_Click()
     
        Dim db As dao.Database: Set db = CurrentDb
        Dim r1 As dao.Recordset: Set r1 = db.OpenRecordset("tblTemp1", dbOpenSnapshot)
        Dim r1Entete As dao.Recordset: Set r1Entete = db.OpenRecordset("tblTemp1", dbOpenSnapshot)
        Dim r2 As dao.Recordset: Set r2 = db.OpenRecordset("tblTemp2", dbOpenDynaset)
     
        Do While Not r1.EOF
     
             If r1.Champ1 = "TXXM" Then
                   Call r1Entete.FindFirst("Clef=" & r1![Clef]) 'Memorise l'enregistrement d'entete
             ElseIf r1.Champ1 <> "TXXM" Then
                    'Enregistre l'entete et le magazin associe
                    r2.AddNew
                    r2![Champ1] = r1Entete![Champ1]
                    r2![Champ2] = r1Entete![Champ2]
                    'Ici tous les autres champs de l'entete
     
                    r2![ChampX] = r1![Champ1]
                    r2![ChampY] = r1![Champ2]
                    r2![ChampZ] = r1![Champ3]
                    'Ici tous les autres champs de detail
     
                    r2.Update
                 Else
                    Call Err.Raise(5, , Error(5) & " - Type d'enregistrement inconnu")
             End If
     
             r1.MoveNext
        Loop
     
        r2.Close: Set r2 = Nothing
        r1Entete.Close: Set r1Entete = Nothing
        r1.Close: Set r1 = Nothing
        db.Close: Set db = Nothing
    End Sub
    J'ai bien un champ "Champ1" dans la table "tblTemp1"

    qu'est qui va pas? Comprends pas!
    Merci

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    bonjour,
    désolé, il y avait un petit bug qui trainait...
    Voici une nouvelle version corrigée:
    ImportXlsSAP3.zip
    Par contre, il y a une erreur dans la désignation des lignes 12 et 13 (articles 7008650728 et 7008650729) dans la feuille "ShouldBe", cela devrait être "ADAPTATEUR A" et pas "CABL ELEC EN"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    une attrape de la syntaxe en Access, il faut ecrire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If r1!Champ1 = "TXXM" Then
    ou cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If r1.Fields("Champ1") = "TXXM" Then
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci Marot_r

    ça fonctionne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If r1!Champ1 = "TXXM" Then
    par contre maintenant c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Err.Raise(5, , Error(5) & " - Type d'enregistrement inconnu")
    qui coince!
    Message d'erreur:
    Run-time error '5':
    Invalid procedure call or argument - Type d'enregistrement inconnu

    Merci

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je suppose que tu as aussi modifie :

    La valeur de Champ1 est probablement Null, verifie en pointant avec la souris sur r1![Champ1] ou tu peux ajouter l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print r1![Champ1]: doevents
    juste apres

    Cela va afficher le value de champ1 dans la fenetre d'execution immediate (visible dans l'editeur de code en tapant les touches [ctlr][g]).

    Si c'est bien cela il faudra decider que faire avec ces lignes.

    Tu peux les ignorer en ajoutant au code in esleif supplementaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    elseif isnull(r1![Camp1]) then
          'Ne rien faire
       else
          Call Err.Raise(5, , Error(5) & " - Type d'enregistrement inconnu")
    end if
    ou les traiter comme des non "TXXM".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ElseIf Nz(r1.Champ1, "") <> "TXXM" Then
    le Nz va remplacer le Null par une valeur, ici une chaine vide.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  14. #14
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci Marot_r
    Plus de message d'erreur mais le résultat dans la table "tblTemp2" est "bizarre"

    Le nombre de ligne devrait être de 35
    ci-joint l'excel onflet "For_Marot_r TO BE" & l'onglet "AS IS"
    DvpCom_EnTete_V3.xlsx

    Merci

    PS je n'arrive pas a attacher ma base

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    bonsoir,
    as-tu essayé ma dernière version qui donne les résultats corrects ?
    https://www.developpez.net/forums/d1.../#post10499261
    PS je n'arrive pas a attacher ma base
    il faut la "zipper"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  16. #16
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Tee,

    Ca fonctionne à la perfection !!

    In grand merci, c'est TOP!

    Merci à tous les deux, et encore une fois "heureusement que ce forum existe!".

    Encore merci, je ne m'en serais jamais sortit sans vous!

    Totor

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si tu consideres le sujet clos, merci d'appuyer sur le bouton en bas de discussion.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  18. #18
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci Marot_r

    En fait j'éssaie mais la correspondence entre les différents champs ne fonctionne pas, je continue.
    Dés que j'ai la solution je passe mon code et cloturerai le sujet.

    Totor

  19. #19
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    bonjour,
    En fait j'éssaie mais la correspondence entre les différents champs ne fonctionne pas, je continue.
    j'ai utilisé l'index des champs pour faciliter l'écriture du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRst2.Fields(4) = oRst1.Fields(1)
    mais tu peux l'écrire comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRst2.Fields("Mag") = oRst1.Fields("Champ1")
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  20. #20
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Voili, voilà le code du module adapté.

    Encore un grand merci!!

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    Option Compare Database
    Option Explicit
    Dim db As DAO.Database
    Dim sql As String, msg As String
     
    Function ImportXlsSAP()
     
    Dim stArticle As String
    Dim stDesignation As String
    Dim stDiv As String
    Dim stNom As String
    Dim I As Integer
     
    Dim oRst1 As Recordset
    Dim oRst2 As Recordset
    Dim oDb As Database
     
    Set oDb = CurrentDb
    Set oRst1 = oDb.OpenRecordset("Select * from tb_Import_XlsSAP where ID>3")
    Set oRst2 = oDb.OpenRecordset("tb_Definitive", dbOpenDynaset)
     
    Do While Not oRst1.EOF
                                            ' On garde en mémoire les infos ligne Article/Designation/Div.
        If Not IsNull(oRst1.Fields("Field1_ArtMag")) And Not IsNull(oRst1.Fields("Field4_Designation")) And Not IsNull(oRst1.Fields("Field6_Div")) And Not IsNull(oRst1.Fields("Field8_Nom")) Then
            stArticle = oRst1.Fields("Field1_ArtMag")
            stDesignation = oRst1.Fields("Field4_Designation")
            stDiv = oRst1.Fields("Field6_Div")
            stNom = oRst1.Fields("Field8_Nom")
        Else
            If IsNull(oRst1.Fields("Field1_ArtMag")) Then      ' Ligne vide: on passe à la suivante
                Debug.Print "id non traitée: " & oRst1.Fields(0)
            Else                                        ' Ligne à traiter, on ajoute dans la table
                oRst2.AddNew
                oRst2.Fields(1) = stArticle
                oRst2.Fields(2) = stDesignation
                oRst2.Fields(3) = stDiv
     
                oRst2.Fields(4) = oRst1.Fields(1) 'Mag --- oRst2.Fields(4)CHAMP ARRIVEE = oRst1.Fields(1)CHAMP DEPART
                oRst2.Fields(5) = oRst1.Fields(2) 'Mvt
                oRst2.Fields(6) = oRst1.Fields(3) 'Commande
                oRst2.Fields(7) = oRst1.Fields(5) 'poste
                oRst2.Fields(8) = oRst1.Fields(8) 'DocArt
                oRst2.Fields(9) = oRst1.Fields(9) 'Lot
                oRst2.Fields(10) = oRst1.Fields(10) 'Pos                                                               ' On convertit en date le champ11
     
                oRst2.Fields(11) = CDate(Replace(oRst1.Fields(11), ".", "/", 1, -1))
     
                oRst2.Fields(12) = oRst1.Fields(12) 'QteUQS
                oRst2.Fields(13) = oRst1.Fields(13) 'UQS
                oRst2.Fields(14) = oRst1.Fields(14) 'Point de Dechgt
                oRst2.Fields(15) = oRst1.Fields(15) 'ordre
                oRst2.Fields(16) = oRst1.Fields(16) 'Reception
                oRst2.Fields(17) = oRst1.Fields(17) 'Utilisateur
                oRst2.Fields(18) = oRst1.Fields(18) 'Fourn
                oRst2.Fields(19) = oRst1.Fields(19) 'MontantDI
                oRst2.Fields(20) = oRst1.Fields(20) 'TxtCodeMvt
                oRst2.Fields(21) = oRst1.Fields(21) 'Sté
                oRst2.Fields(22) = CDate(Replace(oRst1.Fields(22), ".", "/", 1, -1)) 'SaisieLe
                oRst2.Fields(23) = oRst1.Fields(23) 'SaisieA
                oRst2.Fields(24) = oRst1.Fields(24) 'Client
                oRst2.Fields(25) = oRst1.Fields(25) 'ClientMvt
                oRst2.Fields(26) = oRst1.Fields(26) 'NumRésa
     
                oRst2.Update
            End If
        End If
     
        oRst1.MoveNext
    Loop
    oRst1.Close
    oRst2.Close
    oDb.Close
     
    End Function

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2010, 16h53
  2. Réponses: 2
    Dernier message: 21/09/2009, 14h20
  3. La meme valeur dans un champ sur plusieurs lignes
    Par JeanduB dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2008, 14h52
  4. Reporter valeur enregistrement sur plusieurs lignes suivantes
    Par oarnold dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/03/2008, 17h52
  5. Ecrire une requete SQL sur plusieurs lignes
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 15/11/2004, 14h47

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