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

IHM Discussion :

Dans un formulaire de type tableau comment passer à la ligne suivante en VBA? [AC-2003]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut Dans un formulaire de type tableau comment passer à la ligne suivante en VBA?
    Bonjour tout le monde!!

    Afin de mieux exposé mon problème un petit impr écran:



    J'aimerais, plutot que de répéter la saisie 12 fois, créer une fonction qui remplisse le formulaire avec 12 lignes identiques aillant seulement la date qui change (+1 mois à chaque ligne)

    J'arrive à augmenter la date de 1mois, mais malheureusement, les informations s'écrivent toujours dans la ligne active (la 1ère ligne de mon sous formulaire de type tableau)...

    Mon code:

    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
    Private Sub Commande22_Click()
     
    If chkPer Then
     
        Dim SQL As String
        Dim i As Integer
        Dim lDate As String
        Dim j As Integer
        Dim p As Integer
     
        i = Me.txt11
        MsgBox i, , "Periode"
        lDate = Me.Date
     
        If txtPer = "Mensuel" Then p = 1
        If txtPer = "Trimestriel" Then p = 3
        If txtPer = "Annuel" Then p = 12
     
        Me.Texte23 = "Bonjour"
        MsgBox p, , "Pas"
     
        For j = 1 To (i) Step p
     
            lDate = DateAdd("m", p, lDate)
            MsgBox lDate, , "Date"
            Me.idBanque = Me.idBanque
            Me.Debit = Me.Debit
            Me.Date = lDate
            Me.Commentaire = Me.Commentaire
     
        Next
     
    End If
     
    DoCmd.Requery
     
    End Sub
    Il faudrait que j'arrive à changer de ligne active entre deux boucles... Mais je n'en connais pas la syntaxe...

    J'espère avoir été assez clair...

    Merci pour votre future aide!!
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    pour passer au record suivant (s'il existe déjà) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , , acNext
    Si, c'est un nouvel enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , , acNewRec
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    Ca ne marche pas, je saisie toujours sur la même ligne... Peut être ai-je une erreur dans mon code?

    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
    Private Sub Commande22_Click()
     
    If chkPer Then
     
        Dim SQL As String
        Dim i As Integer
        Dim lDate As String
        Dim j As Integer
        Dim p As Integer
     
        i = Me.txt11
        MsgBox i, , "Periode"
        lDate = Me.Date
     
        If txtPer = "Mensuel" Then p = 1
        If txtPer = "Trimestriel" Then p = 3
        If txtPer = "Annuel" Then p = 12
     
        Me.Texte23 = "Bonjour"
        MsgBox p, , "Pas"
     
        For j = 1 To (i) Step p
     
            lDate = DateAdd("m", p, lDate)
            MsgBox lDate, , "Date"
     
            DoCmd.GoToRecord , , acNewRec
            Me.idBanque = Me.idBanque
            Me.Debit = Me.Debit
            Me.Date = lDate
            Me.Commentaire = Me.Commentaire
     
        Next
     
    End If
     
    DoCmd.Requery
     
    End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Je ne connais pas assez ton application pour te proposer un code mais

    1° dans l’enregistrement en cours, quand tu sais que tu auras besoin d’un suivant qui lui ressemble, tu sauves (par exemple dans des Variables globales) les valeurs communes
    2° tu provoques la création de l'enregistrement suivant avec le docmd
    3° tu aménages les contrôles du nouvel enregistrement

    et tu reboucles le nbre de fois nécessaire.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    Lorsque je veux créer une nouvelle ligne dans mon formulaire de type tableau, j'enregistre la date de ma première ligne, j'ajoute +1 pour les mois (cela s'effectue correctement vérifier par MsgBox), puis j'essaye de donner à la deuxième ligne la valeur que je viens de calculer.
    Pour se faire j'enregistre ma date, je créer un nouvel enregistrement et je rentre ma date.

    Je ne comprends pas vraiment ce que tu veux dire par
    3° tu aménages les contrôles du nouvel enregistrement

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Je veux dire : leur attribuer la valeur que tu souhaites
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour ,
    Je pense que ton controle (celui ou tu viens decoller une valeur en vba) a besoin d'être enregistré avant de pouvoir passer au suivant.
    Insert donc Me.MonChamp.Requery avant Docmd.Goto....
    A+

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    Mon problème n'est pas vraiment l'enregistrement de mes paramètres, mais le passage à la ligne (enregistrement) suivante.
    J'écris dans la première ligne de mon tableau. Après je lance mon code et la date change bien mais dans la première ligne, hors je voudrais qu'elle s'inscrive dans la ligne suivante...

    Avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , , acNewRec
    ça ne change rien... Mais peut être ai-je fait une erreur de code...

    Je sais pas si je suis clair... Mon imprim'écran à l'air plus compréhensif...

    Merci pour vos réactions en tout cas!

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    je ne comprends pas ce que tu fais ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Me.idBanque = Me.idBanque
            Me.Debit = Me.Debit
            Me.Date = lDate
            Me.Commentaire = Me.Commentaire
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    En fait, j'ai bien compris qu'il fallait que je sauvegarde mes valeurs, et je ne me suis pas attardé dessus car je vois comment je dois procéder (avec sauvegarde du contexte dans une variable etc...). Par contre je ne sais pas comment passer à l'enregistrement suivant

    Avec un code comme ça

    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
    Private Sub Commande22_Click()
     
    If chkPer Then
     
        Dim SQL As String
        Dim i As Integer
        Dim lDate As String
        Dim j As Integer
        Dim p As Integer
     
        i = Me.txt11
        MsgBox i, , "Periode"
        lDate = Me.Date
     
        If txtPer = "Mensuel" Then p = 1
        If txtPer = "Trimestriel" Then p = 3
        If txtPer = "Annuel" Then p = 12
     
        MsgBox p, , "Pas"
     
        For j = 1 To (i) Step p
     
            lDate = DateAdd("m", p, lDate)
            MsgBox lDate, , "Date"
     
            DoCmd.GoToRecord , , acNewRec
     
            Me.idBanque = 2
            Me.Debit = 15
            Me.Date = lDate
            Me.Commentaire = "AAA"
     
     
        Next
     
    End If
     
    DoCmd.Requery
     
    End Sub
    Les données et la date+1mois devraient s'afficher dans les cases appropriées de la 2ème ligne. Hors, elles s'affichent dans les cases de la 1ère ligne. Et c'est là tout mon problème, je n'arrive pas a afficher ces valeurs dans ma 2ème puis 3ème puis... lignes. Je n'arrive pas créer un nouvel enregistrement...

    Je suis d'accord que la partie du code que tu signale est erronée, mais ce n'est pas de là que vient mon problème n'est ce pas?

    Merci pour ton aide dans tous les cas et je m'excuse par avance, mais Access me sort un peu par les yeux en ce moment...

  11. #11
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut Re
    Désolé d'insister
    A moins de me tromper ,si tu place un point d'arret sur Next
    après l'arret du code, si tu ouvre la table contenant tes enregistrements
    je ne pense pas que tu y trouveras ce nouvel enregistrement.
    Dans ces conditions ,tu ne peux donc pas aller au suivant .
    Avec une requete ajout, en vba , tu fait " .Add" , mais aussi ".Update"
    Pour moi , le ".Requery" équivaux à un Update puisque tu ne trouveras pas de methode update pour ton controle (Me.Commentaire.update !)

    A+

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    Si tu veux simplifier ta question en en donnant pas tout le contexte, alors simplifie vraiment.
    Ne nous parle pas de i, j ,p ... text11 dont on ignore le contenu
    Exemple : dans mon formulaire, j'ai 1 contrôle appelé « cpte », je voudrais créer 3 nouveaux enregistrements avec cpte = 1, 2, 3.
    Tu auras comme réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i As Integer
     For i = 1 To 3
      DoCmd.GoToRecord , , acNewRec
      Me.cpte = i
    Next i
    Bonne journée
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    @ Thierry
    Je vais de ce pas effectuer un debug de mon appli.

    @ Claude
    J'ai testé ton code sur une base basic avec une table cpt et une table banque (exemple). J'ai un formulaire banque et un sous formulaire de type tableau pour cpt.
    J'ai créé un bouton "ajoutenregistrement". Et il fonctionne très bien!!
    Donc je m'excuse d'avoir mis en doute ton code!
    L'erreur dans mon application ne vient donc pas du nouvel enregistrement mais bien d'ailleur!!
    Merci beaucoup pour votre aide et je m'excuse si j'ai pu vous paraitre désagréable, je n'en avais pas du tout l'intention...
    Je vais maintenant reprendre mon code pas à pas pour trouver mon erreur...

    Bonne journée à tout le monde!

  14. #14
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    si j'ai pu vous paraitre désagréable
    Pas de souci. A aucun moment.
    Reviens quand tu veux !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 81
    Points : 57
    Points
    57
    Par défaut
    Donc je viens de débuguer... Ca fonctionne enfin!! J'avoue que le code d'origine est très semblable au code final, voir identique...

    Bref peu importe, je vous poste le code pour info (j'ai essayé de commenté un peu...)

    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
    Private Sub Commande22_Click()
     
    If chkPer Then
     
        Dim varDate As String
        Dim varBanque As String
        Dim varDebit As String
        Dim varCommentaire As String
        Dim duree As Integer
        Dim cpt As Integer
        Dim pas As Integer
     
        ' On définit la durée de la saisie
        duree = Me.txt11
     
        'Si malistemodifiable"txtPer" ="Mensuel" ou "Trimestriel" ou "Annuel" mettre le pas à 1,3,12 mois
        If txtPer = "Mensuel" Then pas = 1
        If txtPer = "Trimestriel" Then pas = 3
        If txtPer = "Annuel" Then pas = 12
     
        'Sauvegarde des variables
        varDate = Me.Date
        varDebit = Me.Debit
        varBanque = Me.idBanque
        varCommentaire = Me.Commentaire
     
        'Pour cpt=1 jusqu'à "durée de la saisie" par marche de "pas"
        For cpt = 1 To duree Step pas
     
            'Faire Date + "pas"mois
            varDate = DateAdd("m", pas, varDate)
            'Prochain enregistrement
            DoCmd.GoToRecord , , acNewRec
            'Saisir la nouvelle date
            Me.Date = varDate
            'Saisir données sauvegardées
            Me.idBanque = varBanque
            Me.Commentaire = varCommentaire
            Me.Debit = varDebit
     
        'Recommencer
        Next cpt
     
    End If
     
    End Sub
    Merci à tout le monde en tout cas!

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

Discussions similaires

  1. [AC-2003] ajout d'enregistrements dans un formulaire de type "détail"
    Par jax54000 dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/04/2010, 13h00
  2. Tri dans un formulaire en mode tableau
    Par Grangy dans le forum IHM
    Réponses: 11
    Dernier message: 20/03/2008, 17h53
  3. [MySQL] Mettre un champ selected dans un formulaire de type select
    Par bl4ckwolf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/07/2007, 16h11
  4. [MySQL] Traitement apostrophe dans zone formulaire de type Text
    Par dfournier dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/11/2006, 16h14
  5. Réponses: 3
    Dernier message: 02/12/2005, 04h16

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