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 :

Word / champ fusion - supprimer la ligne où la valeur du champ est 0 ou rien [WD-2016]


Sujet :

Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2025
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mai 2025
    Messages : 3
    Par défaut Word / champ fusion - supprimer la ligne où la valeur du champ est 0 ou rien
    Bonjour,
    Je n'ai pas trouvé dans le forum, alors je pose ma question :

    Sur le logiciel word, j'utilise un document (modèle) au format .doc qui s'alimente par des signets du logiciel de paie (SEDIT).
    Soit dans ce document il y a plusieurs champs de fusion.
    Lorsqu'un champ de fusion renvoi à rien, il apparait "0" aussi je suis obligé d'aller ouvrir ce document pour vérifier le résultat et le cas échéant supprimer manuellement la ligne du champ de fusion avec le texte qui s'y rapporte sur la même ligne.

    Vu un nombre important de fusion, j'aimerai avoir une commande macro qui se porterait au niveau du champ de fusion. Donc dés que le document va faire les fusions, dés qu'il alimentera ce champ, s'il constate qu'il n'y a pas de résultat alors il effacera automatiquement la ligne.

    J'espère avoir été clair.
    Merci de votre aide,
    Cordialement

    Nom : 2025-05-28 23_49_54-Options de champ _ texte.png
Affichages : 282
Taille : 14,3 Ko

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 455
    Par défaut
    Hello,

    pour moi ça c'est pas très clair... y'a pas mal de confusionnagement

    Un modèle de document est un .dot (ancien) ou .dotx (actuel), les .doc sont d'anciens format de document simple.
    Un "champ de fusion" apparait normalement comme ceci { MERGEFIELD nom_du_champ }.
    Vous parlez de "champs de fusion" mais aussi de "signets" ça n'est donc pas un publipostage ?
    Comment est généré la "fusion" ?
    un signet apparait encadré de crochet [contenu du signet] et dans la capture vous montrez un champ texte qui est un activeX (Zone d'édition (contrôle de formulaire)) et la encore vous parlez de champ de fusion

    Bref, je n'ai pas compris grand chose et j'aurais besoin de plus d'informations voire, le top du top, un document anonymisé avec les données (anonymes la aussi), provenant du logiciel de paie et surtout du comment est généré le doc final.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2025
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mai 2025
    Messages : 3
    Par défaut Réponse 1
    Bonjour,
    Merci pour le retour,
    Sinon je vous joins le document dit "modèle" qui est en '.doc' et le résultat.
    Donc le logiciel de paie alimente automatiquement les champs.
    Ci-joint les 2 documents.
    Dans mon exemple : je voudrais supprimer les 2 lignes que renvoies à zéro "* 0 euros : modulation encadrement" et "0 euros*: modulation personnels de la petite enfance"
    Bonne journée
    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 455
    Par défaut
    OK ok...
    Bon, ce ne sont pas des champ de fusion mais des champ de type "Formulaire" ; { FORMTEXT } qui contiennent des signets... Plutôt bien fait et en tout cas très complexe à modifier (pour moi du moins)
    Si je ne dis pas de couenneries, dans les propriétés, les macros à exécuter se lancent lors de l'entrée du curseur dans le champ et/ou à la sortie du champ, donc je ne pense pas que ça soit possible vu que c'est des champs qui sont remplis par des signets, donc sans action de l'utilisateur.

    J'étais parti sur une solution à base de SI signet <> "" { FORMTEXT } etc etc mais c'est complexe et je ne peux pas tester car que je n'ai pas votre environnement

    Vu que c'est un .doc, il peut contenir des macros (il y en a d'ailleurs une "SupprimerLesSignetsVides").
    Je propose de lancer une macro qui supprime les paragraphes ayants une puce suivi de "0 "
    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
    Sub Supprimer_Puces_Commencant_Par_Zero()
     
        Dim Parag As Paragraph
        Dim Debut_Parag As String
        Dim i
     
        ' Boucle en partant de la fin du doc
        For i = ActiveDocument.Paragraphs.Count To 1 Step -1
            Set Parag = ActiveDocument.Paragraphs(i)
     
            ' est-ce que le format du paragraphe est "liste à puce" ?
            If Parag.Range.ListFormat.ListType = wdListBullet Then
     
                ' Récupère le début du paragraphe sans espaces supplémentaires à droite
                Debut_Parag = Left(RTrim(Parag.Range.Text), 2)
     
                ' Supprime le parag s'il commence par "0 "
                If Debut_Parag = "0 " Then Parag.Range.Delete
     
            End If
        Next i
     
    End Sub

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 421
    Par défaut
    Bonjour

    Le Nain Porte quoi a raison... Avec ces champs de formulaires hérités, il faut entrer ou sortir du champ pour exécuter la macro... Faut dire que s'ils se nomment "formulaires hérités", cela signifie que c'est bien vieux... Et un doc en doc, on n'en fait plus depuis bientôt 20 ans !

    Donc je propose comme le Nain de faire une macro à exécuter une fois la fusion faite. Néanmoins je ferais ça bcp plus simple avec un bête Recherche-Remplace. La boucle est inutile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub leszéros()
    With ActiveDocument.Content
        With .Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .MatchWildcards = True
            .Execute FindText:="0 euros*^13", ReplaceWith:="", Replace:=wdReplaceAll
        End With
    End With
    End Sub

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2025
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mai 2025
    Messages : 3
    Par défaut
    Bonjour,
    Je viens tester, effectivement si je rentre la macro dans les propriétés du signet soit au début soit à la fin cela ne change rien.
    Par contre, si je lance cette macro une fois la fusion effectuée, cela fonctionne parfaitement !
    Merci beaucoup de votre aide.
    Bonne journée
    Cordialement

  7. #7
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 455
    Par défaut
    Hello m@rina,

    merci pour la confirmation du champ de "formulaires hérités", je n'étais pas sûr.

    Par contre ta macro risque de supprimer "0 euros*^13" qui pourrait se trouver qqpart dans le texte.
    Du coup j'ai cherché comment ajouter le format "liste à puce" dans le R&R et ... je n'ai rien trouvé qui permet de faire ça .
    Je n'avais jamais remarqué cette limitation dans le R&R

    Bah, pas grave, ça fonctionnera comme ça vu qu'il n'y a pas de texte "0 euros*^13" autre dans le document.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/11/2014, 20h39
  2. Réponses: 1
    Dernier message: 03/09/2013, 19h30
  3. Supprimer les lignes dont la valeur du deuxième champ est égale à 13
    Par mond14 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/05/2013, 14h26
  4. Supprimer 2 lignes avec une valeur commune
    Par Zaxoli dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/06/2011, 12h37
  5. Supprimer une ligne si même valeur qu'une cellule définie
    Par kesdo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/05/2011, 13h54

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