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

VBA Word Discussion :

Modifier Caption dynamiquement


Sujet :

VBA Word

  1. #1
    Invité
    Invité(e)
    Par défaut Modifier Caption dynamiquement
    Bonjour à tous,

    ça va faire un petit moment que je cherche entre les forums, tutos, et je ne trouve pas de solution.

    J'aimerais savoir si il est possible de modifier le caption d'un contrôle. Simple, c'est sur. Mais le nom du contrôle est dans une variable. Je m'expplique :

    exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'Definition
    Dim label As String
    label = "lblCodeProduit"
    'modification du caption
    'Comment faire ??
    'Normalement :
    ThisDocument.lblCodeProduit.Caption = "NouvelleValeur"
    Donc je suis un peu bloqué .. c'est peut être tout bête, mais à force de chercher partout je m'égare. J'avais pensé utiliser CallByName

    En fait, c'est pour utiliser une boucle qui modifierait tout une suite de label, donc ça doit être "dynamique".

    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par nomelek
    Bonjour à tous,

    ça va faire un petit moment que je cherche entre les forums, tutos, et je ne trouve pas de solution.

    J'aimerais savoir si il est possible de modifier le caption d'un contrôle. Simple, c'est sur. Mais le nom du contrôle est dans une variable. Je m'expplique :

    exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'Definition
    Dim label As String
    label = "lblCodeProduit"
    'modification du caption
    'Comment faire ??
    'Normalement :
    ThisDocument.lblCodeProduit.Caption = "NouvelleValeur"
    Donc je suis un peu bloqué .. c'est peut être tout bête, mais à force de chercher partout je m'égare. J'avais pensé utiliser CallByName

    En fait, c'est pour utiliser une boucle qui modifierait tout une suite de label, donc ça doit être "dynamique".

    merci
    Tu veux changer le nom du label, pas son caption c'est ça ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Si le caption.

    J'ai pas été assez clair , je vais étoffer un peu.

    En fait avant, j'ai une liste de variables.
    je parcours cette liste de variable et si le nom de la variable est égale au name d'un label de mon form et bien on le remplit.

    J'ai un problème au niveau du remplissage. Puisque je dois remplir le label.caption de la valeur courante dans ma boucle ...

    Si j'ai été clair ... hum

    Algo : (pas de balise code pour un algo ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For each i To tab[CODPRD,CODMACHIN,CODTRUC]
       If CODPRD existe dans mon FORM
          Form.CODPRD.Caption = "Qqchose"   ' c'est là qu'est le problème ...
       Else ...
      ...
    NEXT i
    Dernière modification par zazaraignée ; 24/05/2007 à 01h05. Motif: Ajout des balises Code, c'est le bouton #

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    il faut que tu boucles sur les controles de ta form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each control in maform.controls
        if control.name = "" then Form.CODPRD.Caption = control.caption
    next control
    Avec on error resume next, je pense que ça devrait suffire

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le nom de mon contrôle (ici : CODPRD par exemple) n'est stocké que dans une variable. On ne le connait que grâce à cette variable.

    Donc le problème c'est l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim i As String
    i="CODPRD"
     
    Form. ... .Caption = ""
    'et là je mets quoi pour modifier le contrôle CODPRD ?
    'je ne peux pas le mettre en dur ce qui donnerait : Form.CODPRD.Caption
    'je boucle sur une liste contenant tout mes contrôles, donc j'aimerais extraire
    'le nom des contrôles de cette liste
    ***************************************

    Edit :
    Hum j'ai lu ta réponse, mais ce n'est pas le problème auquel je suis confronté
    Ce que je veux faire, j'ai l'impression que ce n'est pas bien naturel.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    je viens de te donner la solution

  7. #7
    Invité
    Invité(e)
    Par défaut
    Arf ... j'explique mal ! ^^

    Je peux pas faire justement
    maform.CODPRD.Caption

    Je sais plus comment expliquer ...

    Disons que j'ai une liste de variable.
    Si dans le form, on trouve un contrôle du même nom d'une variable on remplit le contrôle de cette variable
    Et comme j'ai beaucoup de valeur, il faudait que ça soit dynamique.
    Je ne peux pas me permettre d'écrire : maform.CODPRD.Caption
    Donc je veux prendre le nom de la variable (sachant que mes contrôles ont des noms identiques) pour le glisser entre maform. xxxx . Caption

    hum ... j'espère avoir été plus clair ! en tout cas, merci d'essayer de comprendre !

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    sisi j'avais bien compris lol

    Regarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim strControlName as variant
     
    For each strControlName in tab[CODPRD,CODMACHIN,CODTRUC]
        for each control in form.controls
            if control.name = strControlName then
                control.caption = strControlName 'pas tout à fait sûr de ce que tu veux faire là, mais bon l'idée y est
            end if
        next control
    next strControlName

  9. #9
    Invité
    Invité(e)
    Par défaut
    je regarde et je tiens au courant ... ^^

  10. #10
    Invité
    Invité(e)
    Par défaut
    je vois ... c'est vrai que ça marchera ! Merci

    Mais - il y a toujours un mais ! - en fait je n'ai pas de champ Form (je travail directement sur un Word) et ThisDocument.xx ou Me.xx ne propose pas Controls, j'ai testé avec FormFields ... mais ça ne va pas ...

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    ah ben oui mais là faut aller voir le forum vba -.-

  12. #12
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Bon, alors, je déplace tout ça!

  13. #13
    Membre régulier
    Inscrit en
    Février 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Février 2007
    Messages : 71
    Points : 76
    Points
    76
    Par défaut
    Une solution serait aussi de déclarer ta variable contenant le nom du label en tant que .. Label

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim MyControl as Label
     
    MyControl = "CODPRD"
     
    'et du coup tu peux mettre
    MyForm.MyControl.Caption = "un truc"
    Tes controles se trouvent sur une UserForm ou dans les barres d'outils de word ?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Merci pour l'aide

    J'ai trouvé une solution qui me convient, pas celle de départ, mais une autre avec les signets (à défaut de mieux !)

    Je la propose au cas ou.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                Dim lbl As Range
                'j'ai créé un signet sur mon label du même nom
                Set lbl = ActiveDocument.Bookmarks("CODPRD").Range
                lbl.Text = "la nouvelle valeur"
                ActiveDocument.Bookmarks.Add "DatEff", lbl

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

Discussions similaires

  1. Modifier xml dynamiquement
    Par MrVentouse dans le forum Flex
    Réponses: 5
    Dernier message: 16/03/2010, 11h39
  2. Comment Modifier .Caption dans UserForm1
    Par bguichardaz dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/10/2009, 09h57
  3. modifier txt dynamique qui est dans un clip depuis la scène
    Par italiasky dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 16/05/2008, 08h43
  4. [VS2003][CR] Modifier PictureBox dynamiquement ?
    Par mainecoon dans le forum SDK
    Réponses: 1
    Dernier message: 06/12/2006, 19h01
  5. Modifier/enrichir dynamiquement une page WEB
    Par tp1024 dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 07/11/2006, 14h42

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