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 :

Définir valeur selon donnée présente dans enregistrement précédent


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut Définir valeur selon donnée présente dans enregistrement précédent
    Bonjour,

    Je debute en vba et me suis appuyé sur le tuto "Définition et manipulation de données avec DAO" pour tenter ma première réalisation.
    Malheureusement je suis bloqué pour la raison suivante.
    Dans ma table je souhaite renseigner un champ en fonction de la valeur d'un autre mais est situé dans l'enregistrement précédent.

    dans l'exemple ci-desous voici ma condition.

    si Niveau (ligne précédente)<> Niveau (ligne active) alors Resultat = "OK"

    Niveau Resultat
    1 ----->
    1 ----->
    2 -----> OK
    2 ----->
    1 -----> OK
    1 ----->
    3 -----> OK
    3 ----->
    2 -----> OK
    3 -----> OK


    Espérant avoir été clair.
    Je vous remercie par avance pour votre aide.
    Cordialement

    StSym

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    salut stsym,

    il te faudrait un truc comme ca (pas testé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set rst = currentdb.openrecordset("latable")
    rst.movefirst
    if rst.recordcount>1 then niveauPrec=rst![niveau]:rst.movenext
     
    while not rst.eof
    if rst![niveau]=niveauPrec then msgbox "ok" 'traitement à faire ici
    niveauPrec=rst![niveau]
    rst.movenext
    wend

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonjour Vodiem,

    Merci pour ta réponse rapide à ma demande.
    Dans un premier il faut que je la teste sur l'exemple proposé.
    Mon souci est qu'il faut que je l'imbrique dans mon cas réel qui comporte d'autres conditions.
    Je teste ce WE mais suis certain revenir sur le forum pour demander de l'aide.
    Cdt
    StSym

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonjour,
    Bonjour

    J'ai testé le code sur mon premier exemple et tout fonctionne bien.

    Par contre comme je le disais il faut que je pose d'autres conditions pour obtenir le résultat.

    il faut tenir compte du "niveau" et de la valeur de la colonne "UE et celle de "Resultat".

    Voici les conditions.

    ' si Niveau (ligne active) >= Niveau (ligne précédente) et UE (ligne précédente) = "NON"

    ' OU

    ' si Niveau (ligne active) => Niveau (ligne précédente) et Resultat (ligne précédente) = "OK"

    ' alors Resultat = "OK"


    Niveau____UE__ Resultat
    1 ______ oui
    2 ______
    1 ______ non
    2 _______________ok
    3 _______________ok
    1 ______ oui
    2 ______
    1 ______ non
    2 _______________ok



    J'ai joué à l'apprenti sorcier car j'ai tenté d'adapter le code en fonction du précédent mais je n'ai aucun résultat.


    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
    Function Table1()
    Set Rst = CurrentDb.OpenRecordset("Table1")
     
    niveauPrec = Rst![niveau]
    niveauPrec1 = Rst![UE]
    niveauPrec2 = Rst![Resultat]
     
    Rst.MoveFirst
    If Rst.RecordCount > 1 Then niveauPrec = Rst![niveau]: Rst.MoveNext
    If Rst.RecordCount > 1 Then niveauPrec1 = Rst![UE]: Rst.MoveNext
    If Rst.RecordCount > 1 Then niveauPrec2 = Rst![Resultat]: Rst.MoveNext
     
    While Not Rst.EOF
    If Rst![niveau] >= niveauPrec And niveauPrec1 = "non" Or Rst![niveau] >= niveauPrec And niveauPrec2 = "ok" Then
     
      Rst.Edit
      Rst.Fields("Resultat").Value = "ok"
      Rst.Update
    End If
     
    Rst.MoveNext
    Wend
    End Function

    D'avance merci pour votre aide.

    Cordialement.
    StSym

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    j'attendais pas de tes nouvelles avant le wk...
    je sais pas si tu veux une réponse d'ici là... ^^

    aller je te mets sur la voie:
    rapidement comme ca je dirais:
    > ligne 4->6 inutile surtout que s'il n'y a pas d'enregistrement il y aura erreur.
    > qu'il faut regrouper dans des parenthèses tes conditions sinon il les enchaine à la suite et cela ne correspondra pas à ce que tu veux
    > tu ne réactualise aucun niveauPrecedent(x)


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonjour Vodiem,

    Eh oui je pensais pouvoir attendre ce WE pour tester mais ta réponse et ses pistes, m'ont fait lever plutôt ce matin.
    Bon je suis capable de mettre des apostrophes sur les lignes inutiles , mais ne sûr de savoir où mettre les parenthèses dans les conditions et là encore moins, tester tester les niveaux précédents.
    Une fois de plus , d'avance merci pour ton aide.
    Cordialement
    StSym

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 29/05/2013, 18h13
  2. Convertir des données présentes dans une colonne
    Par padawan31 dans le forum MySQL
    Réponses: 1
    Dernier message: 16/07/2009, 11h11
  3. [MySQL] Données présentes dans un tableau dynamique
    Par developpeuse20 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 30/03/2009, 14h01
  4. [MySQL] test si une valeur est déjà présente dans la table ou non
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 14/06/2007, 13h42
  5. Réponses: 3
    Dernier message: 10/05/2006, 21h37

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