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 :

[VBA-E]Renommer un Control Label via une procédure


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut [VBA-E]Renommer un Control Label via une procédure
    Bonjour,
    Je souhaiterai pouvoir renommer des Labels d'un userform en fonction d'une liste de noms dans une feuille Excel. L'idée est d'actualiser le Caption du Label en fonction du nom d'une dépense qui est située dans une feuille Excel (même classeur que le Userform).

    Etant donné que j'ai un bon nombre de Label à actualiser, j'ai nommé chaque Label par LblExpense1 ainsi de suite jusqu'à LblExpense20 et je pensais effectuer sous Sub Userform_initialize() une boucle du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Expense(1 To 20) as String
    Dim Ctrltemp as Control
     
    For i=1 To 20
        Ctrltemp=Me.Controls("LblExpense" & i)
        Ctrltemp.Caption= Expense(i)
    Next i
    Bien évidemment, cela ne marche pas et l'erreur est: Run-time Error 91 (Object variable or withblock variable not set). J'ai parcouru le site pour trouver la bonne formulation mais sans succès!

    Le userform contient également d'autres controls.

    Merci pour votre aide.

  2. #2
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Bonjour,

    je te mets des bouts du code sur lequel je suis en ce moment, ça devrait t'aider...
    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
    17
    18
    19
    20
    21
    22
    23
    Dim txtAngle(), txtLongueur(), lblAngle(), lblLongueur() As Control
    NbCintres = cboNbCintres.Value
    ReDim txtAngle(NbCintres), txtLongueur(NbCintres), lblAngle(NbCintres), lblLongueur(NbCintres)
        For i = 1 To NbCintres
            Set lblAngle(i) = frmSaisie.Controls.Add("forms.Label.1")
            Set txtAngle(i) = frmSaisie.Controls.Add("forms.TextBox.1")
            Set lblLongueur(i) = frmSaisie.Controls.Add("forms.Label.1")
            Set txtLongueur(i) = frmSaisie.Controls.Add("forms.TextBox.1")
                    With lblAngle(i)
                .Left = 80
                .Top = 140 + 20 * (i - 1)
                .Width = 30
                .Height = 20
                .Caption = "Alpha" & i
                .Name = "lblAngle" & i
            End With
            With txtAngle(i)
                .Left = 120
                .Top = 140 + 20 * (i - 1)
                .Width = 30
                .Height = 20
                .Name = "txtAngle" & i
            End With
    Tu me dis ce que tu en penses ?

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    Salut Cwain,
    Un grand merci pour ton aide et la rapidité de ton assistance.
    La réponse se trouvait dans ton code: j'ai oublié (et je dcouvre en même temps l'utilité de "Set") "set"

    en indiquant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Ctrltemp = Me.Controls("lblExpense" & i)
    cela marche.

    Merci encore

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Set sert à créer une instance d'un objet.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. [XL-2010] Création de boutons via une procédure
    Par RicardoBxl dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/01/2011, 20h53
  2. Donner un nom à une sauvegarde via une procédure stockée
    Par arthuro45 dans le forum Administration
    Réponses: 1
    Dernier message: 28/09/2010, 12h32
  3. Lancement DTSRun via une procédure stockée
    Par dut-dut dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/12/2007, 16h57
  4. affectation d'une propriété via une procédure
    Par justfabi1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/05/2007, 10h10
  5. invite de données via une procédure
    Par CYCLOPE91440 dans le forum SQL
    Réponses: 1
    Dernier message: 09/12/2006, 12h55

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