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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2018
    Messages : 4
    Points : 1
    Points
    1

    Par défaut UserForm : listbox contenant les variables du doc (avec ajout / modification en direct depuis textbox)

    Bonjour à tous,

    C'est ma première question suite à mon inscription. En effet, je consulte très régulièrement le forum, où je trouve la plupart du temps des réponses pertinentes à mes besoins en VBA, langage sur lequel je suis complètement autodidacte (merci à tous les contributeurs pour cet investissement). Cette fois, j'ai eu beau chercher et chercher encore, essayer... je suis complètement bloqué, donc je me permets d'ouvrir un nouveau sujet. Merci d'avance à tous ceux qui voudront bien me donner un petit coup de main !

    Je commence petit à petit à voir le bout du développement d'une extension qui me permet d'optimiser mon process rédactionnel. Ces jours-ci, je travaille sur une fenêtre non modale de gestion et d'insertion de "descripteurs" du document (j'entends par là des données qui sont à la fois, au sens Word, des propriétés et des variables). Voici une capture d'écran commentée qui vous permet de comprendre facilement le principe de ce que je cherche à faire :

    Nom : fenetre-proprietes.png
Affichages : 98
Taille : 24,8 Ko

    1 - Zone de propriétés

    Résumé du principe :
    • chaque élément est de type BuiltInDocumentProperties et peut-être inséré à l'emplacement du curseur dans le document ;
    • lors de l'initialisation de la fenêtre, la textbox affiche la valeur existante de la propriété ;
    • tout changement dans la textbox modifie en direct la valeur de la propriété.


    Voici mon code actuel pour cette partie :

    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
    Option Explicit
    Private Sub UserForm_Initialize() ' Opérations d'initialisation lors du chargement de la fenêtre
    ' Remplissage des textbox
    Me.Titre_TextBox.Value = ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle).Value ' Récupération de la valeur du CDP Title
    Me.Auteur_TextBox.Value = ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor).Value ' Récupération de la valeur du CDP Author
    End Sub
     
    Private Sub Titre_TextBox_Afterupdate() ' MAJ de la valeur du CDP Title à partir du contenu saisi dans la textbox
    ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle).Value = Proprietes.Titre_TextBox.Text
    End Sub
     
    Private Sub InsererTitre_CommandButton_Click() ' Insertion du CDP Title à l'emplacement du curseur
        ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldTitle, PreserveFormatting:=True
        Exit Sub
    End Sub
     
    Private Sub Auteur_TextBox_Afterupdate() ' MAJ de la valeur du CDP Author à partir du contenu saisi dans la textbox
    ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor).Value = Proprietes.Auteur_TextBox.Text
    End Sub
     
    Private Sub InsererAuteur_CommandButton_Click() ' Insertion du CDP Title à l'emplacement du curseur
        ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldAuthor, PreserveFormatting:=True
        Exit Sub
    End Sub
    Je ne doute pas que ce code pourrait être grandement amélioré, mais au moins ça fait correctement ce que je veux ! Ce n'est pas le cas de ce qui suit...

    2 - Zone d'affichage des variables

    La listbox à deux colonnes est censée afficher les nom et valeur des variables du document lors de l'initialisation de la fenêtre. Je n'arrive même pas à coder cette opération de départ ! Donc à chaque ouverture de la fenêtre, la listbox est vide, alors que la création de variable fonctionne (voir ci-après).

    Les boutons situés sous la listbox (ne tenez pas compte du bouton "Lister variables" barré, qui est juste une fonction de travail) doivent permettre de :
    • créer une variable en la faisant s'afficher en direct dans la listbox (avec vidage des textbox de saisie en fin d'opération) ;
    • insérer la variable sélectionnée dans la listbox à l'emplacement du curseur ;
    • supprimer la variable sélectionnée (à la fois de la listbox et de la liste des variables du document).


    À l'heure où j'écris, la création fonctionne avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CreerVariable_CommandButton_Click()
    ' Ajout de la variable au document
    ActiveDocument.Variables.Add Name:=Me.NomNouvelleVariable_TextBox.Text, Value:=Me.ValeurNouvelleVariable_TextBox.Text
    ' Ajout de la variable à la listbox
    Me.ListeVariables_ListBox.ColumnCount = 2 ' Nombre de colonnes de la listbox
        Dim element As Integer
        Me.ListeVariables_ListBox.AddItem ' Ajout de ligne
        element = ListeVariables_ListBox.ListCount - 1
        Me.ListeVariables_ListBox.List(element, 0) = Me.NomNouvelleVariable_TextBox.Text ' Remplissage de la colonne "Nom"
        Me.ListeVariables_ListBox.List(element, 1) = Me.ValeurNouvelleVariable_TextBox.Text ' Remplissage de la colonne "Valeur"
    ' Effacement du contenu des textbox
    Me.NomNouvelleVariable_TextBox.Value = Null
    Me.ValeurNouvelleVariable_TextBox.Value = Null
    End Sub
    Je n'ai pas encore travaillé sur l'insertion d'une variable sélectionnée dans la listbox à l'emplacement du curseur, car je m'étais d'abord attaqué à la suppression et je suis bloqué. Je précise que je sais supprimer une variable spécifique dont on connaît le nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Variables("Nom de la variable").Delete
    Mais ce n'est pas ce dont j'ai besoin dans ce contexte. À force de lectures ici et là et d'essais, j'ai fini par aboutir à ce code qui me supprime toutes les variables de la liste des variables et de la listbox, mais que je ne sais pas comment modifier de façon à supprimer seulement un élément sélectionné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub SupprimerVariable_CommandButton_Click()
    Dim action
    Dim x As Long
        For x = ActiveDocument.Variables.Count To 1 Step -1
        ActiveDocument.Variables(x).Delete
        Next x
    Me.ListeVariables_ListBox.RemoveItem Me.ListeVariables_ListBox.ListIndex
    End Sub
    3 - Zone de saisie des variables (ajout/modification)

    Pour l'instant, ces textbox jouent correctement leur rôle de cartouches de saisie des nouvelles variables pour la création (voir le code plus haut). Par contre, je voudrais également :
    • qu'elles affichent le nom et la valeur de la variable sélectionnée dans la listbox ;
    • qu'elles servent à modifier le nom et/ou la valeur de cette variable sélectionnée (comme c'est le cas avec les textbox de la zone 1, qui fonctionnent bien).


    Je crois que j'ai fait le tour. Je sais que ça fait beaucoup du travail, je ne demande surtout pas à ce qu'on le fasse à ma place mais qu'on m'aide à comprendre comment venir à bout de cette listbox car cela fait deux jours que j'y suis sans succès. J'en suis au stade où je n'ai plus les idées claires et un regard extérieur me serait très précieux.

    Merci d'avance à tous ceux qui prendront de leur temps pour m'aider

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2018
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    Bonjour à tous,

    Quelqu'un a-t-il besoin de précisions ou d'éléments supplémentaires pour m'orienter ?

    Bonne journée à tous.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2018
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    N'atant pas avancé d'un iota sur cette question, je me rappelle aux bons souvenirs de celles et ceux qui pourraient m'orienter vers une solution. Merci d'avance !

  4. #4
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 371
    Points : 9 041
    Points
    9 041
    Billets dans le blog
    27
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mars 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2018
    Messages : 4
    Points : 1
    Points
    1

    Par défaut

    Merci pour cette piste que je vais étudier...

Discussions similaires

  1. Listbox et les Variables
    Par ABBAN270 dans le forum Delphi
    Réponses: 8
    Dernier message: 01/02/2016, 19h59
  2. Réponses: 2
    Dernier message: 11/03/2015, 21h14
  3. Réponses: 3
    Dernier message: 23/08/2011, 12h53
  4. Problèmes avec les variables final
    Par casolaro dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2004, 15h29
  5. Réponses: 6
    Dernier message: 28/05/2004, 10h39

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