Bonjour,
j'ai un leger soucis que je vais essayer d'expliquer le mieux possible.
j'ai créer un formulaire possedant deux listes :
-la première contient des etablissements (modalité du champ NOM)
-la seconde contient des activités (il y'en a pas mal)
A partir des choix effectués dans ces listes je veux ouvrir un etat qui me montre en colonne les etablissements, en ligne les activités et en valeurs des effectifs (combien d'activités par etablissement)
J'ai fais une requète simple et une croisée d'avance sur ces données.
Mon problème est que si j'ouvre l'Etat contenant la requète simple j'ai les bons etablissements et activités selectionnés dans les listes mais les etablissements se trouvent aussi en ligne :
voila ce que j'obtient :
etab 1 act1
......
etab1 actn
etab2 act1
.......
etab2 actn
......
Et si j'ouvre l'Etat avec la requète analyse croisé, il ne me reconnait plus mes etablissement puisque dans la requète ils sont deja en colonne et donc en champ.
Donc access plante vu qu'il ne me reconnait plus "NOM" comme un champ, mes etablissement selectionnés ne sont donc pas envoyés.
Je ne sais donc pas quoi faire, si il faut que je modifie mon etat qui contient une requète simple pour qu'il me mette les eablissements en colonne
OU si il faut que je modifie mon VBa qui envoie les données a l'état qui l'analyse croisée
Notez que je prefererais la 1ère solution, étant donné que ca me fera une requète de moins à faire puisque l'analyse croisée est faite à partir de la requète simple. Ca me fera moins ramé d'avoir un etat qui vienne de la requète simple.
Voici les données des 2 requètes :
requète simple : requète analyse croisée :
NOM ACT Effectif ACT / Nom 1er 2ème 3ème etc
1er 1ère X 1ère X Y Z
1er 2ème X2 2ème X2 Y2 Z2
1er 3ème X 3ème X3 Y3 Z3
1er 4ème X4 4ème X4 Y4 Z4
etc etc etc etc etc etc
Et voici le code qui envoie les selections des listes vers mon etat contenant la requète simple :
Private Sub lancer_comparaison_Click()
On Error GoTo Err_lancer_comparaison_Click
'Gestion des erreurs de listes vides
If liste_sortie.ListCount = 0 Then
MsgBox ("Vous devez choisir au moins une activité au préalable")
liste_entrée.SetFocus
GoTo Exit_lancer_comparaison_Click
Exit Sub
Else
If liste_sortie2.ListCount = 0 Then
MsgBox ("Vous devez choisir au moins un etablissement au préalable")
liste_entrée2.SetFocus
GoTo Exit_lancer_comparaison_Click
Exit Sub
End If
End If
Dim stLinkCriteria As String
Dim stLinkCriteriab As String
Dim stDocName As String
stDocName = "etat_tableau_croisé"
'Liste etablissement :
stLinkCriteria = "[Nom] in ("
For i = 0 To liste_sortie2.ListCount - 1
stLinkCriteria = stLinkCriteria & """" & liste_sortie2.ItemData(i) & """" & ","
Next i
stLinkCriteria = stLinkCriteria & """" & " NOM de mon etablissement que je garde d'office" & """" & ")"
'Liste Activité :
stLinkCriteria = stLinkCriteria & " AND " & "[Activite] in ("
For i = 0 To liste_sortie.ListCount - 2
stLinkCriteria = stLinkCriteria & """" & liste_sortie.ItemData(i) & """" & ","
Next i
stLinkCriteria = stLinkCriteria & """" & liste_sortie.ItemData(i) & """" & ")"
End If
DoCmd.OpenReport stDocName, AcView.acViewPreview, , stLinkCriteria
Exit_lancer_comparaison_Click:
Exit Sub
Err_lancer_comparaison_Click:
MsgBox Err.Description
Resume Exit_lancer_comparaison_Click
End Sub
Merci d'avance à tous ceux qui se creuseront les meninges la dessus, moi je suis désespéré....
Configuration: Windows Vista Internet Explorer 7.0