[VBA] Utiliser la valeur d'une cellule pour cacher 1 Frame
RésoluVoilà,
J'ai 2 UF : UF1 et UF2.
Je suis sur l'UF1, lorsque je passe à l'UF2, le nom de l'UF1 se stock dans une cellule.
Une fois sur l'UF2, j'aimerai que lorsque je clique sur Valider, il me fasse disparaître un frame présent sur l'UF1.
Pour se faire, je voudrais utiliser le nom de l'UF1 que j'ai stocké. J'avais eu comme idée de déclarer X as Variant, de donner la valeur de la cellule à X et d'écrire
X.Frame1.Visible = False
J'ai aussi essayé ça :
Sheets("Feuil1").Range("A20").Value.Frame1.Visible = False
Mais bien sûr, ça ne fonctionne pas.
Une idée svp ?
PS : pourquoi ne pas tout simplement écrire MonUf.Frame.Visible = False... tout simplement car je n'ai pas que 2 UF, j'en ai plein donc il faut que ce soit générique, d'où le stockage du nom de l'UF.
En gros, je veux pouvoir réutiliser le nom de l'UF que j'ai "stocké".
Si ce n'est pas assez clair, dites le moi.
Merci
6 réponses
Le problème porte sur la gestion de plusieurs UserForms (UF1 et UF2) et sur la façon de cacher un Frame sur UF1 lorsque l’utilisateur valide sur UF2 en utilisant le nom stocké. Les solutions tournent autour d’une variable globale d’objet et de l’assignation Set USF = Me dans chaque UF, afin d’accéder via USF.Frame1.Visible = False sans connaître le nom dynamique. Certaines réponses insistent sur l’emploi de Option Explicit et sur l’instance correcte de l’objet, notamment en évitant les références nulles et en instanciant USF dans l’ouverture du formulaire. D’autres évoquent une approche directe, par exemple MonUf.Frame.Visible = False, mais cela sacrifie la généricité lorsque le nombre de UF augmente et complique le passage de contexte.
-
Bonjour,
Je suis sur l'UF1, lorsque je passe à l'UF2 ...
L'UF1 reste active ou bien déchargée par un Unload ?
-
Bonjour a vous deux,
c'est faisable sans probleme: variable public object
https://www.cjoint.com/?DABl007SPvE
thesentry:
mais comment allez vous gerer les actions en fonction de l'UF a piloter ???? -
Je vais détailler un petit peu plus ce que j'ai :
J'ai 10 UF "normaux".
J'ai 4 UF "pop-up".
Les 4 UF "pop-up" sont présent pour chaque UF "normal" (un même UF "pop-up" est rattaché à 10 Uf "normaux").
Si j'ouvre l'UF "normal" 5, et que je clique sur la première option, je vais avoir l'UF "pop-up" 1 qui va s'ouvrir. Lorsque sur cet UF "pop-up" je vais cliquer sur Valider, le Frame1 de l'UF "normal" 5 contenant la première option devra disparaître. -
4 pop-up par UF ... ce n'est peut être pas la peine de monter une usine à gaz pour s'éviter quelques lignes de codes ...
-
Re,
J'ai essayé de l'incorporer dans mon programme mais ça ne fonctionne pas.
J'ai déclaré sur l'UF leSet USF = Me
, je l'ai mis dans Private Sub UserForm_Initialize et dans un de mes pop up (pour le test), j'ai mis
USF.Frame1.Visible = False
USF.CommandButton4.Visible = True
Mais ça ne fonctionne pas, au débogage, il me dit qu'un objet est requis. Mais dans l'idée, c'est comme le code de f894009... -
Bjr,
Private Sub OptionButton1_Click() Set USF = Me KOREP.Show End Sub
Y-a-t'il un CommandButton4 sur l'UF ?
-
Oui il a bien un CommandButton4.
Mon Frame1 présente le parcours, une fois que l'utilisateur a cliqué sur l'étape qu'il veut, le pop-up approprié s'ouvre. Lorsqu'on clique sur "Valider" dans le pop up, il se ferme, le frame1 de l'UF disparaît et un bouton apparaît pour ré-afficher si besoin le frame1 pour une modification.
J'ai tout le temps :
Erreur d'exécution '424' :
Objet requis -
Un exemple d'utilisation = https://www.cjoint.com/c/DAClKewDepP ....
-
-
-
-