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 :

Sélectionnez un item dans une liste [AC-2002]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut Sélectionnez un item dans une liste
    Bonjour,

    J'ai fait un formulaire dans lequel se trouve une liste déroulante (modifiable10) basé sur une requête.

    J'ai créé un premier bouton qui créé un fichier .csv selon l'item choisit dans la liste.

    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
    'Bouton Créer annuaires d'un cours Q1
    Private Sub Commande12_Click()
    On Error GoTo Err_creation_csv_Click
     
        Dim ReqGrille As String
        Dim CodeGrille As String
     
        ReqGrille = "E-ENS : Annuaire selon Code GrilledQ1 pour formulaire"
        DoCmd.OpenQuery ReqGrille, acNormal, acEdit
     
        CodeGrille = Forms![E-ENS : Annuaire selon code du cours].Modifiable10
        DoCmd.TransferText acExportDelim, "annuaire_obseo", "E-ENS : Annuaire pour Exportation", "C:\iCampus\E-ENS Annuaires\Annuaire_" & CodeGrille & ".csv", True, , UTF8
     
    Exit_creation_csv_Click:
        Exit Sub
     
    Err_creation_csv_Click:
        MsgBox Err.Description
        Resume Exit_creation_csv_Click
     
    End Sub
    Ca marche parfaitement bien.
    Maintenant, je voudrais qu'en cliquant sur un autre bouton, il créé les fichiers .csv pour tous les items de la liste les uns après les autres.

    J'ai donc créé le code 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
    'Bouton Créer annuaires de tous les cours Q1
    Private Sub Commande21_Click()
    On Error GoTo Err_creation_csv_Click
     
        Dim ReqGrille As String
        Dim CodeGrille As String
        Dim i As Long
     
        For i = 0 To Forms![E-ENS : Annuaire selon code du cours].Modifiable10.ListCount - 1
            Forms![E-ENS : Annuaire selon code du cours].Modifiable10.ItemData(i) = True
     
            ReqGrille = "E-ENS : Annuaire selon Code GrilledQ1 pour formulaire"
            DoCmd.OpenQuery ReqGrille, acNormal, acEdit
     
            CodeGrille = Forms![E-ENS : Annuaire selon code du cours].Modifiable10
            DoCmd.TransferText acExportDelim, "annuaire_obseo", "E-ENS : Annuaire pour Exportation", "C:\iCampus\E-ENS Annuaires\Annuaire_" & CodeGrille & ".csv", True, , UTF8
     
        Next i
     
    Exit_creation_csv_Click:
        Exit Sub
     
    Err_creation_csv_Click:
        MsgBox Err.Description
        Resume Exit_creation_csv_Click
     
    End Sub
    Et là j'obtiens l'erreur : 'la procédure property let n'est pas définie et la procédure Property Get n'a pas renvoyé d'objet'

    Si je commente tous le code sauf la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![E-ENS : Annuaire selon code du cours].Modifiable10.ItemData(5) = True
    J'obtiens un 'la procédure property let n'est pas définie et la procédure Property Get n'a pas renvoyé d'objet'

    Si je ne garde que la bouche For sans rien :
    j'obtiens aucune erreur

    Visiblement il n'appréci pas le 'itemdata'... pourtant selon mes recherches c'est ainsi que je dois sélectionner un item dans la liste, pour tous les faire un après l'autre...

    Une idée pour me sortir de cette impasse ?

    En vous remerciant

  2. #2
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Bonjour,

    Voici une autre façon de traiter le problème, à toi de l'adapter et de voir si cela fonctionne.

    Cela devrait marcher pour autant que j'aie bien compris:
    ReqGrille : Alimentation de ta ComboBox (liste déroulante)
    CodeGrille : Valeur à exporter ... ?
    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
    '	Bouton Créer annuaires de tous les cours Q1
    Private Sub Commande21_Click()
    Dim db		as DAO.DataBase
    Dim rst		as DAO.Recordset
    Dim ReqGrille 	As String
    Dim I		as Integer
     
    '	Attribution du nom de ta requête à la variable ReqGrille
    	ReqGrille = "E-ENS : Annuaire selon Code GrilledQ1 pour formulaire"
     
    '	Ouverture du recordset sur la base de ta requête
    	set rst = CurrentDB.OpenRecordset(ReqGrille)
     
    '	On travaille maintenant dans le recordset
    	With rst
    		.MoveLast			' On parcours tous les enregistrements
    		.MoveFirst		        ' ... puis on revient au départ
    		For I = 1 to .RecordCount	' Détermine le nombre de ligne du recordset
    		' La partie qui suit est a adapter en fonction des noms de champs dans la table où pointe ta requête "ReqGrille"
    			CodeGrille = ![E-ENS : Annuaire selon code du cours]	' Pour autant que le nom du champ dans ta table se nomme : 
    									' [E-ENS : Annuaire selon code du cours]
            			DoCmd.TransferText acExportDelim, "annuaire_obseo", "E-ENS : Annuaire pour Exportation",  & _
    				  		          "C:\iCampus\E-ENS Annuaires\Annuaire_" & CodeGrille & ".csv", True, , UTF8
    			.MoveNext	' On se déplace sur l'enregistrement suivant
    		Next I
    	End With
     
    '	Fermeture du recordset
    	rst.Close
    End Sub
    Note bien que je ne l'ai pas du tout essayé, j'ai saisi ça dans le NotePad avant de le poster, à toi de contrôler... Merci

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Finalement j'ai finis par trouver, je dois faire :

    Modifiable10 = Modifiable10.ItemData(i)

    Et ça fonctionne nickel.

    Pour bernardmichel :

    Grand merci, je n'ai pas testé comme je viens de le voir et trouver ma solution, mais l'intention est des plus apprécié.

    Sinon, pour l'info :
    Reqgrille est une requête qui créé une table contenant les informations à exporter dans le fichier .csv

    Et donc, selon le cours choisit dans le formulaire, la table créé (et donc le fichier .csv) est différent.

    Le but ici était de créer les fichiers csv pour tous les cours d'un seul coup, donc de sélectionner un après l'autre tous les cours de la liste

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

Discussions similaires

  1. Pas d'affiche d'items dans une list box
    Par breezer911 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/03/2007, 17h06
  2. Cocher un items dans une liste de type TCheckListBox
    Par Faith's Fall dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/03/2007, 20h48
  3. [VB6] Double click d'un item dans une list...
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/04/2006, 18h56
  4. Selectionner automatiquement un item dans une liste
    Par nebule dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/12/2004, 17h03
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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