Mettre des procédures dans un module [Résolu]

Signaler
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012
-
cs_masterfree
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012
-
Bonjour à tous,

Je fais un prog qui contient plusieurs pages, et pour chacune d'elles je mets plusieurs sub pour "désactiver la case System" et "empêcher le déplacement" de la fenêtre.
Ci-après les procédures en question :
'Désactive les options de la case system
  Dim nStyle  As Long
  Dim nMenu   As Long
  Dim nCount  As Long
  Dim hMenu As Long
 Dim menuItemCount As Long

'--- Désactive la case system "fermer" ----
   hMenu = GetSystemMenu(Me.hwnd, 0)
   If hMenu Then
      menuItemCount = GetMenuItemCount(hMenu)
      Call RemoveMenu(hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION)
      Call RemoveMenu(hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION)
      Call DrawMenuBar(Me.hwnd)
   End If

  '--- Empêche le déplacement ---
  With Me
    nStyle = GetWindowLong(.hwnd, GWL_STYLE)
    nStyle = nStyle And Not (WS_THICKFRAME)
    SetWindowLong .hwnd, GWL_STYLE, nStyle
    nMenu = GetSystemMenu(.hwnd, 0)
    RemoveMenu nMenu, SC_MOVE, MF_REMOVE Or MF_BYCOMMAND
    nCount = GetMenuItemCount(nMenu)
    RemoveMenu nMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION
    DrawMenuBar .hwnd
  End With
Me.BackColor = &HC0C0C0

Ces lignes de codes m'ont été fournies par différents forums je crois, dont celui-ci, et je voudrais savoir comment le mettre dans un module pour m'éviter de le spécifier dans toutes les pages !
J'ai commencé avec ça, mais j'ai toujours une erreur lors de l'exécution.
With Parent.ConfigPages
End Function
Si c'est bien cela qu'il faut mettre.
Bien que l'aide de Msdn traite le sujet de "Width", je n'ai pas de solutions pour ça !

Merci d'avance de votre aide.


Cordialement, Masterfree

15 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
et pendant que nous y sommes, "J-Luc",
entre 58 et 36, cela fait quand même 22 ans de différence (tu vieillis trop vite, hein ... prends soin de toi ...)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Bonjour,
Comment te répondre, alors que :
l'on ne sait pas où tu as déclaré Parent (entre autres) et tes constantes.

on ne voit même pas les fonctions ou procédures que tu sembles utiliser

On voit des instructions hors procédure !

Ni clair, ni précis, comme demande.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

Ce que j'ai mis dans le 1er code, ce sont les instructions telles qu'elles sont écrites dans mes pages !

Pour l'instant, il n'y a aucun parent déclaré puisque c'est fait page/page.
Mais je mets tout ça dans un module, certainement que "Parent" sera toutes les pages.
Un peu comme je l'avais fait pour différents contrôles
Public Function QuestionOK(ByRef Parent As Form)
With Parent.PanelQ
'    .Height = 375
    .Left = 525
    .Top = 1245
    .Width = 8655
    .Font = "Microsoft Sans Serif"
    .FontSize = 11
    .FontBold = True
End With
With Parent.cmdOK
    .Height = 855
    .Left = 4095
    .Top = 5490
    .Width = 1335
End With


Cordialement, Masterfree
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Désolé, ami, mais je n'aide que lorsque l'on sait au moins un peu de quoi l'on traite.
Je n'aide jamais à "insérer" dans un code ce que l'on ne maîtrise pas, ni de près, ni de très loin.
Le développement, c'est tout, sauf de la "magie".
Quant à ce qu'est une fonction : elle est en général typée et retourne une valeur.
Bonne chance.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

Bah ! C'est pas grave !


Cordialement, Masterfree
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Quelle autre réponse valable pouvais-tu attendre, avec ce que tu as montré ?

Je vais essayer de te résumer (et ce devrait être suffisant) l'essentiel :
1) Tout "chose", "truc", "machin", "chouette" : variable (quel que soit son type, procédure, etc ...) n'a de portée que dans le module de code qui l'utilise si elle y est déclarée en "Private" et partout, si elle est déclarée Publique dans un module .bas.
2) lorsqu'une variable (quel que soit son type) est déclarée publique dans un module .bas, elle peut se voir également attribuer une valeur depuis n'importe où dans ton appli.
3) rien n'interdit d'affecter une variable (publique ou privée) à un objet. Dès lors que l'on utilise ensuite cette variable, c'est à cet objet que l'on se réfère

A partir de là : toutes les combinaisons sont possibles.

Choisir la combinaison la meilleure et la moins "chère" dépend de ce que tu dois faire (de ton appli).
Ta question était donc un peu comme si tu avais dit :
"voilà ce que j'ai dans mon frigo . Donner moi la recette d'utilisation"
Il y aurait autant de recette qu'il y aurait de recettes possibles avec utilisation de tout ou partie des ingrédients dont tu disposes.

Mais avant même tout cela :
Une chose, dans ton premier message, est de nature à préoccuper sérieusement car elle montre, module bas ou non, en "Public" ou en "Private", etc ... une lacune énorme :
Des instructions hors toute procédure !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

J'ai très bien compris tes explications 1, 2 et 3, et c'est ce que j'avais mis en application.
Ça concernait surtout les objets, mais là, ce que j'ai posé dans mon post, n'est pas considéré comme un objet mais plutôt comme une procédure !
Je sais pas si je m'exprime avec les termes qui conviennent ! En tout cas, pour moi qui suit le prg de près, c'est peut-être juste !

Comme tu le dis si bien, j'ai choisi la combinaison la moins chère !

"voilà ce que j'ai dans mon frigo . Donner moi la recette d'utilisation"

Ton image est hyper réaliste.
Même si j'ai les bons ingrédients, la recette est plus compliquée des petits plats que j'ai l'habitude de faire.
En occurrence, savoir paramétrer des objets en mettant leur propriété dans une procédure en public puisque cela concerne toute les pages !

Une chose, dans ton premier message, est de nature à préoccuper sérieusement car elle montre, module bas ou non, en "Public" ou en "Private", etc ... une lacune énorme :

Oui c'est un .bas et lorsque j'ai parlé de "toutes" les pages, j'en avais conclu que c'était clair, donc "Public" !

Bah ! C'est pas grave, je laisserai ces procédures là où elles sont, c'est à dire dans le "Form_Load" de toutes les pages.
Comme il n'y a pas de modification a y apporter, une fois que c'est dans la page, pas de soucis !

Merci quand même d'avoir pris le temps de m'expliquer clairement certains points !

Cordialement, Masterfree
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
mais là, ce que j'ai posé dans mon post, n'est pas considéré comme un objet mais plutôt comme une procédure !

oui ? et === >>
Tout "chose", "truc", "machin", "chouette" : variable (quel que soit son type, procédure , etc ...)

Toute procédure (routine ou fonction, donc) déclarée "Private" n'est accessible que depuis le module de code dans lequel elle se trouve. Elle est accessible depuis partout si "Publique" dans un module .bas.
"Accessible" veut dire utilisable (appelable, donc, si procédure)
Quel est le problème ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

Je te répondrai demain parce que mes enfants viennent d'arriver.

Bonne soirée.


Cordialement, Masterfree
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Tu sais quoi ?
je suis tombé, "par hasard", sur ceci :
Simplement que j'ai
Citation:
Erreur de compilation:
Seuls des commentaires peuvent apparaître après End Sub, End Function ou End Property
C'est ce que j'appelle une erreur puisque c'est marqué comme ça !

et j'ai lu le reste ...
Ben mon vieux ! ...
Je te l'avais pourtant dit !
Pour mémoire :
Mais avant même tout cela :
Une chose, dans ton premier message, est de nature à préoccuper sérieusement car elle montre, module bas ou non, en "Public" ou en "Private", etc ... une lacune énorme :
Des instructions hors toute procédure !

Te voilà dorénavant bien seul (du moins sans moi).
Désolé.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
217
Ah oui : ===>> il était
Aujourd'hui, 20h28
.
Tes enfants étaient repartis, donc, "suppose-je"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

Bonjour Jacques,

entre 58 et 36, cela fait quand même 22 ans de différence (tu vieillis trop vite, hein ... prends soin de toi ..

C'est vrai qu'on ne voit pas le temps passé... et ça se ressent, plus les mêmes réflexes qu'avant, plus les mêmes impacts avec les gisquettes, etc.
Mais 36 dans mon profil, ce n'était qu'une blague... de mauvais goût (peut-être) pour certain mais j'espère que pour toi, il n'en est rien ?

C'est vrai que j'aurais dû mettre mon âge réel !
D'ailleurs, c'est ce que je vais faire.

Et tu as trouvé mon prénom et mon âge, je suppose que c'est sur mon site ou sur mon FB
Pour mes enfants, ils sont repartis vers 22:15, et j'ai appris une bonne nouvelle, la date de mariage de ma fille.
Et donc, trop tard pour encore essayer les modifs dans mon prb.

Avec tout ça, pour te répondre, j'ai bien mis aujourd'hui à 05:00 ces procédures dans un module... en les déclarant "Public", mais l'erreur est toujours la même !

Je suis certain qu'il y a quelque chose à faire, mais comme tu me l'as dit
Ben mon vieux ! ...
Je te l'avais pourtant dit !
Pour mémoire :
Heu ! Pour "mon vieux" faut pas exagérer non plus ! lol
J'avais fait comme tu me l'avais dit, mais j'avais toujours cette erreur.

Te voilà dorénavant bien seul (du moins sans moi).
Désolé.

Je comprends très bien, mais j'ai eu un très grand plaisir à converser avec toi malgré tout, car il est rare d'avoir quelqu'un d'aussi loquaces dans un forum.


Cordialement, Masterfree
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

Ca y est, je crois avoir compris pourquoi ! Certains objets manquaient dans certaines pages.
C'est sans doute pour ça !
Je vais encore essayer pour voir si ça fonctionne.

Y a pas, on va y arriver !

Cordialement.
Masterfree
Messages postés
115
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
29 juin 2012

Bonjour masterfree
je ne suis pas un pro j'explique juste ce que je fait perso
pour un form quand il est Activate j'appele diverse Function et Sub Publique dans Module ou Private dans Form.
pour mes pages Excel quand elle sont Activées/sélectionées,
Private Sub Worksheet_Activate()j'appele une Public Sub perso Call WorksheetActivate qui se trouve dans un Module qui traite des Onglet/Sheets que j'ai nommé MJP©SYS_WorkSheet pour situer/grouper mes Sub/Funtion d'un meme interet. c'est la que tu place tes sub et dans tes pages hMenu = GetSystemMenu(Me.hwnd, 0) pour transmetre hMenu...
voila sans aucunes prétentions si ca peut aider...
@+JP
Messages postés
55
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
14 juillet 2012

Bonjour mjpmjp, je prends note de tout ça et vais tenter de les mettre en application.


Cordialement.
Masterfree