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 :

Code qui fonctionne mais n'a aucun effet


Sujet :

VBA Access

  1. #1
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut Code qui fonctionne mais n'a aucun effet
    Bonjour,

    En train de développer une application, je souhaite (pour les tests) modifier les données d'un champ dans une table. Habitué à faire cela, je tombe aujourd'hui sur un os... Le code que j'ai écrit fonctionne parfaitement (j'ai fait du pas à pas et chaque enregistrement est "visité" mais... la valeur du champ de ma table ne se modifie pas.

    Si quelqu'un voit un bug ou une commande non adaptée dans mon code... MERCI ! (On a parfois besoin d'un regard externe pour mettre le doigt sur une erreur...)

    Pour info:
    rst!TVAAchatTaux = Numérique, Réel double
    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
    Public Function ModifsTblArticles() ' TemporaireDim rst     As DAO.Recordset
    Dim I       As Integer
    Dim Z       As Integer
    Dim Taux    As Double
     
     
        I = 1
        Set rst = CurrentDb.OpenRecordset("tblArticles")
        rst.MoveLast
        rst.MoveFirst
        For Z = 1 To rst.RecordCount
            If I = 1 Then Taux = 8
            If I = 2 Then Taux = 3.8
            If I = 3 Then Taux = 2.5
            rst.Edit
                rst!TVAAchatTaux = Taux
            rst.Update
            I = I + 1
            If I = 4 Then I = 1
        Next Z
        MsgBox "Terminé"
    End Function
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 585
    Points : 34 244
    Points
    34 244
    Par défaut
    Salut,

    tu ne boucles pas sur ton recordset !

    à ajouter
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Bon sang... mais c'est bien sûr... quel c... je peux faire

    Un grand merci !!!
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Salut ! ça m'est arrivé une fois lol ! Justement en aidant un gars rencontré sur ce forum : Il est passé à la maison avec une bouteille de whisky pour que je l'aide à débloquer son appli....Du coup j'ai oublié le moveNext....Comme il y avait une bonne centaine de milliers d'enregistrements à traiter, j'ai cru que le traitement était normalement long...Du coup : 1 verre, 2 verres, 3 verres...Et là j'me suis dit qu'il y avait ptet un problème :p
    Il m'a fallu relire le code plusieurs fois avant de m'en rendre compte !
    Moralité : je ne bois plus l'apéro quand je développe :p

    Sinon, perso, je pratique comme ceci au lieu de faire un moveLast, moveFirst puis d'utiliser le recordCount :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    While Not rst.EOF
        ........
        rst.moveNext
    Wend
    Et, plutôt que de faire plusieurs If, tu as le Select Case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select Case I
        Case 1
            ...
        Case 2, 3
            ...
        Case Else
     
    End Select
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

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

Discussions similaires

  1. Code qui fonctionne depuis un module mais pas depuis un workbook
    Par Gualino dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2011, 19h48
  2. Code qui fonctionne sur Matlab 7.1 mais pas sur R2009b?
    Par kariboubou dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/06/2011, 20h11
  3. Code qui fonctionne sous XP mais pas sous 7
    Par theclem35 dans le forum Débuter
    Réponses: 2
    Dernier message: 09/06/2011, 21h02
  4. [Prob] code qui fonctionne sous windows mais pas sous linux
    Par hannibal.76 dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/02/2011, 18h46
  5. Réponses: 1
    Dernier message: 18/11/2009, 14h28

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