Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 26/01/2011, 12h22   #1
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Par défaut Basculer d'un affichage unique à feuille de donnée en VBA

Bonjour,

Je voudrais à partir d'un bouton sur mon formulaire principal changer l'affichage de mon sous formulaire de affichage unique vers feuille de données et inversement ... j'ai bien trouvé le propriété currentview mais elle est en lecture seule.

Et merci aux contributeurs pour cette mine de savoir qu'est developpez.com
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 15h50   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Voici un exemple :

Code :
1
2
3
4
5
6
7
8
Private Sub CmdSfmDatasheet_Click()
' Donne le focus au sous-formulaire avant d'exécuter la commande
Me.NomControleSousFormulaire.SetFocus
' Exécute commande
DoCmd.RunCommand acCmdSubformDatasheet
' Redonne le focus au bouton de commande
Me.CmdsfmDataSheet.SetFocus
End Sub
CmdSfmDatasheet est le nom du contrôle bouton de commande.
NomControleSousFormulaire est le nom du contrôle sous-formulaire

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 18h02   #3
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Bonjour LedZeppII et merci ...

Cela fonctionne ... mais pas au premier clic : j'ai une erreur "La référence à une propriété | n'est pas valide" (avec cette barre verticale ds le message) Si je clique une deuxième fois je passe en feuille de données, une troisième fois je repasse en formulaire ...

Est-ce lié au fait que le sous formulaire est chargé "dynamiquement" sur mon formulaire principal ? Car j'ai testé le code sur un formulaire/sous-formulaire classique et ça fonctionne très bien ...

Voilà ce qu'il y a au chargement du formulaire principal :

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
Private Sub Form_Load()
 
'En OpenArgs je fais passer par exemple "Analyse:3"
'Analyse étant un nom de formulaire existant et qui possède un champ nommé NumTache et 3 étant le numéro d'une tache
Dim stOpenArgs1 As String 'Nom du Sous-Formulaire à ouvrir
Dim stOpenArgs2 As String 'Valeur IdTache 
 
Dim inPosition1 As Integer
 
If Not IsNull(Me.OpenArgs) Then
 
    inPosition1 = InStr(Me.OpenArgs, ":")
 
    stOpenArgs1 = Left(Me.OpenArgs, inPosition1 - 1)
    stOpenArgs2 = Mid(Me.OpenArgs, inPosition1 + 1)
 
    'TexteTache et TexteSForm sont des zones de texte indépendantes dans le formulaire principal 
    Me.TexteTache = stOpenArgs2 'Le numéro de la tache
    Me.TexteSForm = stOpenArgs1 'Le nom du sous-formulaire à ouvrir
 
 
    'Définition des propriétés du sous formulaire SFProcessAnalyse
    Me.SFProcessAnalyse.SourceObject = ""
    Me.SFProcessAnalyse.SourceObject = Me.TexteSForm
 
    Me.SFProcessAnalyse.LinkChildFields = ""
    Me.SFProcessAnalyse.LinkMasterFields = ""
    Me.SFProcessAnalyse.LinkChildFields = "NumTache"
    Me.SFProcessAnalyse.LinkMasterFields = "TexteTache"
 
End If
 
End Sub
Si vous avez une suggestion ...
Merci
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 19h35   #4
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
J'ai trouvé une solution mais pas l'origine du problème ... qui tiens c'est presque certain à la création dynamique du sous-formulaire ... j'ai tenté des repaint ou requery ça ne change rien

J'ai remarqué que par le menu Affichage/Sous formulaire l'option Feuille de donnée ne fonctionnait pas du premier coup ... en revanche si j'activais par le menu Affichage/Sous formulaire option Formulaire puis l'option feuille de données ... là ça marche ...

transcrit en code ça donne ce qui suit : le bouton CommandeAffichage permet la bascule entre les 2 modes d'affichage

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandeAffichage_Click()
On Error GoTo Err_CommandeAffichage_Click
 
Dim VueCourante As Integer
VueCourante = Me.SFProcessAnalyse.Form.CurrentView
 
Me.SFProcessAnalyse.SetFocus
DoCmd.RunCommand acCmdSubformFormView
If VueCourante <> 2 Then
DoCmd.RunCommand acCmdSubformDatasheet
End If
Me.CommandeAffichage.SetFocus
 
Exit_CommandeAffichage_Click:
    Exit Sub
 
Err_CommandeAffichage_Click:
    MsgBox Err.Description
    Resume Exit_CommandeAffichage_Click
 
End Sub
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 20h07   #5
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
J'avais aussi testé sur un sous-formulaire statique.
Donc je ne sais pas quoi te dire, concernant l'origine de ton souci.
LedZeppII 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 04h29.


 
 
 
 
Partenaires

Hébergement Web