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 :

Macro de remplacement de code de champs [WD-2007]


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut Macro de remplacement de code de champs
    Bonjour,

    Tout d'abord, je vais peut être posé une question stupide mais moi les macros, je n'y ai jamais touché.

    Je dispose dans un document plutôt conséquent de codes de champs sur des titres. Ces codes de champs permettent de gérer un incrément automatique particulier avec le code suivant :
    SEQ UC \# 000 \* MERGEFORMAT \* MERGEFORMAT
    Ce qui me donne un affichage comme celui là : Texte-001.

    J'aurais maintenant le besoin de supprimer l'automatisme de ces codes de champs par leur valeur numérique générée pour ne pas qu'une nouvelle mise à jour remette à jour les valeurs.

    J'ai essayé de me débrouiller avec des codes de ce genre mais sans succès :
    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
    Sub DefaultConfig()
        Selection.HomeKey Unit:=wdStory 'envoie en début de document
        Selection.Find.Replacement.ClearFormatting 'si le format n'a pas d'importance
        Dim incr As Integer
        Dim incrFormate As String
     
        incr = 1
        incrFormate = Format(incr, "##")
     
        With Selection.Find
            .Text = "TOTO-0"
            .Replacement.Text = "TOTO-0" & incrFormate
            incr = incr + 1
            incrFormate = Format(incr, "##")
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
    J'ai également vu qu'il est possible de désactiver la mise à jour des codes de champs par CTRL + F11 en cliquant sur un champ mais c'est également fastidieux. De plus, l'on ne serait plus quel code se met à jour et quel code ne se met pas à jour.

    J'aurais aimé automatisé ce système car potentiellement plusieurs gros documents pourraient être impactés. Avez-vous des idées à me proposer ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Peut-être plus simple qu'un macro.

    Ctrl + A pour sélectionner le contenu du document suivi de Ctrl + Shift + F9 pour convertir le résultat des champs en texte.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Finalement j'ai plus ou moins suivi ce conseil :
    - Champ par champ j'ai fais Ctrl + Shift + F9 (car je ne voulais pas convertir tout mes documents mais seulement certaines séquences),
    - Et une recherche sur ma séquence dans le mode "affichage de code des champs" pour vérifier les éventuels oubli.

    Une macro de ce genre était possible aussi mais elle désactivait juste les champs (ce que je ne souhaitais pas faire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Desact_numerotation()
    Dim champ As Field
    For Each champ In ActiveDocument.Fields
    If Mid(champ.Code, 2, 6) = "Ma séquence" Then
        champ.Locked = True
    End If
    Next champ
    End Sub
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Si tu peux sélectionner plusieurs champs, toute la sélection est affectée.
    S'ils sont pas sélectionnable ensemble, ça va pas.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

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

Discussions similaires

  1. [WD-2010] Créer une macro pour remplacer caractères accentués en code HTML
    Par spip93 dans le forum VBA Word
    Réponses: 2
    Dernier message: 29/10/2014, 16h25
  2. remplacement des codes touches clavier
    Par compas dans le forum Périphériques
    Réponses: 4
    Dernier message: 22/08/2006, 08h29
  3. [debutant] lien direct pour remplacer du code js
    Par rteuteu55 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/07/2006, 16h23
  4. [C# 2.0] Une fonction parametrée en remplacement de code.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 1
    Dernier message: 31/05/2006, 14h06
  5. [TOMCAT 5.5]Remplacement du code à chaud
    Par bumbo500 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 09/12/2005, 09h50

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