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 combobox ajouter enregistrement


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut Problème combobox ajouter enregistrement
    Bonjour à tous,

    Quelqu'un pourrait-il me donner des pistes pour pouvoir ajouter dans une combobox de nouveaux enregistrements.

    Ma combo marche mais elle se comporte pas normalement.
    1 Elle affiche bien les enregistrements anciens, mais refuse les nouveaux.
    2 Quand je fais défilé les enregistrements elle reste figé sur le dernier sélectionné.

    Voici le code que j'utilise adapté de la commandbar de Raymond Seneque.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Option Compare Database
    Option Explicit
    Dim Db As DAO.Database
    Dim Rs    As DAO.Recordset
    Dim StrEpiFabric As String
    Dim StrSQL          As String
    Dim CB          As CommandBar
    Dim CBBouton  As CommandBarControl
    Dim CBSous_Menu As CommandBarControl
    Const Bt20 = "Sélection"
     
    Private Sub Form_Activate()
    On Error Resume Next
            CBBouton.Text = Me!EpiReference & ", " & Me!EpiFabric
        Select Case Me.CurrentRecord
         End Select
    End Sub
     
    Private Sub Form_AfterUpdate()
       If Me.NewRecord Then Creer_Selection
    End Sub
    Function Action_Bouton()
    Set Rs = Forms!frmEpi.Recordset
        Set CBBouton = Application.CommandBars.ActionControl
        If CBBouton Is Nothing Then Exit Function
        Select Case CBBouton.Parameter
     
     
            Case "Selection"
     
                StrEpiFabric = Left$(CBBouton.Text, InStr(CBBouton.Text, ",") - 1)
                Rs.FindFirst "EpiReference = '" & StrEpiFabric & "'"
     
       End Select
     
     
    End Function
     
    Function Remplir_Selection(CBBouton As CommandBarComboBox)
       StrSQL = "SELECT EpiFabric, EpiReference FROM tblEpi ORDER BY EpiReference"
       Set Db = CurrentDb
       Set Rs = Db.OpenRecordset(StrSQL)
       Rs.MoveFirst
       Do Until Rs.EOF
           CBBouton.AddItem Rs.Fields("EpiReference") & ", " & Rs.Fields("EpiFabric")
           Rs.MoveNext
       Loop
       Rs.MoveFirst
             Set CBBouton = Application.CommandBars(CB_Nom).Controls(Bt20)
            CBBouton.Text = Me!EpiReference & ", " & Me!EpiFabric
    End Function
    Function Creer_Selection()
    On Error Resume Next
       Set CBBouton = CommandBars(CB_Nom).Controls(Bt20)
       CBBouton.Delete
     
        Set CB = CommandBars.Add(CB_Nom)
        With CB
            Set CBBouton = .Controls.Add(msoControlComboBox)
            With CBBouton
                .Enabled = True
                .BeginGroup = True
                .Style = msoComboLabel
                .Width = 220
                .Caption = Bt20
                .OnAction = "=Action_Bouton()"
                .Parameter = "Selection"
            End With
       End With
       Call Remplir_Selection(CBBouton)
    End Function
    Merci de votre aide

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    ...des pistes pour pouvoir ajouter dans une combobox de nouveaux enregistrements
    As tu pensé a faire une petite recherche....

    Ces différents posts correspondent-ils à ton problème...
    http://www.developpez.net/forums/sho...=absence+liste
    http://www.developpez.net/forums/sho...=absence+liste
    http://www.developpez.net/forums/sho...=absence+liste

    .......Bonne lecture......
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Oui j'ai déjà fait des recherches mais je n'ai rien trouvé qui correspond à une combobox. Ma liste est faite uniquement par le code apparemment les discussions que tu m'as indiqué correspondent à des zones de listes déroulante. Moi je n'ai pas accès à limité la liste etc.
    En revanche si tu as un bout de code par rapport à ma combobox
    Merci d'avance

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Au plus simple avec une Zone de liste....

    -1)....sur ton formulaire, un bouton permettant l'ouverture d'un form pour la saisie du nouvel enregistrement

    -2)....après vérification que tu n'entre pas un doublon, enregistrement dans ta table.

    -3)....mise à jour de ta ZdL en sortie de validation du nouvel enregistrement.

    Maintenant, il y a peut-être plus simple...ou plus rapide......
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  5. #5
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par FreeAccess Voir le message
    Au plus simple avec une Zone de liste....
    Je ne recherche pas le plus simple puisque ma zone de liste est dans la barre de menu. Ce que je voudrais c'est qu'access veuille bien m'afficher les nouveaux enregistrements et que ma liste défile lorsque je change d'enregistrement via les bouton de navigation.
    En tout cas merci de ton aide

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    Essaie de mettre cette partie de code sur l'événement Activation (Form_Current) et non Sur activé (Form_Activate)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Current()
    On Error Resume Next
            CBBouton.Text = Me!EpiReference & ", " & Me!EpiFabric
        Select Case Me.CurrentRecord
         End Select
    End Sub
    Normalement, l'enregistrement apparaissant dans la liste devrait se synchroniser avec celui du formulaire quand tu changes d'enregistrement...

    Pour ce qui des nouveaux enregistrements, à voir si cela a un effet...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  7. #7
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Salut Domi 2
    Effectivement elle se synchronise avec le formulaire, mais la liste n'affiche pas tous les enregistrements du moins ceux qui ont été rajoutés après la création de la barre de menu c'est étrange. Lorsque j'ai adapté la liste à mon appli elle à tout de suite affiché les enregistrements présents dans la table pourquoi pas les nouveaux?
    Merci

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,

    je viens de tester l'application de R. SENEQUE....
    ...Ce que je voudrais c'est qu'access veuille bien m'afficher les nouveaux enregistrements et que ma liste défile lorsque je change d'enregistrement via les bouton de navigation
    Les nouveaux enregistrements sont correctement pris en compte (ZdL mise à jour)

    Pas d'erreur de sélection dans cette même ZdL.

    La liste se synchronise correctement sur changement d'enregistrement......
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  9. #9
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par FreeAccess Voir le message
    Re,

    je viens de tester l'application de R. SENEQUE....
    Moi aussi je l'ai testé et je sais qu'elle marche nickel. je n'ai repris que la partie sélection il manque peut-être des éléments du code dans mon adaptation mais je ne suis pas encore assez expert pour trouver la solution.
    merci

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    Bon, tu peux déjà essayer 2 choses :

    Dans l'évènement Form_Current, tu peux mettre 2 lignes en remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Current()
        On Error Resume Next
        CBBouton.Text = Me!EpiReference & ", " & Me!EpiFabric
        'Select Case Me.CurrentRecord
        'End Select
    End Sub
    A mon sens, elles ne servent à rien ici...

    Puis teste un nouvel enregistrement. Si ça ne va pas mieux rajoute une MsgBox dans la fonction Creer_Selection pour vérifier que tu passes bien dans la fonction après l'ajout d'un enregistrement :

    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
    Function Creer_Selection()
        On Error Resume Next
        MsgBox "La fonction Creer_Selection est effectuée"
        Set CBBouton = CommandBars(CB_Nom).Controls(Bt20)
        CBBouton.Delete
       
        Set CB = CommandBars.Add(CB_Nom)
        With CB
            Set CBBouton = .Controls.Add(msoControlComboBox)
            With CBBouton
                .Enabled = True
                .BeginGroup = True
                .Style = msoComboLabel
                .Width = 220
                .Caption = Bt20
                .OnAction = "=Action_Bouton()"
                .Parameter = "Selection"
            End With
        End With
        Call Remplir_Selection(CBBouton)
    End Function
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  11. #11
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Salut Domi 2,
    J'ai fait les tests que tu as recommandés sans résultats.
    Le msgBox ne s'affiche pas et les enregistrements ne s'affichent pas dans la liste donc apparament la function remplir sélection ne prend pas en compte les nouveaux enregistrements.
    Le tout est de trouver où ça coince?
    Merci de ton aide et de celle des autres.

  12. #12
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Re,



    Si tu fermes ton formulaire et que tu l'ouvres à nouveau, les nouveaux enregistrements sont bien là, non ?

    Si la liste n'est pas tout de suite actualisée, c'est que lorsque tu arrives à la fin de la saisie dans ton formulaire, l'événement AfterUpdate ne s'est pas encore produit.

    Il te faut donc trouver le moyen de forcer l'enregistrement.

    Par exemple avec bouton Enregistrer.

    Mais c'est un peu difficile de t'aider sans connaître le contexte dans lequel tu essaies de créer cette liste.

    Domi2

    P.-S. Pour forcer l'enregistrement après saisie, voir la FAQ.
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  13. #13
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Re,

    Si tu fermes ton formulaire et que tu l'ouvres à nouveau, les nouveaux enregistrements sont bien là, non ?
    Domi2

    .
    non meme après avoir fermé rien ne se passe la liste ne m'affiche que les enregistrement qu'ily avait lors de sa création.

  14. #14
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    non meme après avoir fermé rien ne se passe la liste ne m'affiche que les enregistrement qu'il y avait lors de sa création.


    Le code que tu indiques, je partais du principe que c'était seulement la partie qui te posais problème. Mais si c'est tout ce que tu as... j'ai peur qu'il en manque pour que ça fonctionne...

    Comment as-tu créé ta liste initialement ?

    Grosso modo :

    1) A l'ouverture du formulaire, tu dois créer la liste
    2) Synchroniser ta liste avec l'enregistrement courant (Form_Current)
    3) L'alimenter
    4) A la fermeture du formulaire, supprimer la liste

    5) Lors de l'ajout d'un enregistrement ou suppression, supprimer la liste, la recréer et l'alimenter à nouveau
    6) En cas de modification du nom ou du prénom, il faudrait également modifier les informations apparaissant en entête de liste...

    Attention : en cas d'ajout, modification ou suppression d'enregistrement, il y'a peu d'événements exploitables qui se produisent avant que tu ne changes d'enregistrement.

    En principe, avec cette discussion et la précédente, tu as tous les éléments pour construire et manipuler ta liste.

    Ce que je ferais :

    Ajouter 2 boutons sur mon formulaire (Enregistrer et Supprimer), pour pouvoir exécuter du code (suppression, création et alimentation de la liste)

    Découper tout le code en petites fonctions (ça c'est pratiquement fait).

    Enfin, y'aller pas à pas... Gérer et comprendre chaque événement...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/08/2008, 14h53
  2. [MySQL] Problème d'ajout de nouvel enregistrement
    Par bosserieux dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/01/2008, 10h54
  3. [WD10] problème d'ajout d'enregistrement
    Par clades dans le forum WinDev
    Réponses: 4
    Dernier message: 11/10/2007, 12h18
  4. Réponses: 8
    Dernier message: 06/05/2007, 00h25

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