Macro pour Userform1 et 2

Résolu
Yoyobog Messages postés 10 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je dois créer deux Userform nommés Usf1 et Usf2. J aimerais pouvoir me servir de ma macro « PlaceEcran » dans les 2 Userform. Mon problème est quelle methode employer pour remplacer With Usf1 par Usf2 quand j'ouvre l'Usf2
Merci d'avance

Sub PlaceEcran()

With Usf1
.startUpPosition = 3
.Width = 100
.Height = 100
.Left = 0
.Top = 0
End With

End Sub

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Il faut passer les paramètres au lieu de les mettre en dur :

    Sub PlaceEcran(Usf)
    With Usf
    .startUpPosition = 3
    .Width = 100
    .Height = 100
    .Left = 0
    .Top = 0
    End With

    End Sub

    puis
    Call PlaceEcran(Usf1)
    ou
    Call PlaceEcran(Usf2)
    --
    Toujours zen
    La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
    0
    1. Yoyobog Messages postés 10 Statut Membre
       
      Bonjour,
      Merci beaucoup, ça marche.
      Pour mieux comprendre le sens ou est il possible de trouver l'aide
      Ex: Pour moi Paramètre et dur = ?

      Encore merci et bonne journée
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Quand tu écris "With Usf1" tu figes le formulaire utilisé : "c'est en dur", figé

      Si tu utilises
      "Call PlaceEcran(Usf1)"
      et
      Sub PlaceEcran(Usf)
      With Usf
      tu passes le formulaire en paramètre à ta procédure qui est utilisable pour autant de formulaires que tu veux.

      ou est il possible de trouver l'aide

      Avec F1 tu as l'aide VBA excel qui est bien faite mais mérite un petit apprentissage.
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonsoir,

    Pourquoi ne pas mettre le code dans les propriétés de chaque userform avec la syntaxe initialize code pour l'userform1

    Private Sub UserForm_Initialize()
    With UserForm1
    .startUpPosition = 3
    .Width = 100
    .Height = 100
    .Left = 0
    .Top = 0
    End With
    End Sub

    0
    1. Yoyobog Messages postés 10 Statut Membre
       
      Bonjour,
      Merci pour cette réponse, mais le but est d'alléger mes écritures dans la programmation.
      Pour info, j'ai eu la solution par gbinforme

      Bonne journée
      0