IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Userform et code [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 545
    Par défaut Userform et code
    Bonsoir,
    Malgré la lecture de divers articles sur les userforms (sur ce site) je suis toujours dans le doute, ce qui amène une question sans doute enfantine:
    Dans le cas d'une userform, quelle partie du code associe-t-on à la userform; quelle partie met-on dans un module ?
    Merci de m'indiquer comment faire cette distinction.
    Cordialement
    Pierre

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Toutes les procédures évènementielles sont intrinsèques au module de l'UserForm après, les fonctions et subs que tu crée peuvent rester dans le module de l'UserForm si il est le seul à les utiliser on peut dire dans ce cas que le code est encapsulé, il n'y a pas d'appel extérieur et c'est plutôt recommandé si tu fais des exports/imports de l'UserForm et dans ce cas, tu n'as pas à te soucier d'exporter/importer un ou plusieurs autres modules mais elles peuvent aussi se trouver dans un module standard surtout si elles sont susceptibles d'être appelées depuis un autre endroit du projet. Il est malgré tout possible d'appeler depuis l'extérieur (extérieur à l'UserForm) une sub ou fonction située dans le module de l'UserForm mais dans ce cas, il ne faut pas qu'elles soient déclarées Private et il faut nommer l'objet comme par exemple dans le module de l'UserForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Function Multiplier(Var1 As Double, Var2 As Double) As Double
     
        Multiplier = Var1 * Var2
     
    End Function
    Appel depuis l'extérieur de l'UserForm (un module standard par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Test()
     
        MsgBox UserForm1.Multiplier(125.36, 253.2)
     
    End Sub

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour prolonger l'intervention de Theze.
    Si l'on a plusieurs formulaires qui devraient utiliser une même procédure qui modifierait par exemple un de leurs contrôles, on pourrait envisager une procédure appelable depuis ce UserForm

    Exemple d'une procédure se trouvant dans un module nommé mFunctionUserForm et qui calcule automatiquement la propriété ColumnWith d'un contrôle ListBox ou ComboBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function AutoColumnWidth(ctrlList As MSForms.Control, oRng As Range) as Boolean
     Dim tcol() As String, c As Long, tw As Double
     With ctrlList
      ReDim tcol(.ColumnCount - 1)
      For c = 1 To .ColumnCount ' Calcul largeur des colonnes et le place dans un string par concaténation
       tcol(c - 1) = CStr(oRng.Cells(1, c).Width): tw = tw + tcol(c - 1)
      Next
     DoEvents
     .Width = tw + UBound(tcol) + 2 ' Rectifie la largeur du ListBox ou ComboBox
     .ColumnWidths = Join(tcol, ";")
     End With
    End Function
    Ligne de code du UserForm qui invoque cette fonction (le nom du module qui précède le nom de la procédure n'est pas obligatoire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mFunctionUserForm.AutoColumnWidth Me.lstBox, rngData
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 545
    Par défaut [XL-2000] Userform et code
    Bonjour et merci à Thèze et à Philippe,
    Il faut que je phosphore un peu autour de cette syntaxe qui ne m'est pas familière avant de pouvoir clore la discussion, donc à plus.
    Cordialement
    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Userform et code exécutable
    Par AAWOOPY56 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/07/2009, 11h47
  2. Userform faire du code propre
    Par lipaika dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/01/2008, 11h36
  3. Remplacer un mot dans le code d’un userform
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 29/12/2007, 20h02
  4. Liens entre code feuille et Userform.
    Par stéphane75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/07/2007, 16h00
  5. [VBA-E] executer code d'un userform depuis un autre
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 03/04/2006, 19h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo