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 10/06/2011, 16h23   #1
Futur Membre du Club
 
Homme
Inscription : avril 2011
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 48
Points : 15
Points : 15
Par défaut Formulaire continu implémenté en VB et champs indépendants

Bonjour,

Je base un formulaire sur une analyse croisée dynamique. Or, le nombre de lignes et de colonnes de cette analyse croisée est variable...

Donc j'ai essayé d'implémenter ce formulaire en mode continu à partir du langage VB. En parcourant le recordsource, chaque champ de la ligne "détail" est implémenté et s'il n'y a pas d'enregistrement, les champs sont masqués.

Cependant, voilà le soucis:
Toutes mes lignes se retrouvent avec la même valeur, bien que le nombre de lignes et de colonnes soient identiques au recordsource.
Cela est certainement dû au fait que mes champs soient de source "indépendante"...

Y-a-t-il un moyen d'identifier le numéro de ligne de mon formulaire continu lors de l'implémentation des valeurs de mes champs "indépendants" afin d'avoir des valeurs différentes sur chaque ligne?
Ou bien une autre astuce?

Je met le code VB de mon formulaire:
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
Option Compare Database
Option Explicit
 
' ***** déclaration des variables ***** '
Const Nombre_colonnes = 11 ' Nombre maximum d'étiquettes sur l'état (par rapport à l'exemple) & _
    on peut en afficher plus et donc modifier cette variable
Dim dbBase As DAO.Database
Dim rstEnregistrement As DAO.Recordset
Dim NbColonnes As Integer
_________________________________________________________________
Private Sub Form_Close()
rstEnregistrement.Close
End Sub
_________________________________________________________________
Private Sub Form_Load()
 
 Dim entX As Integer
 
    'Remplis les données "Détail"
    While Not rstEnregistrement.EOF
            For entX = 1 To NbColonnes
                Me("Detail" + Format(entX)) = Nz(rstEnregistrement(entX - 1), 0)
                If entX > 1 Then
                Me("Entete" + Format(entX)) = rstEnregistrement(entX - 1).Name
                End If
            Next entX
 
            ' Cache les zones de texte inutilisées.
            For entX = (NbColonnes + 1) To Nombre_colonnes
                Me("Entete" + Format(entX)).Visible = False
                Me("Detail" + Format(entX)).Visible = False
            Next entX
 
            rstEnregistrement.MoveNext
    Wend
 
End Sub
_________________________________________________________________
Private Sub Form_Open(Cancel As Integer)
 Dim rstRequete As DAO.QueryDef
 
    Set dbBase = CurrentDb
    Set rstRequete = dbBase.QueryDefs("R_Analysecroisee_indexclasseEnjeux_MO")
    Set rstEnregistrement = rstRequete.OpenRecordset()
 
    'Définit le nombre de colonnes de la requête
    NbColonnes = rstRequete.Fields.count
 
    rstEnregistrement.MoveFirst
 
End Sub
Farabon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 21h29   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Tu as raison cela vient bien du faite que ce soit des champs indépendants. Access ne conserve qu'un seul jeu de valeurs, celles de l'enr courant et le répète sur toutes les lignes.

La solution la plus simple serait que tu crées un formulaire prévu pour afficher 255 champs dépendant (une table/requête en Access ne peut avoir qu'aux maximum 255 champs).

Puis par code, à l'ouverture, tu associes le formulaire à ta source de données et chacun de tes champs à un champ de cette source de données. Ceux qui ne sont pas associés devront être rendus invisibles pour ne pas perturber les utilisateurs. Il va aussi falloir faire cela pour les entêtes de colonne.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 13h37   #3
Futur Membre du Club
 
Homme
Inscription : avril 2011
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 48
Points : 15
Points : 15
Bonjour,

J'ai finalement opté pour la création d'une table temporaire issue des résultats de l'analyse croisée. Cela me permet de modifier les données au sein de cette table.
J'ai ensuite crée une requête de mise à jour de ma table à partir des modifications apportées sur ma table croisée temporaire.

Aussi, le nombre de champs de la table croisée variant lors de sa création, mon formulaire en affichant les données est construit de façon dynamique.

Voilà, c'était juste pour info, au cas où cela puisse servir à quelqu'un!

Merci!
Farabon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h57.


 
 
 
 
Partenaires

Hébergement Web