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 :

Paramétrer le nom d'un UserForm


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Par défaut Paramétrer le nom d'un UserForm
    Bonjour le forum,

    Dans une application, j’ai créé deux UserForms :
    • UF_PNG qui contient un contrôle WebBrowser
    • UF_Pict qui contient un contrôle image

    Dans le code ci-dessous, je précise dans la variable myUF le nom du UserForm en fonction du type de la photo traitée.
    Un membre du forum pourrait-il m’aider afin d’afficher le bon UserForm et son contenu.

    D’avance merci

    Harry

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub show_Pict(Row_Target)
    myFile = Cells(Row_Target, 1).Value & "\" & Cells(Row_Target, 2).Value
    If Right(myFile,3) = "png"  Then
        Dim Hauteur As Long, Largeur As Long, myUF As String
        Hauteur = UF_PNG.WebBrowser1.Height
        Largeur = UF_PNG.WebBrowser1.Width
        UF_PNG.WebBrowser1.Navigate _
         "ABOUT:<HTML><HEAD><body><IMG WIDTH=" & Largeur & " HEIGHT=" & Hauteur & " SRC='" & myFile & "'</IMG></BODY></HTML>"
            myUF = "UF_PNG"
    Else:
    Set UF_Pict.Image1.Picture = LoadPicture(myFile)
    myUF = "UF_Pict"
    End If
    'affichage du UF
    VBA.UserForms(myUF).Show '<======================
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Harry

    La syntaxe requise est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = "Userform2"
    VBA.UserForms.Add(x).Show

    Cordialement

    Docmarti.

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Par défaut
    Bonjour Docmarti,
    Merci pour votre réponse.
    J'ai adapté votre solution à mon environnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBA.UserForms.Add(myUF).Show
    Le bon UF est affiché mais sans les données dans les contrôes.
    C'est probablement la conséquence du "Add" qui, selon l'aide, ne fait pas partie des méthodes de la collection "Userforms" mais est accepté et réagit.
    Par contre, la méthode "Load" génère une erreur de compilation. Les subtiliés VBA sont parfois difficiles à comprendre.
    Je continue de chercher une solution mais toute suggestion est la bienvenue

    Bonne journée

    Harry

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Tu as raison.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBA.UserForms.Add(myUF).Show
    crée une nouvelle copie du Userform et ne montre pas le Userform lui-même.

    Essaie plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each userf In UserForms
      Debug.Print userf.Name
     Next
     
    UserForms(Index).Show

    Docmarti

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Par défaut
    Bonjour Docmarti,

    Merci de vous intéresser à mon problème.
    L'approche que vous proposez s'applique, je pense, à des UF déjà chargées (Load).
    Je crains que mon souci initial - rendre le nom du UF à afficher variable - soit insoluble en VBA.
    Je m'en sors par une solution classique de Select Case et un traitement individuel des UF et, partant, autant de .Show
    Je vous souhaite une excellente journée

    Harry

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Ca se fait en créant une collection des Userforms qui doit être mise à jour quand un Userform est fermé.

    http://www.mrexcel.com/forum/excel-q...ollection.html

    Docmarti.

Discussions similaires

  1. [Tableaux] Passage d'un paramètre sans nom
    Par ddlal dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2007, 17h00
  2. paramétrer les noms de formulaires
    Par marechal dans le forum IHM
    Réponses: 1
    Dernier message: 12/03/2007, 12h29
  3. Réponses: 16
    Dernier message: 25/10/2005, 07h59
  4. Réponses: 1
    Dernier message: 18/10/2005, 16h31
  5. [ PL/pgSQL ] Passage de paramètres et nom de table
    Par Dam)rpgheaven dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/06/2005, 14h34

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