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 :

boucle "while" dans un sous-formulaire


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut boucle "while" dans un sous-formulaire
    Bonjour,
    J'ai créé un formulaire sous Access 2003, VBA 6.3, Windows XP professionel qui s'appelle "F_Principal". Dedans, il y a une zone de texte "Texte1", un bouton "Commande30" et un sous-formulaire "SF_Test", dont les champs sont les n° de commande (champ numérique) et les prestations (champ texte).
    Lorsque j'appuie sur le bouton, je souhaite réaliser une boucle qui va chercher le champ prestation égal au texte tapé dans la zone "Texte1" et qui la remplace par le texte "Bonjour".
    Mon 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
    Private Sub Commande30_Click()
    Me.SF_Test.Form.Recordset.MoveFirst
    Do While Forms!F_Principal!SF_Test![Numéro de commande] > 0
    Dim c As String
    c = Me.Texte1
        If Forms!F_Principal![SF_Test]![prestation] = c Then
        Forms!F_Principal![SF_Test]![prestation] = "Bonjour !"
        Else
    End If
    Me.SF_Test.Form.Recordset.MoveNext
    Loop
    End Sub
    En testant, le message d'erreur "Erreur d'exécution '3021': Aucun enregistrement en cours apparaît." et la ligne Me.SF_Test.Form.Recordset.MoveNext est surlignée en jaune
    En essayant le même code dans un formulaire (et non plus un sous-formulaire), le code fonctionne bien.
    Merci beaucoup de votre aide !

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    essaie avec
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Me.SF_Test.Form.Recordset.MoveFirst
    Do While Not Me.SF_Test.Form.Recordset.EOF
    ....
       Me.SF_Test.Form.Recordset.MoveNext
    Loop
    C'est une manière plus classique de parcourir un recordset.

    A+

  3. #3
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    Je te remercie, cela fonctionne parfaitement.
    ++
    Philebaucis

  4. #4
    Expert confirmé

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Par défaut
    Tu as oublié le tag
    ça permettrait ...

  5. #5
    Nouveau candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par défaut Un grans Merci pour cet exemple que j'ai récupéré et adapté pour ma base
    Citation Envoyé par philebaucis Voir le message
    Bonjour,
    J'ai créé un formulaire sous Access 2003, VBA 6.3, Windows XP professionel qui s'appelle "F_Principal". Dedans, il y a une zone de texte "Texte1", un bouton "Commande30" et un sous-formulaire "SF_Test", dont les champs sont les n° de commande (champ numérique) et les prestations (champ texte).
    Lorsque j'appuie sur le bouton, je souhaite réaliser une boucle qui va chercher le champ prestation égal au texte tapé dans la zone "Texte1" et qui la remplace par le texte "Bonjour".
    Mon 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
    Private Sub Commande30_Click()
    Me.SF_Test.Form.Recordset.MoveFirst
    Do While Forms!F_Principal!SF_Test![Numéro de commande] > 0
    Dim c As String
    c = Me.Texte1
        If Forms!F_Principal![SF_Test]![prestation] = c Then
        Forms!F_Principal![SF_Test]![prestation] = "Bonjour !"
        Else
    End If
    Me.SF_Test.Form.Recordset.MoveNext
    Loop
    End Sub
    En testant, le message d'erreur "Erreur d'exécution '3021': Aucun enregistrement en cours apparaît." et la ligne Me.SF_Test.Form.Recordset.MoveNext est surlignée en jaune
    En essayant le même code dans un formulaire (et non plus un sous-formulaire), le code fonctionne bien.
    Merci beaucoup de votre aide !

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

Discussions similaires

  1. [AC-2007] Boucle de controle de champs dans un sous-formulaire
    Par SophiePops dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2015, 08h12
  2. [AC-2010] Création d'une boucle dans un sous-formulaire
    Par bigounet dans le forum Access
    Réponses: 5
    Dernier message: 18/08/2014, 05h09

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