1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Questions générale
Sujet n° 380 |
Mettre tous les formulaires et les etats en modal |
le 15/07/2010 : 23:13 par possible924
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 |
|
|
Réponse n° 1 -------- le 16/07/2010 : 03:41 par 3Stone
Administrateur
|
Bonjour,
Tu peux utiliser ces deux fonctions qui s'adaptent automatiquement à ce que tu veux faire...
Cordialement, Pierre(3stone) |
|
|
Réponse n° 2 -------- le 16/07/2010 : 08:24 par possible924
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 : xhtmlOption 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 |
|
|
Réponse n° 3 -------- le 16/07/2010 : 15:15 par 3Stone
Administrateur
|
Bonjour,
Inutile de coller mon code, je le connais !
Ensuite, faire une fonction pour appeler une fonction...
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
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) |
|
|
Réponse n° 4 -------- le 16/07/2010 : 19:14 par possible924
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+ |
|
|
Réponse n° 5 -------- le 16/07/2010 : 19:25 par 3Stone
Administrateur
|
Désolé...
La fonction s'appelle sans les parenthèses, puisqu'elle ne renvoi rien...
donc: FormModal True, "F_"
Cordialement, Pierre(3stone) |
|
|
Réponse n° 6 -------- le 16/07/2010 : 21:21 par possible924
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+ |
|
|
Réponse n° 8 -------- le 18/07/2010 : 13:56 par possible924
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 |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|