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 :

[A-03] Enregistrement d'une zone de multiselection


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 28
    Points
    28
    Par défaut [A-03] Enregistrement d'une zone de multiselection
    Bonjour!
    J'ai sous access 2003 un formulaire avec 2 zones de listes déroulantes et une zone de liste en multiselection; je voudrais savoir quel code écrire sur le bouton d'enregistrement pour recuperer mes sélection.
    zone liste déroulante 1 = période
    zone liste déroulante 2 = Tacheron
    zone liste multiselect = Ouvriers

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    La première chose à récupérer, c'est le contenu du multiselect.

    Ensuite, pour chaque enregistrement récupéré, tu ajoutes le contenu des deux listes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim selMult
    For Each selMult In Me.Liste0.ItemsSelected
        Debug.Print Me.Liste0.ItemData(selMult) & "-" & Me.liste1 & "-" & Me.liste2
    Next selMult
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Merci pour votre réponse prompte;
    J'ai certainement été imprécis, car je souhaiterais en fait porter ces enregistrements dans ma table Affectation dont les champs sont Période, Tâcheron et Ouvrier.
    Debug.print permet-il de faire cela?

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Debug.print permet de visualiser le résultat dans la fenêtre exécution de VBE.

    Cette précision n'était pas dans la question.

    Pour ajouter des enregistrements dans la table de ton choix, il suffit de la faire par DAO, mais sans autre précision c'est pas très simple.

    Une bonne idée serait de nous donner le nom exact de la table est des champs affectés.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Vrais je reconnais n'avoir pas été assez claire et je m'en excuse.
    Pour ce qui est des noms de tables voici:
    Table Affectation N_Aff , N_periode , Code_Tacheron , Code_Ouvrier.

    Sur le formulaire, Modifiable11 correspond à Période, Modifiable0 à Tacheron, et Liste18 à Ouvriers.

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut
    Quelque chose comme cela?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim mesenr As Recordset
    Set mesenr = New ADODB.Recordset
    mesenr.ActiveConnection = CurrentProject.Connection
    mesenr.Open "Table Affectation", , adOpenDynamic, adLockOptimistic
    mesenr.Addnew
    mesenr![Code_Ouvrier] = Me![ListeTacheron]
    mesenr.Update
    mesenr.Close

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    J'opterais pour le DAO.

    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
    Dim rs As Recordset
    Dim sql As String
    Dim selMult
     
    sql  = "SELECT * From Table Affectation"
    Set rs = CurrentDB.OpenRecordset(sql)
     
    For Each selMult In Me.Liste0.ItemsSelected
        rs.AddNew
        rs.Fields("N_periode") = Me.Liste0.ItemData(selMult)
        rs.Fields("Code_Tacheron") = Me.Liste1
        rs.Fields("Code_Ouvrier") = Me.Liste2
        rs.Update
    Next selMult
    rs.Close
    set rs = Nothing
    Si tu veux en apprendre un peu plus sur le DAO : http://warin.developpez.com/access/dao/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Merci Heureux-oli pour ta réponse. Ton code résout bien mon problème;
    seulement je me demande comment réinitialiser la zone de liste de multi-sélection après le traitement.

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Essaie avec un Requery sur ton contrôle.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    finalement j'ai complété le code par un autre boucle après la fermeture du recordset; et cela me permet de remettre à zéro la zone de multi sélection.
    Le 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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub Commande20_Click()
    Dim rso As Recordset
    Dim sql As String
    Dim selMult
    Dim I As Variant
     
     
    sql11 = "SELECT * FROM T_Affectation"
     Set rso = CurrentDb.OpenRecordset(sql11)
     
    For Each selMult In Me.Liste25.ItemsSelected
        rso.AddNew
        rso.Fields("N_periode") = Me.Modifiable11
        rso.Fields("Code_Tacheron") = Me.Modifiable0
        rso.Fields("Code_Ouvrier") = Me.Liste25.ItemData(selMult)
     
        rso.Update
     
    Next selMult
     
    rso.Close
    Set rso = Nothing
    For Each I In Liste25.ItemsSelected
        If Liste25.Selected(I) = True Then
        Liste25.Selected(I) = False
        End If
    Next
    End Sub
    Ensuite j'aimerais personnaliser le message d'erreur de doublon 3022 obtenu lorsque l'ouvrier est déjà affecter pour le mois en sélectionné.ET si possible ressortir la liste des ouvriers à la base de l'erreur

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2007, 11h52
  2. Réponses: 6
    Dernier message: 12/03/2007, 13h02
  3. Réponses: 1
    Dernier message: 08/03/2007, 19h41
  4. Enregistrement dans une Zone de liste déroulante
    Par w3sk3r dans le forum Access
    Réponses: 23
    Dernier message: 20/08/2006, 19h10
  5. Réponses: 3
    Dernier message: 22/03/2006, 09h47

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