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 08/12/2010, 18h24   #1
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Par défaut Problème pour afficher un formulaire caché

Bonjour,

Je n'arrive pas à réafficher un formulaire que j'ai caché auparavant

Le principe est d'afficher un aperçu avant impression d'un état lorsque des fenêtres modales ont été ouvertes.

voici le principe de l'algorithme
Code :
1
2
3
4
5
6
7
8
9
10
Ouverture du formulaire principal (mode ACmodal)
...
sur bouton_imprimer_etat_clic
   Ouverture du formulaire d'impression des état(mode ACmodal)
   ...
   sur bouton_afficher_apercu_clic
      
    OpenReport(nom_de_l_etat)  ' code ci-dessous
   end sub
end sub
Voici le code :


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
Public Sub OpenReport(ReportName As String, Optional View As Integer, Optional FilterName As String, Optional WhereCondition As String, Optional Callform As Form, Optional OpenArgs As String)
On Error Resume Next  'For No data
Dim loFormArray() As String
Dim loform        As Form
Dim intCount      As Integer
Dim intX          As Integer
 
    Application.CommandBars("Menu").visible = False
    For Each loform In Forms
        If loform.visible Then
            ReDim Preserve loFormArray(intCount)
            loFormArray(intCount) = loform.Name
            loform.visible = False
            intCount = intCount + 1
        End If
    Next
    DoCmd.OpenReport ReportName, View, FilterName, WhereCondition, , OpenArgs
    DoCmd.Maximize
    SendKeys ("z")
 
    Reports(ReportName).Tag = "Preview"  'For Log files
 
    Do While CurrentProject.AllReports(ReportName).IsLoaded = True: DoEvents: Loop
 
    For intX = intCount - 1 To 0 Step -1
        Forms(loFormArray(intX)).visible = True
    Next
 
    Application.CommandBars("Menu").visible = True
 
    If Callform.Name <> "" Then
       DoCmd.SelectObject acForm, Callform.Name
    End If
 
If err = 2501 Then err.Clear 'Erreur définie par l'application ou par l'objet
 
End Sub
Le problème est que lorsque je souhaite réafficher le formulaire (forms.visible), il refuse de s'afficher.

Y a t'il un problème de comptatibilité pour un formulaire ouvert en mode acmodal ?
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 22h44   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bon, après quelques tests, je suis arrivé à la conclusion suivante :
Quand on ouvre plusieurs formulaires en mode acModal, il semblerait qu'il n'est pas possible de réafficher l'ensemble des formulaires en utilisant l'instruction
Code :
form(nom_du_formulaire).visible = true
J'ai fait le test en ouvrant plusieurs formulaires par la commande
Code :
docmd.openform(nom_du_formulaire)
puis je les ai tous cachéd en utilisant l'instruction
Code :
form(nom_du_formulaire).visible = false
Il est possible de réafficher CHAQUE fenêtre INDIVIDUELLEMENT
en utilisant l'instruction
Code :
form(nom_du_formulaire).visible = true
mais SEULEMENT après avoir caché le formulaire visible.

Est-ce que quelqu'un peut confirmer ce fait ?

Merci d'avance
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 19h40   #3
Expert Confirmé Sénior
 
Avatar de jacques_jean
 
Homme Jacques THERY
CBPDI(Congés Bien Payés/Durée Indéterminée)
Inscription : janvier 2006
Messages : 3 107
Détails du profil
Informations personnelles :
Nom : Homme Jacques THERY
Âge : 67
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : CBPDI(Congés Bien Payés/Durée Indéterminée)

Informations forums :
Inscription : janvier 2006
Messages : 3 107
Points : 5 383
Points : 5 383
Bonsoir,

Je ne sais pas si cela peut répondre à votre question mais dans l'aide d'Access vous trouvez :

Propriété Modal (FenModale)
Vous pouvez utiliser la propriété FenModale (Modal) pour spécifier si un formulaire s'ouvre en tant que formulaire modal. Dans ce cas, vous devez fermer ce formulaire avant de pouvoir activer un autre objet.


Vous avez aussi ces liens :


http://office.microsoft.com/fr-fr/ac...001232758.aspx

http://access.developpez.com/faq/?pa...asserFocusForm

http://access.developpez.com/faq/?pa...m#FormDialInvi
jacques_jean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 20h31   #4
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonsoir Jacques,

Merci pour votre aide.

Au vu de ce qui est expliqué sur le site de Microsoft, il semble malheureusement impossible de "décacher" plusieurs fenêtres ouvertes en mode acModal.
La seule solution serait donc de sauvegarder les contextes des formulaires appelants (sauf le dernier) et de les fermer puis de les réouvrir dans l'ordre où ils apparaissaient.

Je vais faire les modifications nécessaires et tester avant de marquer ce post comme résolu, même si la solution ne me satisfait pas.

Je vais envoyer un post sur le site de Microsoft pour me faire confirmer cette analyse, et je mettrai leur retour sur le forum.

Encore toute mes félicitations pour le travail que vous effectuez pour donnee à ce forum le niveau de qualité qu'il offre.
dumas.blr 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 17h42.


 
 
 
 
Partenaires

Hébergement Web