Feuille userform avec paramètres
Résolu/Fermé
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
-
9 janv. 2021 à 20:32
iBenny Messages postés 96 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 - 12 janv. 2021 à 20:34
iBenny Messages postés 96 Date d'inscription lundi 23 janvier 2012 Statut Membre Dernière intervention 3 avril 2022 - 12 janv. 2021 à 20:34
A voir également:
- Userform show
- Show key plus - Télécharger - Utilitaires
- Telecharger usb show - Télécharger - Sauvegarde
- Smart show 3d - Télécharger - Visionnage & Diaporama
- Pro show - Télécharger - Visionnage & Diaporama
- Media show pro code gratuit - Télécharger - Présentation
9 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
Modifié le 10 janv. 2021 à 14:56
Modifié le 10 janv. 2021 à 14:56
Bonjour,
« Une feuille nommée MaFeuille peut être invoqué dans le code par son nom : MaFeuille.show
Est-il possible de passer des paramètres à la feuille d'une façon quelconque ? »
Il n'est pas possible de transmettre des informations à un Userform via les arguments (on utilise argument plutôt que « paramètre ») de la méthode .Show.
L'ouverture d'un Userform se fait par la méthode .Show qui possède un argument facultatif DoModal. C'est le seul argument toléré par la méthode .Show
Pour transmettre des information à un Userform, il est possible de définir des propriétés. Il suffit d'affecter leurs valeurs à ces propriétés avant d'afficher l'Userform.
C'est ce qui devrait être fait systématiquement pour séparer l'interface utilisateur et les données "métier".
Pour définir une propriété d'un userform, on peut simplement déclarer une variable publique dans cet userform.
Par Exemple :
Un bouton dans ThisDocument :
Et une procédure d'affichage dans un module standard nommé MonModule :
Et finalement le Userform nommé MaFeuille :
Le fichier : https://mon-partage.fr/f/jKMDFTmH/
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
« Une feuille nommée MaFeuille peut être invoqué dans le code par son nom : MaFeuille.show
Est-il possible de passer des paramètres à la feuille d'une façon quelconque ? »
Il n'est pas possible de transmettre des informations à un Userform via les arguments (on utilise argument plutôt que « paramètre ») de la méthode .Show.
L'ouverture d'un Userform se fait par la méthode .Show qui possède un argument facultatif DoModal. C'est le seul argument toléré par la méthode .Show
Pour transmettre des information à un Userform, il est possible de définir des propriétés. Il suffit d'affecter leurs valeurs à ces propriétés avant d'afficher l'Userform.
C'est ce qui devrait être fait systématiquement pour séparer l'interface utilisateur et les données "métier".
Pour définir une propriété d'un userform, on peut simplement déclarer une variable publique dans cet userform.
Par Exemple :
Un bouton dans ThisDocument :
Private Sub MonBouton_Click() Dim bit As Byte Dim str As String bit = 23 str = "Mon texte" MonModule.OuvrirMaFeuille bit, str End Sub
Et une procédure d'affichage dans un module standard nommé MonModule :
Sub OuvrirMaFeuille(b As Byte, s As String) MaFeuille.a = b MaFeuille.t = s MaFeuille.Show End Sub
Et finalement le Userform nommé MaFeuille :
Public a As Byte Public t As String Private Sub btnAfficher_Click() MsgBox "Propriété a = " & Me.a & vbCrLf & _ "Propriété t = " & Me.t End Sub Private Sub btnQuitter_Click() Unload Me End Sub
Le fichier : https://mon-partage.fr/f/jKMDFTmH/
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
Ambassadeur
1 552
11 janv. 2021 à 00:26
11 janv. 2021 à 00:26
un autre exemple tout simple:
code du userform
code du userform
Public Function reponse(question As String) As String Me.TextBox1 = question Me.Show reponse = Me.TextBox1 End Functioncode du module:
Sub getresp() Debug.Print UserForm1.reponse("dis moi") End Sub
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
11 janv. 2021 à 05:27
11 janv. 2021 à 05:27
Ne pouvant vous remercier en #23, je le fais ici ; )
Cordiale salutation,
iBenny
Cordiale salutation,
iBenny
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
Ambassadeur
1 552
9 janv. 2021 à 21:20
9 janv. 2021 à 21:20
bonjour,
utilises-tu Excel?
ta question est peu claire: que veux-tu dire par "appeler une feuille userform"?
que sont les paramètres d'une feuille ou d'une userform?
il est probablement préférable que tu expliques ce que tu veux réaliser, peut-être en donnant un exemple ou en partageant un fichier.
utilises-tu Excel?
ta question est peu claire: que veux-tu dire par "appeler une feuille userform"?
que sont les paramètres d'une feuille ou d'une userform?
il est probablement préférable que tu expliques ce que tu veux réaliser, peut-être en donnant un exemple ou en partageant un fichier.
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
10 janv. 2021 à 03:43
10 janv. 2021 à 03:43
Bonjour,
Dans Word ! Une procédure peut être appelée avec des paramètres quand elle est conçue ainsi:
Sub LetsGo(a as byte, t as string)
...
end Sub
On peut donc appeler la procédure avec des paramètres:
LetsGo 23, "Mon texte"
Une feuille nommée MaFeuille peut être invoqué dans le code par son nom :
MaFeuille.show
Est-il possible de passer des paramètres à la feuille d'une façon quelconque ?
Dans Word ! Une procédure peut être appelée avec des paramètres quand elle est conçue ainsi:
Sub LetsGo(a as byte, t as string)
...
end Sub
On peut donc appeler la procédure avec des paramètres:
LetsGo 23, "Mon texte"
Une feuille nommée MaFeuille peut être invoqué dans le code par son nom :
MaFeuille.show
Est-il possible de passer des paramètres à la feuille d'une façon quelconque ?
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
1 552
>
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
10 janv. 2021 à 12:02
10 janv. 2021 à 12:02
une feuille dans Word? peux-tu expliquer? qu'est MaFeuille? quel est le type de MaFeuille?
tu peux peut-être consulter la documentation relative à ce type d'objet pour déterminer si la méthode show accepte des paramètres.
il est probablement préférable que tu expliques ce que tu veux réaliser, peut-être en donnant un exemple ou en partageant un fichier. cela nous permettra peut-être de suggérer des solutions.
tu peux peut-être consulter la documentation relative à ce type d'objet pour déterminer si la méthode show accepte des paramètres.
il est probablement préférable que tu expliques ce que tu veux réaliser, peut-être en donnant un exemple ou en partageant un fichier. cela nous permettra peut-être de suggérer des solutions.
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
Ambassadeur
1 552
10 janv. 2021 à 12:14
10 janv. 2021 à 12:14
en essayant de donner un sens à ce que écris, je me demande si tu ne fais pas ceci:
- tu fais du VBA dans Word,
- dans ce VBA, tu interagis avec Excel, et tu appliques la méthode show à un object de type (Excel)UserForm.
- tu souhaites que le VBA de Word puisse communiquer des données qui seraient utilisées par du code VBA dans Excel
est-ce correct?
si oui, peux-tu nous montrer ce que tu fais en VBA dans Word, pour interagir avec Excel? il me semble probable qu'il soit possible d'adapter cela pour obtenir ce que tu souhaites.
- tu fais du VBA dans Word,
- dans ce VBA, tu interagis avec Excel, et tu appliques la méthode show à un object de type (Excel)UserForm.
- tu souhaites que le VBA de Word puisse communiquer des données qui seraient utilisées par du code VBA dans Excel
est-ce correct?
si oui, peux-tu nous montrer ce que tu fais en VBA dans Word, pour interagir avec Excel? il me semble probable qu'il soit possible d'adapter cela pour obtenir ce que tu souhaites.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
Modifié le 10 janv. 2021 à 19:06
Modifié le 10 janv. 2021 à 19:06
Re,
Pour remplacer le MsgBox, tu peux utiliser le MsgBox Perso de Didier Fourgeot, déjà fait et entièrement paramétrable :
http://www.mdf-xlpages.com/modules/TDMDownloads/singlefile.php?lid=34&com_id=449&com_rootid=449&cid=10&
Pour remplacer le MsgBox, tu peux utiliser le MsgBox Perso de Didier Fourgeot, déjà fait et entièrement paramétrable :
http://www.mdf-xlpages.com/modules/TDMDownloads/singlefile.php?lid=34&com_id=449&com_rootid=449&cid=10&
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
10 janv. 2021 à 22:06
10 janv. 2021 à 22:06
Merci Patrice pour l'info. Je préfère continuer avec ma forme personnelle qui est en voie de perfectionnement ! et elle marche bien mais la passation d'information d'info (variable) reste à développer.
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
Modifié le 10 janv. 2021 à 22:29
Modifié le 10 janv. 2021 à 22:29
Bonjour
Le problème insoluble réside dans le fait qu'une variable globale définie dans le module appelant n'est pas accessible dans la forme appelée... et vice versa (à ce que je comprends).
Ma variable globale Rép dans la forme est invisible dans le module appelant.
J'ai contourné le problème en sauvegardant la valeur convoitée dans la propriété "Tag" de la forme qui elle est accessible dans le module appelant. Le tour est joué :
Si vous avez des infos sur la communication de variables globales entre module appelant et forme appelée, on est intéressé par la chose. Entretemps. passer par la propriété "Tag" semble une élégante solution.
Cordiales salutations
iBenny
Le problème insoluble réside dans le fait qu'une variable globale définie dans le module appelant n'est pas accessible dans la forme appelée... et vice versa (à ce que je comprends).
Ma variable globale Rép dans la forme est invisible dans le module appelant.
J'ai contourné le problème en sauvegardant la valeur convoitée dans la propriété "Tag" de la forme qui elle est accessible dans le module appelant. Le tour est joué :
Function Question(Q As String) With Questionner If Q = "Monter" Then .Caption = "Remonter la dernière ligne ?" .Sup1.Visible = False .Sup2.Visible = True .Q = "On remonte la dernière ligne ? = " + Format(Selection.Characters.Count) + " caractères" Else .Caption = "Position de l'image = " + Format(PointsToInches(Selection.Information(wdVerticalPositionRelativeToPage))) + " pouces" End If .Show End With Question = Questionner.Tag End Function
Si vous avez des infos sur la communication de variables globales entre module appelant et forme appelée, on est intéressé par la chose. Entretemps. passer par la propriété "Tag" semble une élégante solution.
Cordiales salutations
iBenny
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
1 552
10 janv. 2021 à 22:32
10 janv. 2021 à 22:32
tu ne nous montres pas comment tu as fait avec les variables "globales".
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
1 552
>
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
10 janv. 2021 à 22:47
10 janv. 2021 à 22:47
comme expliqué en #9:
- une variable déclarée public dans un module est accessible, comme une variable, de partout
- une variable déclarée public dans un userform est une propriété publique du userform, utilisable exactement comme tu utilises les autres propriétés du userform, telles que Tag, Caption et Q, donc ainsi:
- une variable déclarée public dans un module est accessible, comme une variable, de partout
- une variable déclarée public dans un userform est une propriété publique du userform, utilisable exactement comme tu utilises les autres propriétés du userform, telles que Tag, Caption et Q, donc ainsi:
Questionner.Rép
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
>
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
10 janv. 2021 à 22:50
10 janv. 2021 à 22:50
J'ai dû mal lire. Je reteste...
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
>
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
10 janv. 2021 à 23:10
10 janv. 2021 à 23:10
Je suis pas certain de te comprendre :
Je viens de tester et une variable déclarée globale au niveau module est... "invisible" dans les formes appelées !
On ne déclare pas une variable en tant que "Public" mais elle le deviens quand elle est déclarée niveau module. C'est probablement ce que tu voulais dire !?
Salutation
iBenny
Je viens de tester et une variable déclarée globale au niveau module est... "invisible" dans les formes appelées !
On ne déclare pas une variable en tant que "Public" mais elle le deviens quand elle est déclarée niveau module. C'est probablement ce que tu voulais dire !?
Salutation
iBenny
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
1 552
>
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
Modifié le 10 janv. 2021 à 23:59
Modifié le 10 janv. 2021 à 23:59
tu écris "On ne déclare pas une variable en tant que "Public"".
d'où cela vient-il? une conviction personnelle?
as-tu vu les exemples en #6?
pourquoi ne pas utiliser ces exemples, en dépit de tes convictions?
au minimum, les tester, avant de décider de faire autrement?
ne fût-ce que par respect pour ceux qui prennent le temps de t'assister.
tu me sembles plus prompt à poser des questions qu'à lire les réponses.
cela pourrait finir par décourager ceux qui choisissent de te donner un coup de main.
d'où cela vient-il? une conviction personnelle?
as-tu vu les exemples en #6?
pourquoi ne pas utiliser ces exemples, en dépit de tes convictions?
au minimum, les tester, avant de décider de faire autrement?
ne fût-ce que par respect pour ceux qui prennent le temps de t'assister.
tu me sembles plus prompt à poser des questions qu'à lire les réponses.
cela pourrait finir par décourager ceux qui choisissent de te donner un coup de main.
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
10 janv. 2021 à 22:37
10 janv. 2021 à 22:37
Y a rien à montrer. Je l'ai mis dans mon code (en jaune) de forme pour montrer ce que j'ai essayé mais vais la supprimer car inaccessible dans le module appelant. Et vice-versa...
Salutations
iBenny
Salutations
iBenny
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
1 552
10 janv. 2021 à 22:50
10 janv. 2021 à 22:50
je n'y lis pas "public".
et ne vois pas le versa.
et ne vois pas le versa.
yg_be
Messages postés
23323
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2024
1 552
10 janv. 2021 à 23:32
10 janv. 2021 à 23:32
même si tu es certain d'avoir suivi les exemples et la documentation, il est très préférable de montrer l'ensemble de ce que tu essaies.
tu nous montre vaguement du code dans le userform, sans le code correspondant dans le module.
tu nous indiques avoir essayé l'autre méthode (vice-versa), sans montrer aucun code.
difficile pour nous de t'indiquer où tu te trompes, si, certain d'avoir raison, tu ne nous montres rien.
en passant, je me demande si tu as bien
cela te permettrait, sans doute, de détecter plus rapidement tes erreurs.
tu nous montre vaguement du code dans le userform, sans le code correspondant dans le module.
tu nous indiques avoir essayé l'autre méthode (vice-versa), sans montrer aucun code.
difficile pour nous de t'indiquer où tu te trompes, si, certain d'avoir raison, tu ne nous montres rien.
en passant, je me demande si tu as bien
option explicitdans chaque module et userform.
cela te permettrait, sans doute, de détecter plus rapidement tes erreurs.
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
Modifié le 11 janv. 2021 à 01:32
Modifié le 11 janv. 2021 à 01:32
Je fais amende honorable et donne raison à yg_be en #23 :
On peux déclarer une variable "public" au lieu de "Dim" en global dans le module et elle serra accessible partout, même dans les formes !!!
Quand on fait trop de choses en même temps, on s'enferre !!!
Module:
Forme:
Salutation et merci à tous
iBenny
On peux déclarer une variable "public" au lieu de "Dim" en global dans le module et elle serra accessible partout, même dans les formes !!!
Quand on fait trop de choses en même temps, on s'enferre !!!
Module:
Public Rép As Boolean Function Question(Q As String) As Boolean With Questionner If Q = "Monter" Then .Caption = "Remonter la dernière ligne ?" .Sup1.Visible = False .Sup2.Visible = True .Q = "On remonte la dernière ligne ? = " + Format(Selection.Characters.Count) + " caractères" Else .Caption = "Position de l'image = " + Format(PointsToInches(Selection.Information(wdVerticalPositionRelativeToPage))) + " pouces" End If .Show End With Question = Rép End Function
Forme:
Salutation et merci à tous
iBenny
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
Modifié le 11 janv. 2021 à 02:03
Modifié le 11 janv. 2021 à 02:03
Bonjour,
Réponse à lire jusqu’à la fin :)
Exemple simple avec un Userform nommé Questionner qui contient :
- un Label nommé Question
- un premier bouton nommé Bouton1
- un second bouton nommé Bouton2
Dans un module standard :
Dans le module du formulaire Questionner :
Le fichier : https://mon-partage.fr/f/mrGkAIjG/
L'intérêt de cette méthode est que l'IHM est indépendante du traitement "métier".
D'autre part, je te conseille de saisir le code manuellement, dans l'ordre ci-dessus : tu verras que l'intellisense simplifie grandement la saisie.
Réponse à lire jusqu’à la fin :)
Exemple simple avec un Userform nommé Questionner qui contient :
- un Label nommé Question
- un premier bouton nommé Bouton1
- un second bouton nommé Bouton2
Dans un module standard :
Option Explicit Public Enum uReponse uBouton1 = 1 uBouton2 = 2 End Enum Sub Question_1() With Questionner .Bouton1.Caption = "Oui" .Bouton2.Caption = "Non" .Reponse = Empty .Question = "Remonter la dernière ligne ?" .Show If .Reponse = uBouton1 Then MsgBox "Reponse Oui" ElseIf .Reponse = uBouton2 Then MsgBox "Reponse Non" Else MsgBox "Pas réponse" End If End With Unload Questionner End Sub
Dans le module du formulaire Questionner :
Public Reponse As uReponse Private Sub Bouton1_Click() Me.Reponse = uBouton1 Me.hide End Sub Private Sub Bouton2_Click() Me.Reponse = uBouton2 Me.hide End Sub
Le fichier : https://mon-partage.fr/f/mrGkAIjG/
L'intérêt de cette méthode est que l'IHM est indépendante du traitement "métier".
D'autre part, je te conseille de saisir le code manuellement, dans l'ordre ci-dessus : tu verras que l'intellisense simplifie grandement la saisie.
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
Modifié le 11 janv. 2021 à 05:13
Modifié le 11 janv. 2021 à 05:13
Bonjour Patrice,
Merci beaucoup pour le concept mais il ne réponds pas à mes besoins !
Votre solution renvoi des msgbox informant du choix de bouton pressé ce qui ne m'est d'aucune utilité. Ma solution revoie une variable booléenne vraie/faux qui m'est utile dans la poursuite du traitement de mon code (mon module comporte plus d'une centaine de procédures/fonctions étalées sur plus de 4000 lignes de code; sans compter la demi/douzaine de formes).
Merci beaucoup de l'effort mais ma solution #27 satisfait pleinement aux besoins de mon code.
PS: merci pour le "unload" ! je l'avais oublié celle-là ; ) Je vais l'ajouter à mon code...
Sincère salutation Patrice,
iBenny
Merci beaucoup pour le concept mais il ne réponds pas à mes besoins !
Votre solution renvoi des msgbox informant du choix de bouton pressé ce qui ne m'est d'aucune utilité. Ma solution revoie une variable booléenne vraie/faux qui m'est utile dans la poursuite du traitement de mon code (mon module comporte plus d'une centaine de procédures/fonctions étalées sur plus de 4000 lignes de code; sans compter la demi/douzaine de formes).
Merci beaucoup de l'effort mais ma solution #27 satisfait pleinement aux besoins de mon code.
PS: merci pour le "unload" ! je l'avais oublié celle-là ; ) Je vais l'ajouter à mon code...
Sincère salutation Patrice,
iBenny
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
>
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
11 janv. 2021 à 10:47
11 janv. 2021 à 10:47
Re,
Tu n'as pas compris le concept, la solution que je t'ai proposé ne renvoie pas de Msgbox, les Msgbox sont un exemple du traitement de la propriété Reponse renvoyée par le formulaire.
Tu pourrais tout aussi bien t'en servir pour renseigner une variable booléenne que tu utiliserais par la suite.
Quand au concept, la séparation de l'IHM et de la partie "métier", c'est un des fondamentaux de la programmation, il répond à tous les besoins.
Un peu de lecture :
La bonne programmation d'un userform
Et en corrélation directe, pourquoi il faut bannir l'utilisation des variables publiques :
Problèmes des variables publiques
Cordialement
Tu n'as pas compris le concept, la solution que je t'ai proposé ne renvoie pas de Msgbox, les Msgbox sont un exemple du traitement de la propriété Reponse renvoyée par le formulaire.
Tu pourrais tout aussi bien t'en servir pour renseigner une variable booléenne que tu utiliserais par la suite.
Quand au concept, la séparation de l'IHM et de la partie "métier", c'est un des fondamentaux de la programmation, il répond à tous les besoins.
Un peu de lecture :
La bonne programmation d'un userform
Et en corrélation directe, pourquoi il faut bannir l'utilisation des variables publiques :
Problèmes des variables publiques
Cordialement
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
Modifié le 11 janv. 2021 à 17:06
Modifié le 11 janv. 2021 à 17:06
Je vais lire ça quand je trouverai du temps libre. Le concept d'éviter les variables publiques pique ma curiosité. Je remarque que vous proposez des variables publiques en #28 !
C'est quoi un IHM ? et la partie "métier" ?
Salutations
iBenny
C'est quoi un IHM ? et la partie "métier" ?
Salutations
iBenny
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
>
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
Modifié le 11 janv. 2021 à 21:08
Modifié le 11 janv. 2021 à 21:08
En #28, c'est une Énumération (de constantes), rien à voir avec une variable !!!
IHM : Interface Homme / Machine (dans ce cas l'userform).
La partie "métier" du code est celle qui résout les spécificités de ton problème.
Ceci dit, uReponse n'est là que pour simplifier le traitement de l'exemple.
Ça amène un inconvénient majeur : l'IHM n'est plus encapsulée ! C'est donc aussi à éviter....
Pour ça, il vaut mieux utiliser une énumération publique existante comme par exemple VbMsgBoxResult (mais avec plus de lignes de code).
IHM : Interface Homme / Machine (dans ce cas l'userform).
La partie "métier" du code est celle qui résout les spécificités de ton problème.
Ceci dit, uReponse n'est là que pour simplifier le traitement de l'exemple.
Ça amène un inconvénient majeur : l'IHM n'est plus encapsulée ! C'est donc aussi à éviter....
Pour ça, il vaut mieux utiliser une énumération publique existante comme par exemple VbMsgBoxResult (mais avec plus de lignes de code).
iBenny
Messages postés
96
Date d'inscription
lundi 23 janvier 2012
Statut
Membre
Dernière intervention
3 avril 2022
2
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
11 janv. 2021 à 21:11
11 janv. 2021 à 21:11
L'IMH (la forme) n'est pas encapsulée !? Ce qui veux dire ? Ce qui implique ?
Modifié le 10 janv. 2021 à 17:34
Arguments, en effet !
CONFUSION : si j'utilise le terme "Feuille", c'est pcq WORD VBA l'utilise dans l'aide du Visual Basic intégré. Ne PAS confondre avec feuille... "de calcul" dans Excel ! Désolé pour la confusion...
Patrice a bien saisi l'essence de ma question : je devrai finalement créer des variables globales soit dans :
1- le module principal NewMacro, les définir avant l'affichage de la "fenêtre" et les manipuler dans la "fenêtre" (UserForm);
2- le code de la "fenêtre" (UserForm) et les pré-définir dans la procédure d'appel de NewMacro avant d'afficher la fenêtre.
Pourquoi cet exercice ? Pcq je veux remplacer l'objet MsgBox avec une fenêtre prédéfinie car de cette façon, je peux modifier la police du texte du message, ce qu'on ne peux pas faire dans un MsgBox. Je veux donc prédéfinir les textes de l'en-tête et du "message" et les incorporer dans la forme en guise de question, ajouter deux boutons Oui/Non et traiter la suite du code en fonction de la réponse sélectionnée.
Merci Patrice...
Salutation cordiale à tous,
iBenny
10 janv. 2021 à 18:42
Modifié le 10 janv. 2021 à 18:56
Par contre je déconseille toujours très vivement l'utilisation de variables publiques (i.e. définies dans un module standard). Il vaut mieux transférer les informations via les arguments des procédures et / ou des fonctions .
10 janv. 2021 à 19:06
soit en passant des paramètres à une fonction de la userform:
le code de la userform:
le code principal:
Modifié le 10 janv. 2021 à 19:11
Une fonction publique d'un Userform s'appelle une méthode.
- Les méthodes servent à effectuer des actions,
- Les propriétés servent à stocker des données.