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

Excel Discussion :

Changer titre d'un userform dont le nom est dans une cellule


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Changer titre d'un userform dont le nom est dans une cellule
    Bonjour à tous,

    Dans le contexte d'une application bilingue, j'ai une macro de traduction qui doit changer les titres et différents labels des contrôles de plusieurs userforms.
    Pour cela j'ai un onglet de traduction avec plusieurs colonnes :
    A : nom de l'userform
    B : nom du control
    C : valeur en français
    D : valeur en anglais

    Je cherche donc a faire une boucle qui ressemble à quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Do while sheets(1).cells(i,1)<>""
     
       nomForm = sheets(1).cells(i,1).value
       nomCtrl = sheets(1).cells(i,2).value
       valeurTrad = sheets(1).cells(i,3).value 'ou cells(i,4) la sélection de la langue se fait en dehors de la boucle
     
       VBA.UserForms.Add(nomForm).caption = valeurTrad 'pour le titre du userform
       VBA.UserForms.Add(nomForm).Controls(nomCtrl).caption = valeurTrad 'pour le label d'un controle
     
    Loop
    Le code précédent ne renvoie pas d'erreur, mais n'effectue pas le changement de label demandé.
    Avez vous des idées sur le problème ?

    Merci d'avance pour vos réponses

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 257
    Points
    34 257
    Par défaut
    Salut,

    pour les aspects multilingues des applications, j'ai tendance à utiliser une procédure qui se déclenche dans l'évènement Form_Load()

    Tu passes alors par un Me.Controls() et un Me.Caption nettement plus sympatoches à manipuler ^^
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Oui c'est une solution solution envisageable.

    Vu que la macro gère aussi la traduction de cellules des différents onglet je voulais tout faire dans la même boucle, mais je n'ai pas encore trouvé comment.

    J'ai trouvé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.VBProject.VBComponents("userform1").Designer.Controls("label1").Caption = "test"
    qui fonctionne, mais qui demande de cocher la case "Accès approuvé au modèle d'objet du projet VBA" dans les paramètres des macros du centre de gestion de la confidentialité...

    Je continue à chercher la solution optimale ^^

Discussions similaires

  1. Requete SQL sur une table dont le nom est dans une autre table
    Par orangepresse dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/09/2007, 13h32
  2. Réponses: 3
    Dernier message: 05/02/2007, 09h41
  3. Accéder à une table dont le nom est dans une table
    Par claralavraie dans le forum Oracle
    Réponses: 7
    Dernier message: 26/12/2006, 15h51
  4. Réponses: 3
    Dernier message: 05/10/2006, 18h52
  5. Appel de methode dont le nom est dans une variable
    Par osopardo dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2005, 20h56

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