1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 60
    Points
    60

    Par défaut Parcourir une table et vérifier une condition pour charger une autre table

    Bonjour
    Je veux savoir comment faire pour parcourir une table Access nommée "Face" qui contient les champs suivants: "Code_face", "CUMUL" et "Usage_face"
    Je veux à chaque fois tester la valeur de "Usage_face" qui est de type booléen (valeur=oui ou non) si elle est égale à oui alors je stocke dans une table nommée "table_aux" la valeur du "code_face" correspondante dans le champ (clé primaire) "CodeF"
    Tout cela en cliquant sur un bouton
    NB: à chaque fois je clique sur ce bouton je dois d'abord vider la table "aux_table" pour mettre en place le nouveau contenu
    Moi j'ai écrit le code ci-dessous, toutefois il n'a pas marché!!!

    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
    Private Sub terminerchangement_Click()
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Dim i As Long
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("SELECT CodeF FROM table_aux")
    'Mise à jour de la table face (Comment?)
    'Vider la table table_aux
    'Empêche les demande de confirmation de s'afficher
    DoCmd.SetWarnings False
    'Efface le contenu de la table
    DoCmd.RunSQL "DELETE * FROM table_aux;"
    'Retablit les confirmations
    DoCmd.SetWarnings True
    'Passer au premier enregistrement
    oRst.MoveFirst
    'Vérifier l'usage de la face et remplissage
    If Usage_face = oui Then
        oRst = Face.Code_face
        oRst.MoveNext
    End If
    End Sub
    Merci de m'aider à corriger ce code pour qu'il fonctionne !!
    Cordialement

  2. #2
    Membre émérite
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 368
    Points : 2 390
    Points
    2 390

    Par défaut

    Bonsoir,
    je n'ai pas tout compris, notamment pourquoi il faut mettre à jour la table Face mais voilà à peu près (car non testé) le code pour ajouter dans table_aux :
    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
    Private Sub terminerchangement_Click()
    Dim oRst1 As DAO.Recordset	' table en lecture	
    Dim oRst2 As DAO.Recordset	' table en ajout
    Dim oDb As DAO.Database
    Dim i As Long
    Set oDb = CurrentDb
    Set oRst1 = oDb.OpenRecordset("SELECT * FROM Face",dbopensnapshot)
    Set oRst2 = oDb.OpenRecordset("SELECT * FROM table_aux",dbopendynaset)
    '
    'Vider la table table_aux
    'Empêche les demande de confirmation de s'afficher
    DoCmd.SetWarnings False
    'Efface le contenu de la table
    DoCmd.RunSQL "DELETE * FROM table_aux;"
    'Retablit les confirmations
    DoCmd.SetWarnings True
    '
    While not oRst1.EOF
    'Vérifier l'usage de la face et remplissage
    	If oRst1.("Usage_face") = True Then
    ' création nouvel enregistrement
    	    orst2.AddNew
    	    orst2.("CodeF") = oRst1.("Code_face")
    ' ... ici éventuellement les autres champs
    	    orst2.Update
    	End If	
    	oRst1.MoveNext
    Wend
    orst1.close
    orst2.close
    set orst1= nothing
    set orst2 = nothing
    End Sub

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 60
    Points
    60

    Par défaut

    Je vous remercie de tout mon cœur ça marche très bien grâce à vous
    Bonne soirée

  4. #4
    Membre émérite
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 368
    Points : 2 390
    Points
    2 390

    Par défaut

    Il y a combien d'enregistrements dans la table Face ?
    sinon on peut modifier le premier recordset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oRst1 = oDb.OpenRecordset("SELECT * FROM Face where Usage_face = True",dbopensnapshot)
    Dans ce cas, le test dans la boucle If oRst1.("Usage_face") = True Then ... est inutile

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 60
    Points
    60

    Par défaut

    hhhh merci beaucoup mais le problème c'était dans mon PC et non pas dans le code
    Maintenant il marche très bien et s'exécute rapidement (après tout il n'y a que 88 enregistrements!!)
    Merci de nouveau pour le temps que vous m'avez consacré

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/08/2009, 19h42
  2. Réponses: 3
    Dernier message: 25/11/2006, 12h56
  3. Condition pour empêcher une division par 0
    Par superdj dans le forum Pascal
    Réponses: 6
    Dernier message: 09/10/2006, 20h32
  4. faire une condition pour arrêter une macro
    Par db48752b dans le forum Access
    Réponses: 11
    Dernier message: 21/09/2006, 20h21
  5. [VBA-EXCEL]-condition pour ouvrir une msgbox
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2006, 20h51

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