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

Word Discussion :

variables dépendantes VBA


Sujet :

Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut variables dépendantes VBA
    Bonjour, nouveau sur le forum, je cherche une solution à mon besoin sur les variables sous Word 2007. J'ai fait un peu de recherche sur le forum et autre et ai trouvé une discussion sur laquelle m'appuyer:
    [W-07][CHAMP] Afficher la valeur d'un champ situé à la dernière ligne d'un tableau

    La discussion ne répond pas précisément à mon besoin, mais je vais tout de même suivre les idées qui y sont exposés. Cependant je souhaite tout de même exposer mon besoin au cas où la solution serait déjà connue.

    J'ai joins un fichier exemple dans lequel il y a trois tableaux identiques.
    Ces tableaux contiennent le nom d'une variable (colonne 1) et sa valeur (colonne 2).
    Dans un premier temps je souhaite pouvoir rééditer les valeurs de mes variables dans mon texte (sous les lignes indiquant le nom des variables). Je pense que c'est le plus simple, mais je n'ai jamais fait et hésite entre REF, CHAMP, et autre termes rencontrés en cherchant sur la toile.
    Dans un second temps je souhaite indiquer dans la première ligne quel tableau utiliser (là je pense qu'il me faudra du VBA; je n'ai jamais touché mais je vais me documenter).
    Enfin, il serait sympa, au lieu de taper le nom du tableau à utiliser, d'avoir la possibilité de le choisir dans une liste et d'avoir un bouton à côté pour mettre à jour (lancer un macro VBA, par exemple ?).

    Rem : j'ai déjà une version utilisant le publipostage, mais cette solution ne me convient pas car j'ai deux fichiers à gérer.

    Voilà mon petit projet.

    J'espère qu'il inspirera le plus grand nombre et fera des petits.
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut 1er point OK
    J'ai trouvé pour le point n°1.

    J'utilise les signets:
    Pour chaque variable, je sélectionne le texte (attention, pas la cellule, sinon on a la cellule entière avec les bordure lors du renvoi -plus loin-), puis menu "Insertion" / "Signet" => je rentre un nom de variable (T1V1 : pour variable 1 du tableau 1).
    Pour chaque endroit où j'appelle mon signet, je sélectionne l'emplacement, puis CTRL+F9, puis clic-droit / "modifcation du champ" => Dans la catégorie "Liaisons et renvois", je choisis "Réf" puis sélectionne mon nom de signet (T1V1), puis OK.

    Après avoir mis à jour mon signet, je dois sélectionner l'intégralité de mon document (CRTL+A), puis F9 pour mettre à jour tous les renvois.

    Voilou.

    Bon je passe à la seconde partie. Et là je pense que je vais avoir besoin d'aide. Je suis une bille en VBA.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Point 2 OK
    Je viens de résoudre le point n°2.

    Je n'ai pas le temps de m'expliquer pour le moment, je reviendrai demain.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Comme promis
    Bonjour,

    comme promis, voici comment je m'y suis pris pour résoudre mon point n°2:

    Tout d'abord, j'ai créé un dernier tableau (Tableau des valeurs en cours) avec des signets (V1 à V5).
    Dans le texte, les renvois dépendent maintenant des signets de ce tableau.
    La première ligne du document comporte aussi un signet (DIEU). Le but du jeu est de remplacer la valeur dess signets du tableau "Tableau des valeurs en cours" par les valeurs des signets correspondants d'un des 3 premiers tableaux en fonction de la valeur du signet "DIEU". Le tout est géré par une macro que je vous joins.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub MiseAJour()
    Dim stTexte As String
    stDIEU = ActiveDocument.Bookmarks("DIEU").Range.Text
    For i = 1 To 5
    stTexte = ActiveDocument.Bookmarks(stDIEU & "V" & i).Range.Text
    If RemplacerTexteSignet(ActiveDocument.Bookmarks("V" & i), stTexte) Then
    End If
    Next
     
    Selection.WholeStory
    Selection.Fields.Update
    Selection.EscapeKey
     
    End Sub
     
    Function RemplacerTexteSignet(MyBM As Bookmark, stTexte As String) As Boolean
    'Déclaration des variables
    'intI pour le début de notre Bookmark
    Dim intI As Long
    'stBM pour le nom de notre Bookmark
    Dim stBM As String
    'un objet range pour le range de notre Bookmark
    Dim MyRng As Range
     
    'Récupération du nom du signet
    stBM = MyBM.Name
    'Récupération de la position de départ de notre signet
    intI = MyBM.Start
    'Affectation du texte à notre Bookmark
    MyBM.Range.Text = stTexte
    'Affectation de l'objet Range, où la position de départ est
    ' la même que pour le Bookmark et la fin sera le début augmenté
    ' de la longueur du texte
    Set MyRng = ActiveDocument.Range(Start:=intI, End:=intI + Len(stTexte))
    ' Crée le Bookmark sur l'objet Range
    ActiveDocument.Bookmarks.Add stBM, MyRng
    Set MyRng = Nothing
    'Affectation de la valeur True à la fonction
    RemplacerTexteSignet = True
    End Function
    Remarque:
    1) En fin de macro, l'ensemble du texte est sélectionné et une mise à jour (F9 en manuel) est lancée.
    2) il y a une subtilité lorsque l'on change brutalement la valeur d'un signet : il disparait. Heureusement, je m'appuyait sur le tutoriel suivant qui traite du phénomène (Merci Monsieur "Heureux-oli"): http://heureuxoli.developpez.com/office/word/vba-word/

    Je joins aussi le document obtenu.

    Il me reste le troisième point: remplacement du signet "DIEU" par une liste et un bouton de lancement de la macro de mise à jour. J'ai aussi pensé à une série de bouton radio (choix unique obligatoire) avec un évènement "modification" qui lancerait la macro de mise à jour si cela est possible. De toute façon un bouton pour lancer la macro de mise à jour sera nécessaire dans le cas où je modifie la valeur d'un signet d'un de mes trois tableaux (si c'est le tableau correspondant à la valeur du signet "DIEU").

    Quelqu'un aurait-il des conseils pour l'une ou l'autre des solutions ?

    Merci par avance.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. variable tableau vba
    Par ferronimus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 13/06/2007, 11h33
  2. variable tableau vba
    Par ferronimus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/06/2007, 14h20
  3. déclaration variables ACCESS VBA
    Par sunwind dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/05/2007, 00h27
  4. Réponses: 12
    Dernier message: 03/04/2006, 19h08
  5. [VBA_E] transfert de valeur de variable en VBA
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/02/2006, 14h12

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