Forum - Questions générale - Sujet n°380

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par  le // : :  Sujet n° 380  Mettre tous les formulaires et les etats en modal

le 15/07/2010 : 23:13
par possible924

Anonyme

visiteur

Bonjour à tous,
Je souhaiterais de mettre par VBA
tous les formulaires de nom F_* et tous les états de nom E_* d'une application
en fenêtre modal et inversement de les mettre tous en fenêtre nom modal.
Merci par avance pour votre aide
 sujet clos  Haut

[]   

DébutPrécédent [ 1 2 ] SuivantFin
Réponse n° 1
--------
le 16/07/2010 : 03:41
par 3Stone

Anonyme

Administrateur

Bonjour,

Tu peux utiliser ces deux fonctions qui s'adaptent automatiquement à ce que tu veux faire...

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 2
--------
le 16/07/2010 : 08:24
par possible924

Anonyme

visiteur

Merci pour la rapidité de la réponse, c'est exactement la réponse à mon problème.
Cependant, j'ai un peit soucis, voilà ce que j'ai fait :

Code : xhtml
Option Compare Database
Option Explicit
Function ModalOff()
FormModal(False, "F_") = True
ReportModal(False, "E_") = True

FormModal(False, "SF_") = True
ReportModal(False, "SE_") = True
End Function
Function ModalOn()
FormModal(True, "F_") = True
ReportModal(True, "E_") = True
End Function
Function FormModal(boModal As Boolean, sPartName As String)
'FormModal( True , "F_" )
'ce qui placera tous les formulaires dont le nom commence pas "F_" en modal.
'FormModal( False , "F_Clients" )
'ce qui supprimera la propriété modale de tous les formulaires dont le nom commence par "F_Clients"
Dim obj As AccessObject, db As Object
Dim sForm As String, sFormList As String
Set db = Application.CurrentProject
'/ Boucler sur tous les formulaires
For Each obj In db.AllForms
sForm = obj.Name
If Left(sForm, Len(sPartName)) = sPartName Then
sFormList = sFormList & sForm & vbCrLf
DoCmd.OpenForm (sForm), acDesign, , , , acHidden
Forms(sForm).Modal = boModal
DoCmd.Close acForm, sForm, acSaveYes
End If
Next obj
MsgBox "Liste des objets traités:" & vbCrLf & vbCrLf & sFormList '/ Libérer
Set db = Nothing
End Function
Function ReportModal(boModal As Boolean, sPartName As String)
'ReportModal( True , "E_" )
'ce qui placera tous les états dont le nom commence pas "E_" en modal.
'ReportModal( False , "E_Clients" )
'ce qui supprimera la propriété modale de tous les états dont le nom commence par "E_Clients"

Dim obj As AccessObject, db As Object
Dim sReport As String, sReportList As String
Set db = Application.CurrentProject
'/ Boucler sur tous les états
For Each obj In db.AllReports
sReport = obj.Name
If Left(sReport, Len(sPartName)) = sPartName Then
sReportList = sReportList & sReport & vbCrLf
DoCmd.OpenReport (sReport), acViewDesign, , , acHidden
Reports(sReport).Modal = boModal
DoCmd.Close acReport, sReport, acSaveYes
End If
Next obj
MsgBox "Liste des objets traités:" & vbCrLf & vbCrLf & sReportList '/ Libérer
Set db = Nothing
End Function

Aprés avoir écrit    FormModal(False, "F_") , j'obtenais "Erreur de compilation",
c'est pour cela que j'ai mis "= True" !

Si je lance     FormModal(False, "F_Client") = True, ça marche, mais avec un message "Objet requis"

Si je lance     FormModal(False, "F_") = True, Access ne répond pas

Vous avez certainement la solution !
Merci par avance

  clos par  le // : :  Haut
Réponse n° 3
--------
le 16/07/2010 : 15:15
par 3Stone

Anonyme

Administrateur

Bonjour,

Inutile de coller mon code, je le connais !

Ensuite, faire une fonction pour appeler une fonction... n

 
Citation :

Aprés avoir écrit FormModal(False, "F_") , j'obtenais "Erreur de compilation"

 
Dans ce cas, il faut regarder quelle est l'erreur de compilation et l'indiquer ici!

 
Citation :

c'est pour cela que j'ai mis "= True" !

 
Tu n'est pas sérieux ??
Si tu comprennais comment on appelle une fonction, tu n'aurais pas écrit cette betise d

Donc, mes fonctions, tu les places dans un module général (onglet module) et non dans un module de classe ("sous" le formulaire).
Ensuite, tu compiles le code pour voir si tu n'as pas d'erreur de code. Au besoin, tu corrige et tu recompile.

L'appel de la fonction se fera comme indiqué dans l'explication de la fonction!

Je pense qu'il serait important de lire ces deux articles...
Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 4
--------
le 16/07/2010 : 19:14
par possible924

Anonyme

visiteur

J'ai bien placé tes fonctions dans un module général que j'ai nommé "Modal", et au début, j'ai bien placé : FormModal( True , "F_" ) dans le code d'un formulaire , mais j'obtiens "Erreur de compilation, Attendu ="
J'ai mis = Tue, (plus de problème de compil), mais ça ne marche pas !!!

Je ne sais pas quoi faire d'autre
A+

  clos par  le // : :  Haut
Réponse n° 5
--------
le 16/07/2010 : 19:25
par 3Stone

Anonyme

Administrateur

Désolé... l

La fonction s'appelle sans les parenthèses, puisqu'elle ne renvoi rien...

donc:   FormModal True, "F_"

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 6
--------
le 16/07/2010 : 21:21
par possible924

Anonyme

visiteur

J'exécute, FormModal True, "F_" est accepté à la compilation, mais à l'éxécution, j'ai un plantage total d'Access qui ne répond plus !

A+

  clos par  le // : :  Haut
Réponse n° 7
--------
le 17/07/2010 : 14:21
par 3Stone

Anonyme

Administrateur

Bonjour,

 
Citation :

j'ai un plantage total d'Access qui ne répond plus !

 
Il n'y a aucune raison pour que cela plante Access d

Par ou appeles tu la fonction ?
Ferme tous les formulaires et appelle la fonction dans la fenêtre d'exécusion directe (ctrl + G) et dis-moi...

Je suppose que la fonction compile corectement. Par ailleurs, c'est une très maufaise idée d'utiliser un nom réservé pour une Fonction, Sub ou nom de module. Renomme ton module par exemple en "mod_Modal".

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 8
--------
le 18/07/2010 : 13:56
par possible924

Anonyme

visiteur

C'est en toute humilité que je viens te présenter mes plus plates excuses.

Access ne plante pas lorsque j'exécute ces fonctions, mais l'exécution est assez longue (plusieurs minutes) et le voyais le message "Access ne répond pas", ce qui me faisait penser à un plantage.
A la dernière tentative, j'appelle les fonctions et pars vaquer à d'autres occupations, et oh magie, j'ai la liste de tous les objets modifiés.

Merci pour tout,ces deux fonctions m'apportent vraiment un meilleur confort de travail

  clos par  le // : :  Haut
DébutPrécédent [ 1 2 ] SuivantFin
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut