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 :

Ajout de plusieurs enregistrement dans une table


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut Ajout de plusieurs enregistrement dans une table
    Salut à tous, comme dit le titre, je veux enregistrer plusieurs enregistrement dans une table, mais le problème que j'ai, si l'on ne remplis que deux champs lors de l'enregistrement les champs vides aussi s'enregistrent, je veux limiter seulement pour des champs qui sont renseignés. Voici le bout de code que j'ai pour le moment :
    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
    Private Sub Enregistrer_Click()
    Dim db As DAO.Database
    Set db = CurrentDb
    Dim r As DAO.Recordset
    Set r = db.OpenRecordset("Table1")
    Const NOMRE_LIGNE As Long = 5
     
    Dim i As Long
    For i = 1 To NOMRE_LIGNE
    If IsNull(Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i)) Or _
        IsNull(Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i)) Then
        MsgBox "Champs vides"
        Exit Sub
    Else
       r.AddNew
       'Ici peut être des infos comme la semaine en cours, le code de l'usager
       r![Prenom] = Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i)
       r![Nom] = Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i)
       r.Update
    End If
    Next i
    MsgBox "Terminé"
    Me.Prenom1.SetFocus
    End Sub
    Merci pour votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Points : 356
    Points
    356
    Par défaut
    Salut,
    Si tu veux que : si prenom ou nom sont vides ça passe aux enregistrements suivants alors supprime ton premier Exit sub et ajoute un test prenom="" or nom="" en plus de tes isnull()

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Salut, voilà mon idée, Si aucuns champs ne sont renseignés on se limite là, par contre si quelques champs sont renseignés, il ne doit enregistrer que les champs qui sont renseignés pas les champs vides. A noté que, je suis pas encore fort en VBA. Merci

  4. #4
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Points : 356
    Points
    356
    Par défaut
    Peux tu me donner l'ensemble des champs du formulaire qui vont permettre l'enregistrement dans la table?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If trim("" & Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i))="" Or _
        trim("" & Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i)) = "" Then
        MsgBox "Champs vides"
        Exit Sub

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Ok, je vous télécharge le fichier même.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    rdurupt, le problème avec votre code est que, s'il y a des champs qui ne sont pas renseignés pas d'enregistrement, or je veux que s'il y a au moins un champs renseigné alors on enregistre ce(s) champs.

  8. #8
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Points : 356
    Points
    356
    Par défaut
    Ce code fonctionne

    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
    Private Sub Enregistrer_Click()
    Dim db As DAO.Database
    Set db = CurrentDb
    Dim r As DAO.Recordset
    Set r = db.OpenRecordset("Table1")
    Const NOMRE_LIGNE As Long = 5
     
    Dim i As Long
    For i = 1 To NOMRE_LIGNE
    If IsNull(Forms!F_Saisie_plusieur_enregistrement!("Prenom" & i) & _
        Forms!F_Saisie_plusieur_enregistrement!("Nom" & i)) Or _
        Forms!F_Saisie_plusieur_enregistrement!("Prenom" & i) & _
        Forms!F_Saisie_plusieur_enregistrement!("Nom" & i) = "" Then
    Else
       r.AddNew
       r![Prenom] = Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i)
       r![Nom] = Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i)
       r.Update
    End If
     
    Next i
    MsgBox "Terminé"
    Me.Prenom1.SetFocus
    End Sub
    Le test se fait sur Isnull(Prenom & Nom) ou Prenom & Nom =""

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Hé, oui, ça y est
    Maintenant, je veux que si un champ renseigné existe dans la table, on arrête l'enregistrement et le curseur se positionne sur le champ en question et après enregistrement on remet tous les champs à vides. Merci pour votre aide.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Else
    r.filter ="[Prenom]='" & Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i) & "' and [Nom]= '" & Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i) & "'"
    set r2= R.OpenRecordset
    if r2.eof=false then exit sub
       r.AddNew
       r![Prenom] = Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i)
       r![Nom] = Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i)
       r.Update
    End If

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Il y a une erreur qui surgite à ce niveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r.Filter = "[Prenom]='" & Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & i) & "' and [Nom]= '" & Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & i) & "'"
    Erreur d'exécution : "3251"
    Opération non autorisée pour ce type d'objet

  12. #12
    Invité
    Invité(e)
    Par défaut
    j'avais fait un test chez moi mais c'est pas grave on va le faire à l'ancienne!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Else
    SQL = "Select * from Table1 where [Prenom]='" & Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & I) & "' and [Nom]= '" & Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & I) & "'"
    Set R2 = db.OpenRecordset(SQL)
    If R2.EOF = False Then r2.close: Exit Sub
        r2.close
       R.AddNew
       R![Prenom] = Forms!F_Saisie_plusieur_enregistrement.Form("Prenom" & I)
       R![Nom] = Forms!F_Saisie_plusieur_enregistrement.Form("Nom" & I)
       R.Update
    End If

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Ok, pour le moment on arrive à contrôler les doublons, mais le curseur n'indique pas le champs en question, il faut que le curseur revient sur l'élément qui est déjà dans la table.

Discussions similaires

  1. [WD15] Ajout de plusieurs enregistrements dans une table de liaison
    Par heiti dans le forum WinDev
    Réponses: 5
    Dernier message: 04/06/2010, 21h35
  2. Ajout automatique d'enregistrement dans une table.
    Par bestofbasile dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/01/2008, 14h01
  3. [VBA] Ajout de plusieurs enrgt dans une table
    Par mat67000 dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/05/2007, 14h40
  4. Réponses: 7
    Dernier message: 07/06/2006, 07h32
  5. AJOUT d'un ENREGISTREMENT dans UNE TABLE
    Par ramo dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/08/2005, 16h24

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