Utiliser une variable à la place du nom d'un contrôle

Bonjour à tous !

Ôtez-moi d'un doute ? Je ne crois pas avoir vu l'intéressé fournir de fichier ?

Hello MFerrand ... aucun doute là-dessus !! donc on parle maintenant dans le vide sidéral complet et ce n'est pas faute d'avoir transmis des fichiers ! Et on en est au début de la page 3.

Merci Steelson !

On est donc sur des conjectures très conjecturales ! LouReed m'avait instillé un doute...

On continue de former l'équipe des Charles à temps !

On continue de former l'équipe des Charles à temps !

subtil jeu de mots, j'aime ...

la conjecture de Fermat est devenue théorème récemment (il en a fallu du temps) ... donc celle-ci aussi, mais faut être patient

Merci pour ces explication

Mais dans cette procédure public, "LRD_Commun", je peux avoir le nom du contrôle qui a lancé cette procédure, dans un MsgBox

Par contre, je n'arrive pas a faire de même pour le nom de la Form

MsgBox (La_form.Name)

N'en déplaise aux Charles attend...

Le "Call" appel la procédure public LRD_Commun avec en paramètre l'objet UserForm qui contient le contrôle qui à "demander" de lancer cette procédure.

Une fois la procédure lancée, la variable La_Form a toutes les caractéristiques du USF "appelant", donc pour avoir son nom :

La_Form.Name

Mais a quoi vous sert il d'avoir son nom ? Puisque si vous voulez modifier une listBox contenu dans ce USF "appelant" il vous suffit de la pointée comme ceci :

La_Form.ListBox1.Clear 

pour effacer ses donnée, nul besoin du nom du USF !

La question à l'origine, avant que Charles se mette à attendre :

""Du coup, je veux mettre le chargement de la ListBox dans une procédure publique, et l'appeler en lui passant le nom de l'UserForm""

Nul besoin du nom à partir du moment où l'on a une variable objet qui contient le USF "en entier", du coup le code de la ListBox serait :

    With La_Form
        With wListBox
            .Clear
            .RowSource = wFeuille & "!E2:F" & wDerLig
        End With
    End With

Maintenant je ne peux plus être plus clair...

@ bientôt (et je stop la surveillance de ce sujet)

LouReeD

Oui, je viens de comprendre !

Désolé

Et n'oubliez pas :

@ bientôt

LouReeD

Nul besoin du nom à partir du moment où l'on a une variable objet qui contient le USF "en entier",

Mais justement ! Il me souvient avoir fait remarquer au début que l'argument était de type Variant, et dès lors que l'on n'a pas vu le code de la procédure lançant cette dernière, on ne peut savoir ss'il s'agit d'un objet ou non...

Maréchal, bonjour !

quand on reprend son message d'ouverture :

J'ai deux UserForm, Recette et Depense

Dans chacune de ces UesrForm, j'ai une ListBox qui est alimentée par la feuille Membre

Du coup, je veux mettre le chargement de la ListBox dans une procédure publique, et l'appeler en lui passant le nom de l'UserForm

Moi je comprend qu'on est sur un USF et qu'on lance une procédure "commune" en public qui fait référence à un contrôle ListBox contenu dans ce USF et que la question était comment fait on pour passer "le nom" du USF à cette procédure, en remplaçant à notre niveau de connaissance "le nom" par Objet d'origine du lancement de la procédure vu le titre du sujet... non ?

C'est ce que je disais sur le message suivant :

hier à 13h54

https://forum.excel-pratique.com/viewtopic.php?p=673061#p673061

En fait c'était simple...

@ bientôt

LouReeD

Nota : passez le bonjour à Charles !

en lui passant le nom de l'UserForm

Mais ça, c'est ce qu'il dit !

Si St Thomas a une utilité, il faut surtout savoir ce qu'il fait !

edit : pour en avoir une idée, il faut au moins avoir le code d'appel de cette procédure, à laquelle il passe un Variant, qui peut donc être n'importe quoi !

NB- Le UserForm étant chargé, il appartient à la collection UserForms et peut donc être atteint par :

UserForms(sonNom)

en remplaçant à notre niveau de connaissance "le nom" par Objet d'origine du lancement de la procédure vu le titre du sujet...

et ça c'est ce que j'ai ajouté au vu du titre du fil

@ bientôt

LouReeD

Wahou, vous êtes de vrais philosophes (ou politiciens) capables de disserter dans un mode purement virtuel, sans même un début de brouillon de fichier ! mais le principal c'est que le client, lui, hé bien il a compris ! chapeau

Oui, je viens de comprendre !

Magnifique en effet ! Mais sait-on ce qu'il a compris ?

mais moi c'est clair ! je n'ai rien compris (je dois être un vrai terrien attaché au concret !)

Je te confirme que tu n'es pas le seul !

Si vous le permettez, je met mon grain de sel ….

Je voulais obtenir le nom de la Form pour traiter en conséquence

En fait, et j'ai bien compris, le nom n'a pas d'importance

Il faut appeler la procédure ne lui passant Me comme argument

Call Module1.ListBoxMembre(Me)

Cette procédure est définie comme suit

Public Sub ListBoxMembre(wForm As UserForm)

Ensuite, on ne s'occupe pas du nom de la Form

C'est le contrôle à traiter qui est important

With wForm.lstMembre

Voila ….

Je dois constater que tu dois aimer les redondances !

    ListBoxMembre Me

aurait suffi. Et de même pour :

Sub ListBoxMembre(wForm As UserForm)

Ceci étant, pourquoi ne pas te pencher sur la fusion de tes deux Userforms Recettes et Dépenses, dont les fonctions sont a-priori similaires et qui de ce fait peuvent être remplies par un même Userform, ce qui simplifierait...

Cordialement.

Rechercher des sujets similaires à "utiliser variable place nom controle"