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 :

Modification d'un enregistrement selon la valeur d'un champ


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Modification d'un enregistrement selon la valeur d'un champ
    Bonjour,

    Le code est le 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
    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
     
    Option Compare Database
     
    Private Sub btValider2_Click()
    Set FrmRptTbl = CurrentDb.OpenRecordset("FrmRptTbl", DB_OPEN_TABLE)
    stocker = Forms!FrmRpt.Controls("frmCodeTxt").Value
     
     
    While Not FrmRptTbl.EOF
    If FrmRptTbl("Code") = stocker Then
     
    FrmRptTbl.Edit
    FrmRptTbl("NomDoss") = Forms!FrmRpt.Controls("FrmNomDoss").Value
    FrmRptTbl("FichPec") = Forms!FrmRpt.Controls("FrmFichPec").Value
    FrmRptTbl("Descri") = Forms!FrmRpt.Controls("FrmDescri").Value
    FrmRptTbl("Emplac") = Forms!FrmRpt.Controls("FrmEmplac").Value
    FrmRptTbl("Add") = Forms!FrmRpt.Controls("FrmAdd").Value
    FrmRptTbl("Aps") = Forms!FrmRpt.Controls("FrmAps").Value
    FrmRptTbl("Dce") = Forms!FrmRpt.Controls("FrmDce").Value
    FrmRptTbl("DpeGc") = Forms!FrmRpt.Controls("FrmDpeGc").Value
    FrmRptTbl("DpeEq") = Forms!FrmRpt.Controls("FrmDpeEq").Value
    FrmRptTbl("DpeElec") = Forms!FrmRpt.Controls("FrmDpeElec").Value
    FrmRptTbl("Pc") = Forms!FrmRpt.Controls("FrmPc").Value
    FrmRptTbl("Rc") = Forms!FrmRpt.Controls("FrmRc").Value
    FrmRptTbl("Ae") = Forms!FrmRpt.Controls("FrmAe").Value
    FrmRptTbl("Ccap") = Forms!FrmRpt.Controls("FrmCcap").Value
    FrmRptTbl("CahGs") = Forms!FrmRpt.Controls("FrmCahGs").Value
    FrmRptTbl("DossRm") = Forms!FrmRpt.Controls("FrmDossRm").Value
    FrmRptTbl("Securi") = Forms!FrmRpt.Controls("FrmSecuri").Value
    FrmRptTbl("Ct") = Forms!FrmRpt.Controls("FrmCt").Value
    FrmRptTbl("CrChan") = Forms!FrmRpt.Controls("FrmCrChan").Value
    FrmRptTbl("ConstHuiss") = Forms!FrmRpt.Controls("FrmConstHuiss").Value
    FrmRptTbl("DossPhot") = Forms!FrmRpt.Controls("FrmDossPhot").Value
    FrmRptTbl("PvContr") = Forms!FrmRpt.Controls("FrmPvContr").Value
    FrmRptTbl("PvEss") = Forms!FrmRpt.Controls("FrmPvEss").Value
    FrmRptTbl("DprGc") = Forms!FrmRpt.Controls("FrmDprEq").Value
    FrmRptTbl("DprEq") = Forms!FrmRpt.Controls("FrmDprEq").Value
    FrmRptTbl("DprElec") = Forms!FrmRpt.Controls("FrmDprElec").Value
    FrmRptTbl("DossEco") = Forms!FrmRpt.Controls("FrmDossEco").Value
    FrmRptTbl("Courr") = Forms!FrmRpt.Controls("FrmCourr").Value
    FrmRptTbl("DocRecep") = Forms!FrmRpt.Controls("FrmDocRecep").Value
    FrmRptTbl("Doe") = Forms!FrmRpt.Controls("FrmDoe").Value
    FrmRptTbl("FichProd") = Forms!FrmRpt.Controls("FrmFichProd").Value
    FrmRptTbl("Dprec") = Forms!FrmRpt.Controls("FrmDprec").Value
    FrmRptTbl("DprecGc") = Forms!FrmRpt.Controls("FrmDprecGc").Value
    FrmRptTbl("DprecElec") = Forms!FrmRpt.Controls("FrmDprecElec").Value
    FrmRptTbl("DprecEq") = Forms!FrmRpt.Controls("FrmDprecEq").Value
    FrmRptTbl("Pid") = Forms!FrmRpt.Controls("FrmPid").Value
    FrmRptTbl("Af") = Forms!FrmRpt.Controls("FrmAf").Value
    FrmRptTbl("Si") = Forms!FrmRpt.Controls("FrmSi").Value
    FrmRptTbl("Geo") = Forms!FrmRpt.Controls("FrmGeo").Value
    FrmRptTbl("Cctp") = Forms!FrmRpt.Controls("FrmCctp").Value
    FrmRptTbl.Update
    FrmRptTbl.MoveLast
    Else
    FrmRptTbl.MoveNext
    End If
    Wend
    FrmRptTbl.Close
    DoCmd.Close acForm, "FrmRpt", acSaveNo
     
    Exit Sub
    End Sub
    Je m'explique: je souhaiterais modifier l'enregistrement dont le code est la variable stocker.
    Pour celà, j'ai fait un balayage du recordset et quand il trouve la bonne valeur, il édite l'enregistrement.
    Le problème est que ça ne marche pas pour le dernier enregistrement (dans le sens le dernier que j'ai enregistré). à chaque fois access plante et je suis obligé de faire ctrl + alt +suppr . J'ai essayé différents types de boucles comme while not eof, loop until eof , ..mais le problème n'est pas résolu.

    Quelqu'un verrait t'il ce qui coince dans mon code?
    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Je répond peut-être à coté mais mais si le dernier enregistrement remplit la condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FrmRptTbl("Code") = stocker
    Alors le code suivant vas être exécuté :

    Comme le contrôle "code" de cet enregistrement n'as pas changé il va de nouveau satisfaire la condition de la boucle et ainsi de suite => boucle infini.

    Si j'ai bien compris ce que tu voulait faire il vaut mieux sortir de la boucle avec ceci :

    De plus j'avoue ne pas comprendre la ligne 62 et 63 ...

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci ça marche

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    hum par hasard, tu saurais pas comment on fais pour
    dans une zone de liste modifiable dont les valeurs proviennent d'une table,
    afficher une seule fois chaque valeur dans la liste (le champ en question n'est pas la clé et comporte des doublons)?
    Merci.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    Cool :-)

    J'aurais testé ça perso (dans le paramètre "Row Source" (en VO) de ton champ ou de ton contrôle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT TaTable.TonChamp FROM TaTable;
    Mais jamais essayé.

Discussions similaires

  1. [2008R2] Dupliquer une ligne d'enregistrement selon une valeur de cette ligne
    Par JazzFun dans le forum Développement
    Réponses: 7
    Dernier message: 09/06/2015, 13h02
  2. [AC-2007] Enregistrement coloré selon la valeur d'un champ
    Par AminaAccess dans le forum IHM
    Réponses: 2
    Dernier message: 02/02/2013, 05h41
  3. Réponses: 4
    Dernier message: 26/07/2012, 15h36
  4. [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
  5. Réponses: 2
    Dernier message: 30/11/2007, 17h54

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