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 :

Modifier le nom d'un control msforms automatiquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 37
    Par défaut Modifier le nom d'un control msforms automatiquement
    Bonsoir à tous,

    Voici mon soucis :

    Ayant un grand nombre de textbox dans mon formulaire, j'aimerai pouvoir les renommé automatiquement.

    J'ai créer rapidement sur ma feuille excel le nom de mes controls qui sont du type :
    A1
    A2
    A3
    B1
    B2
    B3
    ...

    Voici le bout de code que j'ai fait, qui bien entendu ne marche pas (sinon je ne serai pas là )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim cb As Control
    Dim cel As Range
     
    Set cel = ActiveSheet.Range("A1")
     
    For Each cb In UserForm1.Controls
        cb.Name = cel.Value
        Set cel = cel.Offset(1)
    Next cb
    Voici le message d'erreur :
    "Impossible de définir la propriété Name. Impossible de définir la propriété à l'exécution."

    J'ai essayé d'exécuter ce code sans avoir lancé mon formulaire, puis avec mais c'est le même message d'erreur qui apparaît.

    Si quelqu'un a une idée, je suis preneur.

    Merci

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    inspire toi avec ce lien
    http://silkyroad.developpez.com/VBA/...UserForm/#LI-B

    et adaptes à tes besoins l'un de ces deux codes, en changeant MsgBox par ton but :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Ctrl As Control
     
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.TextBox Then MsgBox Ctrl.Object.Value
    Next Ctrl
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Ctrl As Control
     
    For Each Ctrl In Controls
        If TypeName(Ctrl) = "TextBox" Then MsgBox Ctrl.Object.Value
    Next Ctrl
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 37
    Par défaut
    merci casefayere, mais ce n'est pas ce que j'attendais.

    Ce n'est pas le texte du contrôle que je veux modifier mais son nom.
    Après je ne sais pas si c'est possible. Étant donné que dans mon formulaire j'ai énormément de contrôles à mettre et que leur nom doivent suivre un ordre logique, je me suis dit que j'aurais peut-être pu gagner du temps en les renommant automatiquement par une macro.

    Peut-être que la seule solution consiste à les créer dynamiquement ?

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je crois avoir vu qu'il est impossible de changer le nom d'un contrôle par VBA
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre éprouvé
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Par défaut
    Bonjour !

    Je passais par là avec le même pbl et je suis tombée sur la réponse "c'est pas possible" qui ne m'a pas satisfaite... en creusant, j'ai trouvé la solution :-)

    Afin que ceux qui liront ceci ne s'arrête pas à cette dernière phrase, voici ce que j'ai fait, largement inspiré par :
    http://silkyroad.developpez.com/VBA/...cEditor/#LII-B

    Dans mon cas, j'ai plein de contrôles finissant par "1" pour le bloc 1, je voulais les mêmes avec finissant par 2 pour le bloc 2, etc...
    J'ai copié mes contrôles sur un formulaire vierge (userform1) et j'ai transformé tous mes 1 en 2, puis suis allée les recoller dans le formulaire initial ... j'aurais pu le faire en ajoutant une condition ex : qu'ils se trouvent avec un .top minimum de xx... Mais bon... ça marche aussi... A adapter donc...

    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
    24
    25
    26
    27
    28
    Option Explicit
    Dim Usf As Object
     
    Sub lancementProcedure()
    Dim X As Object
     
    Set X = ModifNomControle
     
    End Sub
     
     
    Function ModifNomControle() As Object '(nomListe As String) As Object
     
    Dim ObjListBox As Object
     
    Set Usf = ThisWorkbook.VBProject.VBComponents("Userform1")
     
    Set ObjListBox = Usf.Designer.Controls
     
    Dim i As Integer
    Dim oo As Object
    Dim strList As String
     
    For Each oo In ObjListBox
        oo.Name = Application.WorksheetFunction.Substitute(oo.Name, 1, 2)
    Next
     
    End Function
    En espérant que cela puisse aider qqun...
    Bonne journée

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/07/2014, 11h20
  2. [AC-2003] Modifier le nom d'un controle
    Par denisw95 dans le forum IHM
    Réponses: 4
    Dernier message: 11/02/2010, 14h13
  3. Modifier le "nom machine" (hostname)
    Par hawax dans le forum Réseau
    Réponses: 6
    Dernier message: 06/03/2009, 10h50
  4. Modifier le nom d'une table.
    Par Asdorve dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/01/2005, 17h45
  5. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12

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