Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2011, 18h10   #1
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
Par défaut Données incohérentes pour renvoi de données dans une listbox

Bonjour,
J’aurai besoin de vos lumières concernant un problème que je n’arrive pas à résoudre

Je suis en train de reprendre le code VBA d'une base de données recensant plusieurs info INSEE concernant des communes iris région, dept etc.

Je désiré renvoyé dans une listbox par exemple tous les IRIS du département « Nord » qui comporte 1347 enregistrements or je n’ai que 1066 enregistrements renvoyé dans ma zone de liste quand je clique sur mon bouton ajouter.

Le problème est le suivant : la Listbox (appelée SELECTION) ne contient pas le nombre d'enregistrements escompté quand le nombre d’enregistrements demandé est conséquent or la requête utilisée testé sous SQL fonctionne correctement.

Le problème vient assurement du code mais je n'arrive pas à determiner à quel niveau:

Code :
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Option Explicit
 
Dim REGION As String
Dim DEPARTEMENT As String
Dim CANTON As String
Dim EPCI As String
Dim AGGLO As String
Dim ARR As String
Dim COMMUNE As String
Dim IRIS As String
 
 
 
'*******************************************************
' Procédure appelée lors d'un double clic sur SELECTION
'*******************************************************
Private Sub AJOUTER_DblClick(Cancel As Integer)
    AJOUTER
End Sub
 
 
 
 
'*******************************************************
' Procédure appelée lors d'un clic sur le bouton "ajouter"
' Cette procédure va, suivant le type de l'échelle sélectionner et
' effectuer une requete pour rassembler les informations
' sur cette dernière
'
' Une erreur est levée en cas de violation des contraintes d'utilisation
' (exemple : pluseurs cases cochées en même temps)
'*******************************************************
 
Private Sub AJOUTER_Click()
    Dim resultatReq As Recordset 'Résultat Requête
    Dim TYPE_ECHELLE As String 'champs qui renseigne le type de l'enregistrement (exp: REG, DEP ...)
 
     'Vérifier conditions
    If VERIFIER_CONDITIONS = False Then
        MsgBox ("Veuillez vérifier que vous avez sélectionné ou coché une seule echelle")
        Exit Sub
    End If
 
    'récupérer les valeurs des LISTE_
    VALEUR_LISTES
 
    If coche_R Then 'Ajouter toutes les regions
        TYPE_ECHELLE = "REG"
        If REGION <> "" Or DEPARTEMENT <> "" Or CANTON <> "" Or EPCI <> "" Or AGGLO <> "" Or ARR <> "" Or COMMUNE <> "" Or IRIS <> "" Then
            MsgBox ("Impossible d'executer")
            Exit Sub
        End If
        Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT REG as CODE,LIBELREG as LIBEL FROM COMMUNE")
 
    ElseIf coche_D Then
         TYPE_ECHELLE = "DEP"
        If DEPARTEMENT <> "" Or CANTON <> "" Or EPCI <> "" Or AGGLO <> "" Or ARR <> "" Or COMMUNE <> "" Or IRIS <> "" Then
            MsgBox ("Impossible d'executer")
            Exit Sub
        End If
        If REGION <> "" Then 'si une région est selectionnée
            Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT DEP as CODE,LIBELDEP as LIBEL FROM COMMUNE WHERE LIBELREG='" & REGION & "'")
        Else 'ajouter toutes les dep
            Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT DEP as CODE,LIBELDEP as LIBEL FROM COMMUNE")
        End If
    ElseIf COCHE_C Then
 
    TYPE_ECHELLE = "CANTON"
            If CANTON <> "" Or EPCI <> "" Or AGGLO <> "" Or ARR <> "" Or COMMUNE <> "" Or IRIS <> "" Then
                MsgBox ("Impossible d'executer")
            Exit Sub
            End If
            If DEPARTEMENT <> "" Then 'Ajouter tous les cantons de DEPARTEMENT
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CV as CODE,LIBELCV as LIBEL FROM COMMUNE WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'")
            ElseIf REGION <> "" Then 'Ajouter tous les cantons de REGION
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CV as CODE,LIBELCV as LIBEL FROM COMMUNE WHERE LIBELREG='" & REGION & "'")
            Else 'DEPARTEMENT et REGION sont vides, alors on ajoute TOUS les cantons
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CV as CODE,LIBELCV as LIBEL FROM COMMUNE")
            End If
    ElseIf COCHE_EPCI Then
 
    TYPE_ECHELLE = "EPCI"
            If EPCI <> "" Or AGGLO <> "" Or ARR <> "" Or COMMUNE <> "" Or IRIS <> "" Then
                MsgBox ("Impossible d'executer")
            Exit Sub
            End If
            If CANTON <> "" Then 'Ajouter tous les EPCI de Canton
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT EPCI as CODE,LIBELEPCI as LIBEL FROM COMMUNE WHERE LIBELCV='" & CANTON & "' OR CV='" & CANTON & "'")
            ElseIf DEPARTEMENT <> "" Then 'Ajouter tous les EPCI de DEPARTEMENT
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT EPCI as CODE,LIBELEPCI as LIBEL FROM COMMUNE WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'")
            ElseIf REGION <> "" Then 'Ajouter tous les EPCI de REGION
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT EPCI as CODE,LIBELEPCI as LIBEL FROM COMMUNE WHERE LIBELREG='" & REGION & "'")
            Else 'CANTON,DEPARTEMENT,REGION sont vides, alors on ajoute TOUS les EPCI
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT EPCI as CODE,LIBELEPCI as LIBEL FROM COMMUNE")
            End If
 
    ElseIf COCHE_AG Then
 
    TYPE_ECHELLE = "AGGLO"
            If AGGLO <> "" Or ARR <> "" Or COMMUNE <> "" Or IRIS <> "" Then
                MsgBox ("Impossible d'executer")
            Exit Sub
            End If
            If EPCI <> "" Then 'Ajouter toutes les AGG de EPCI
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT UU1999 as CODE,LIBELUU1999 as LIBEL FROM COMMUNE WHERE LIBELEPCI='" & EPCI & "' OR EPCI='" & EPCI & "'")
            ElseIf CANTON <> "" Then 'Ajouter toutes les AGG de Canton
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT UU1999 as CODE,LIBELUU1999 as LIBEL FROM COMMUNE WHERE LIBELCV='" & CANTON & "' OR CV='" & CANTON & "'")
            ElseIf DEPARTEMENT <> "" Then 'Ajouter tous les AGG de DEPARTEMENT
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT UU1999 as CODE,LIBELUU1999 as LIBEL FROM COMMUNE WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'")
            ElseIf REGION <> "" Then 'Ajouter toutes les AGG de REGION
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT UU1999 as CODE,LIBELUU1999 as LIBEL FROM COMMUNE WHERE LIBELREG='" & REGION & "'")
            Else 'EPCI,CANTON,DEPARTEMENT,REGION sont vides, alors on ajoute TOUTES les AGG
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT UU1999 as CODE,LIBELUU1999 as LIBEL FROM COMMUNE")
            End If
 
    ElseIf COCHE_AR Then
 
    TYPE_ECHELLE = "ARR"
           If REGION = "Provence-Alpes-Côte d'Azur" Or REGION = "93" Or REGION = "Rhône-Alpes" Or REGION = "83" Or REGION = "Ile-de-France" Or REGION = "11" Then
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT WHERE LIBELREG='" & COMMUNE & "' OR REG='" & COMMUNE & "'")
           ElseIf DEPARTEMENT = "Bouche-du-Rhône" Or DEPARTEMENT = "13" Or DEPARTEMENT = "Rhône" Or DEPARTEMENT = "69" Or DEPARTEMENT = "Paris" Or DEPARTEMENT = "75" Then
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT WHERE LIBELDEP='" & COMMUNE & "' OR DEP='" & COMMUNE & "'")
           ElseIf CANTON = "Marseille" Or CANTON = "1399" Or CANTON = "LYON" Or CANTON = "6999" Or CANTON = "Paris" Or CANTON = "7599" Then
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT WHERE LIBELCV='" & ARR & "' OR LIBELCV='" & COMMUNE & "'")
           ElseIf ARR = "Marseille" Or ARR = "Lyon" Or ARR = "Paris" Then
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT WHERE LIBELCV='" & ARR & "'")
           ElseIf AGGLO = "" And EPCI = "" And CANTON = "" And DEPARTEMENT = "" And REGION = "" And ARR = "" Then
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT")
 
 
            '///////////////////////////////////////////////////////////////////////////////////////////////
            'SI ON CREE UNE NOUVEL ARRONDISSEMENT, IL FAUT ALORS AJOUTER UN "ELSE IF"
             '///////////////////////////////////////////////////////////////////////////////////////////////
 
             Else
                MsgBox ("Impossible d'executer")
            Exit Sub
            End If
 
    ElseIf COCHE_COM Then
 
 
 
    TYPE_ECHELLE = "COM"
 
            If COMMUNE <> "" Or IRIS <> "" Then
                MsgBox ("Impossible d'executer")
            Exit Sub
            End If
 
            If ARR <> "" Then 'Ajouter toutes les COM de ARR
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT WHERE LIBGEO='" & ARR & "' OR CODEGEO='" & ARR & "'")
            ElseIf AGGLO <> "" Then 'Ajouter toutes les COM de AGG
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE WHERE LIBELUU1999='" & AGGLO & "' OR UU1999='" & AGGLO & "'")
            ElseIf EPCI <> "" Then 'Ajouter toutes les COM de EPCI
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE WHERE LIBELEPCI='" & EPCI & "' OR EPCI='" & EPCI & "'")
            ElseIf CANTON <> "" Then 'Ajouter toutes les COM de Canton
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE WHERE LIBELCV='" & CANTON & "' OR CV='" & CANTON & "'")
            ElseIf DEPARTEMENT <> "" Then 'Ajouter toutes les COM de DEPARTEMENT
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'")
            ElseIf REGION <> "" Then 'Ajouter toutes les COM de REGION
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE WHERE LIBELREG='" & REGION & "'")
            Else 'ARR,AGG,EPCI,CANTON,DEPARTEMENT,REGION sont vides, alors on ajoute TOUTES les COMMUNE
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE")
            End If
 
    ElseIf COCHE_IRIS Then
    TYPE_ECHELLE = "IRIS"
            If IRIS <> "" Then
                MsgBox ("Impossible d'executer")
            Exit Sub
            End If
            If COMMUNE <> "" Then 'Ajouter tous les IRIS de COM
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBGEO='" & COMMUNE & "' OR CODGEO='" & COMMUNE & "'")
            ElseIf ARR <> "" Then 'Ajouter tous les IRIS de ARR
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBGEO='" & ARR & "' OR CODGEO='" & ARR & "'")
            ElseIf AGGLO <> "" Then 'Ajouter tous les IRIS de AGG
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM COMMUNE WHERE LIBELUU1999='" & AGGLO & "' OR UU1999='" & AGGLO & "'")
            ElseIf EPCI <> "" Then 'Ajouter tous les IRIS de EPCI
                'Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELEPCI='" & EPCI & "' OR EPCI='" & EPCI & "'")
                MsgBox ("Vous ne pouvez pas faire de filtre à partir d'un EPCI")
            ElseIf CANTON <> "" Then 'Ajouter tous les IRIS de Canton
                'Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELCV='" & CANTON & "' OR CV='" & CANTON & "'")
                MsgBox ("Vous ne pouvez pas faire de filtre à partir d'un CANTON")
            ElseIf DEPARTEMENT <> "" Then 'Ajouter tous les IRIS de DEPARTEMENT
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'")
            ElseIf REGION <> "" Then 'Ajouter tous les IRIS de REGION
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELREG='" & REGION & "'")
            Else 'COMMUNE,ARR,AGG,EPCI,CANTON,DEPARTEMENT,REGION sont vides, alors on ajoute TOUS les IRIS
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS")
            End If
 
 
    Else
        'Aucune case cochée
        'alors on recherche dans les champs LISTE_**
            If REGION <> "" Then 'ajouter la region souhaitée
            TYPE_ECHELLE = "REG"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT REG as CODE,LIBELREG as LIBEL FROM COMMUNE WHERE LIBELREG='" & REGION & "'")
            ElseIf DEPARTEMENT <> "" Then 'ajouter le département souhaité
            TYPE_ECHELLE = "DEP"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT DEP as CODE,LIBELDEP as LIBEL FROM COMMUNE WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'")
            ElseIf CANTON <> "" Then 'ajouter le canton souhaité
            TYPE_ECHELLE = "CANTON"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CV as CODE,LIBELCV as LIBEL FROM COMMUNE WHERE LIBELCV='" & CANTON & "' OR CV='" & CANTON & "'")
            ElseIf EPCI <> "" Then 'ajouter l'EPCI souhaité
            TYPE_ECHELLE = "EPCI"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT EPCI as CODE,LIBELEPCI as LIBEL FROM COMMUNE WHERE LIBELEPCI='" & EPCI & "' OR EPCI='" & EPCI & "'")
            ElseIf AGGLO <> "" Then 'ajouter l'Agglo souhaitée
            TYPE_ECHELLE = "AGGLO"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT UU1999 as CODE,LIBELUU1999 as LIBEL FROM COMMUNE WHERE LIBELUU1999='" & AGGLO & "' OR UU1999='" & AGGLO & "'")
            ElseIf ARR <> "" Then 'ajouter l'arr souhaitée
            TYPE_ECHELLE = "ARR"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT CODGEO as CODE,LIBGEO as LIBEL FROM ARRONDISSEMENT WHERE LIBGEO='" & ARR & "' OR CODGEO='" & ARR & "'")
            ElseIf COMMUNE <> "" Then 'ajouter la commune souhaitée
            TYPE_ECHELLE = "COM"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT CODGEO as CODE,LIBGEO as LIBEL FROM COMMUNE WHERE LIBGEO='" & COMMUNE & "' OR CODGEO='" & COMMUNE & "'")
            ElseIf IRIS <> "" Then
            TYPE_ECHELLE = "IRIS"
                Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELIRIS='" & IRIS & "' OR IRIS='" & IRIS & "'")
            End If
 
    End If
 
 
 
 
    'Ajout des résultats dans la liste
    resultatReq.MoveFirst
 
    While Not resultatReq.EOF
        SELECTION.AddItem resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE 'ajout de la région
        resultatReq.MoveNext
    Wend
 
    VIDER_ECHELLES
MsgBox SELECTION.ListCount
End Sub
Merci pour vos réponses
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 09h10   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Bonjour,

Qu'est ce qui garantie que resultatReq contient bien 1347 enregistrements.

La méthode AddItem n'est pas idéale, dans ce cas...
En fait, un ListBox ou un ComboBox doit plutôt posséder une source via une chaîne SQL.
Code :
MaComboBox.RowSource=strSQL
Argy

P.S. Il serait plus "mieux" de rendre générique ta procédure car là, c'est loin d'être souple et délicat à entretenir en cas d'évolution car tu as des données en dur dans le code ce qui est un mauvais départ.
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 09h47   #3
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
En fait je suis en train de reprendre le code qu'une stagiaire m'a produite...

En tous cas merci pour ta réponse avisée. Je te fais un retour après correction du code.

Je passe en en mode "strSQL"

Si d'autres personnes ont aussi des avis sur la question n'hésitez pas .

J'avoue que je bloque un peu, le code ci-dessous n'est pas le bon ?


Code :
1
2
3
szSQL = "SELECT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'"  
SELECTION.RowSource = szSQL
SELECTION.Requery
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 14h03   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Si, il semble correcte.
Causes possibles :
  • Du fait que tu avais usé de AddItem il doit résider à la propriété RowSourceType la valeur "Liste des valeurs" alors qu'elle soit être affectée dans ce cas à "Table/requête"...
  • Que la propriété Largeurs colonnes et Nbre de colonnes doivent coincider...
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 18h23   #5
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
Effectivement cela marche

Le problème est que si je passe de liste de valeur à table/requête le code doit être modifié dans les 3/4

Cette méthode addItem me fait vriller de la carafe si je prend juste 1 colonne a insérer dans ma zone de liste je n'ai pas de problème dès que j'insère les données dans la colonnes 2 ou 3 là ça part en vrille et je n'ai pas tout mes enregistrements.

Je dois écrire quelque chose de faux à ce niveau mais quoi ?
Code :
1
2
3
4
5
    While Not resultatReq.EOF = True
        SELECTION.AddItem resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE '
        resultatReq.MoveNext
        compteur= compteur + 1 'juste la pour vérifier si l'intégralité du fichier était bien parcouru 
    Wend
Franchement si vous avez une réponse ca sera pas de refus
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 12h21   #6
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Ce bout de code n'est pas pourvu d'erreurs sauf éventuellement des "" mais cela peut rester facultatif selon le type de contenu...
Je ne pense pas que ce soit la méthode en elle-même qui suinte mais plutôt un en amont...
Y en a t-il un ?

En fait je soupçonne l'erreur 2176 de survenir au court du remplissage de ta liste... Essaye ainsi de lancer la procédure telle que ci-dessous :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Private Sub Test()
Dim resultatReq                                        As DAO.Recordset
    Set resultatReq = CurrentDb.OpenRecordset("SELECT * FROM ?????", 2)
    With resultatReq
        Do While Not .EOF
            On Error Resume Next
            cboSelection.AddItem Chr(34) & .Fields("CODE") & Chr(34) & ";" & Chr(34) & .Fields("LIBEL") & Chr(34) & ";" & Chr(34) & TYPE_ECHELLE & Chr(34)
            resultatReq.MoveNext
            compteur = compteur + 1
            If Err.Number Then
                MsgBox "Il y a bien une erreur à partir de " & compteur & " enregistrements", , Err.Number
                .Close
                GoTo Fin
            End If
        Loop
        .Close
    End With
Fin:
    Set resultatReq = Nothing
    MsgBox compteur, , Err.Number
    Err.Clear
End Sub

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h20   #7
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
Malheureusement il ne me détecte aucune erreur du type '2176' mais c'est vrai que ça en a tout les symptômes.

J'ai même mis l'option sous VB "Arret sur toutes les erreurs" et pas plus de résultat. Et en gros si j'ai bien compris une ancienne discussion : http://www.developpez.net/forums/d14...erreur-2176-a/, je se suis bon pour changer mon code pour mettre une requête en source de données et ca va changer pas mal d'instructions je pense.
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h49   #8
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Oui...
De toute façon le Additem, on s'en sert pour ajouter 2-3 trucs dans une liste comme par exemple Mme, Melle, Mr ce qui évite d'avoir une table dédiée à cela, quoique.
Bref, affecter un SQL à la source est bien plus souple, plus rapide et tout ce qui va avec.
Et puis entre (), pas de grosse modif pour toi...
Tu te sers de la propriété Name de ton Recordset "resultatReq " et tu l'afectes à une variable qui te sers à créer dynamiquement une requête stockée si nécessaire ou bien d'affecter directement cette variable à ta Combobox en lui donnant ses propriétés de colonnes idoines.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 16h08   #9
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
T'as raison. En route pour l'affectation sql ! Merci beaucoup

Une question purement pratique : dans le cas ou je rencontre des difficultés sur l'affectation sql mieux vaut il continuer à poser les questions sur cette discussion ou faut il en créer une nouvelle.

Encore merci
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 16h30   #10
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Tant que cela concerne ce thread, il est préférable de continuer dans celui-ci puisque la réponse est dérivée.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 19h57   #11
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
Quand j'affecte le string szSQL à mon Recordset "resultatReq" il me met l'erreur 2176 !!
J'ai pourtant bien défini 3 colonnes dans ma listbox
Code :
1
2
3
4
5
6
7
8
9
10

szSQL = "SELECT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'"

Set resultatReq = CurrentDb.OpenRecordset(szSQL)

While Not resultatReq.EOF
    Me!SELECTION.RowSource = Me!SELECTION.RowSource & ";resultatReq!CODE;resultatReq!LIBEL;TYPE_ECHELLE"
    resultatReq.MoveNext
Wend

J'essaye donc de ca :
Code :
1
2
3
 
    SELECTION.RowSource = szSQL
    SELECTION.Requery
Mais là il ne me rempli que la 1ere colonne de ma listbox SELECTION en affichant les enregistrements de "LIBEL"


Ce que je voudrais avoir dans ma listbox :

colonne 1 : champs CODE (szsql)
colonne 2 : champs LIBEL (szsql)
colonne 3 : Valeur de la variable TYPE_ECHELLE (ici IRIS)


Je n'arrive pas à trouver le bon code pour effectuer cela si vous pourriez m'aider
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 09h34   #12
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
[Hors sujet]
  • Les MAJUSCULES sont réservées aux constantes
  • SELECTION est un mot clé : interdit de l'employer comme variable en encore moins comme nom de contrôle.
  • Les noms des procédures doivent être explicites et représentées par des mots
  • Les noms des fonctions doivent être explicites et représentées par des verbes
  • etc...
En somme, s'impreigner et appliquer ce tutoriel
[/Hors sujet]

Pour ton code :
Code :
1
2
3
4
While Not resultatReq.EOF
    Me!SELECTION.RowSource = Me!SELECTION.RowSource & ";resultatReq!CODE;resultatReq!LIBEL;TYPE_ECHELLE"
    resultatReq.MoveNext
Wend
C'est normal, tu boucles sur l'affectation RowSource qui revient au même que tes premier postes.

Ton code être corrigé comme suit (d'après ton premier poste) :
Code :
1
2
3
4
5
6
7
 
    'Ajout des résultats dans la liste
    resultatReq.MoveFirst
    strSQL = resultatReq.Name
     cboSelection.RowSource = strSQL
     cboSelection.Requery
    VIDER_ECHELLES
Si ça ne marche pas c'est que ton Recordset est pourvu d'erreurs ou bien qu'il ne répond pas aux bon critères.
Quant aux colonnes, c'est à toi de les définir.
Tu dois avoir des champs dans ta clause SQL (et non pas des concaténation séparé par des ";" et ces champs sont alors affectés à chaque colonne de la liste qui est définie avec les propriétés Nbre de colonnes, Largeurs Colonnes [et Colonne liée].

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 01h15   #13
Invité de passage
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 3
Points : 3
Merci je vais potasser ce tutoriel et appliquer tes précieux conseils
miron_fds est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h21.


 
 
 
 
Partenaires

Hébergement Web