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 :

Problème dans une boucle de parcours d'une zone de liste - Perte variant [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 613
    Points : 214
    Points
    214
    Par défaut Problème dans une boucle de parcours d'une zone de liste - Perte variant
    Bonjour,

    Je suis confronté à un problème dans une application ACCESS 2007 (mdb) que je n'arrive pas à cerner. Je vais essayer d'être très synthétique.

    Contexte :
    Dans un formulaire un utilisateur peut multi-sélectionner dans une zone de liste un ensemble d'outillages. La fonction de ce formulaire est de déplacer des outillages d'un site à un autre en tenant compte de déplacements déjà en cours ou pas. Les déplacements se font sous la forme d'un aller/retour.
    Donc selon le déplacement demandé le traitement va créer un déplacement ou va modifier un déplacement en cours.

    Code :

    Je parcours ma liste d'éléments sélectionnés avec le code 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
     
    Dim varEltListe as variant
    'AJouté cette ligne mais ne change rien
    varEltListe = Null
    ...
    For Each varEltListe In Me.listeOutillages
        '.... cas 1 : création demandée
        infosRetour = FonctionCreation(InfosOutillage)
        Me.listeOutillages.Selected(varEltListe) = False
        '.... cas 2 : Modification demandée. On donne ID déplacement existant
        infosRetour = FonctionModification(IDDeplacement, InfosOutillage)
        Me.listeOutillages.Selected(varEltListe) = False
        ....
    Next varEltListe
    Problème rencontré :
    Lorsque je fais des créations tout se passe bien.
    Lorsque je fais des modifications le code perd la référence à varEltListe et donc me plante sur le next ou ailleurs (desélection de la ligne dans la liste).
    L'erreur soulevée est une erreur 2467 : L'expression entrée fait référence à un objet supprimé ou déplacé.

    La seule différence, l'appel d'une procédure publique de création et/ou modification.

    Le code des procédure est censé être très indépendant. Travail sur des recordset, transactions, etc.. Aucune erreur levée dans cette partie de code.
    InfosRetour est une structure qui comporte une valeur numérique et une chaine de caractères.
    InfosOutillage est une structure également.

  2. #2
    Rédacteur/Modérateur

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

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

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

    c'est un problème qu'on constate aussi en passant sous vb.net.
    L'utilisation de boucle for each sur une collection de valeurs qui est amenée à varier en cours de processus.

    Essaie de passer par une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For  i = LBound(me.listeOutillages) to Ubound(me.listeOutillages)
     
    Next i

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 613
    Points : 214
    Points
    214
    Par défaut
    Merci de ta réponse.
    j'avais essayé aussi avec une boucle sans plus de succès.

    Pour finalement trouver un docmd.close qui trainait dans ma fonction de mise à jour alors qu'il n'avait rien à y faire !
    (Résultat d'un copier-coller de code pris dans un autre formulaire).

    Désolé de t'avoir dérangé..

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

Discussions similaires

  1. [MySQL] Problème dans ma boucle - ne prend qu'une valeur au lieu de tous
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/03/2010, 23h35
  2. Réponses: 2
    Dernier message: 25/09/2009, 13h56
  3. Réponses: 3
    Dernier message: 26/12/2006, 12h34
  4. Sortir d'une boucle de parcour d'un Recordset
    Par Mariboo dans le forum IHM
    Réponses: 2
    Dernier message: 12/06/2006, 19h07
  5. Réponses: 3
    Dernier message: 06/07/2004, 11h21

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