Signet word accorder au féminin

Bonjour à toutes et tous,

Je dois générer un document Word réalisé à partir de données piochées dans Excel.

Je ne souhaite pas faire de publipostage, je pilote tout depuis Excel.

Avec un publipostage, on peut facilement utiliser une règle si ... alors ... sinon et ajouter des accords où bon nous semble.

Avec l'utilisation de VBA et des signets, le souci c'est que les signets sont détruits au moment du remplissage et on ne peut donc pas utiliser leur valeur pour créer une règle.

Comment faites-vous de votre côté ? Je tourne en rond, ne trouve rien de probant sur le net, je n'en peux pluuuuuuus

Par avance merci à ceux qui prendront la peine de me répondre.

Je peux insérer un signet à chaque endroit, que je remplirai avec un "e" le cas échéant, mais c'est quand même sale de faire comme ça. Et sur un document de 10 pages, je n'imagine même pas ce que ça donnerait.

Des idées ?

J'aurais peut-être dû poster ça dans le forum Excel pour plus de visibilité ?

Salut JoyeuxNoel

Perso, j'utilise des balises, c'est à dire du texte saisi sous la forme <NOMBALISE>

Et dans mon code je recherche la balise que je remplace par ce que je souhaite

Espérant que cela pourra t'aider

@+

Bonjour Bruno,

Merci beaucoup pour ta réponse. Je n'y avais pas du tout pensé et je vais creuser de ce côté là !

Un petit retour pour t'adresser mes plus sincères remerciements.

Ça marche du tonnerre ! Le résultat est bluffant et d'une rapidité exemplaire.

Juste, comme je code avec le c*l, je teste la condition sur Excel et je lance une macro que j'ai intégrée à mon modèle de document Word. Elle ne va pas tester chaque balise individuellement mais remplace en masse. C'est ce que je souhaite. Mais peut-être pas adapté si les conditions sont plus complexes (pluriel, changement de mots, etc)

Tu lances tout depuis Excel toi ?

Encore merci en tout cas !

Re,

Oui, je lance tout depuis Excel, plus simple à gérer à mon avis

Je veux bien te croire, mais je ne suis pas arrivé à trouver la structure du code à utiliser sur Excel.

J'utilise ça sur Word et ça marche nickel :

ActiveDocument.Range.Select
With Selection.Find
    .Text = ancien
    .Replacement.Text = nouveau
    .Forward = True
    .ClearFormatting
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
End With

J'ai tenté ça depuis Excel (j'essaie de plus en plus de faire du late binding, ce qui ne me simplifie pas la tâche pour le moment)

WordApp.ActiveDocument.Range.Select
With WordApp.Selection.Find
    .Text = ancien
    .Replacement.Text = nouveau
    .Forward = True
    .ClearFormatting
    .Wrap = wdFindContinue

    .Execute Replace:=wdReplaceAll
End With

Ça me sélectionne la 1ère occurrence du mon ancien texte, mais ne remplace rien.

Re,

Voici ce que j'utilise

En entête du module

Option Explicit
Dim AppWd As Object, WdDoc As Object
Const wdReplaceAll As Long = 2

Procédure d'ouverture et de modification de mon Word

sPath0/sPath = Chemin intial et de destination

sNomFic0/sNomFic = Nom du fichier intial et de destiantion

  ' Créer une instance de Word
  Set AppWd = CreateObject("Word.Application")
  ' Ouvrir le fichier et Afficher l'application
  AppWd.Documents.Open sPath0 & sNomFic0
  AppWd.Visible = True
  Set WdDoc = AppWd.ActiveDocument
  ' Afficher le document word
  AppWd.Activate
  ' Sauvegarder le fichier
  WdDoc.SaveAs sPath & sNomFic
  ' Inscrire toutes les balises
  Ecriture_balise "NUMCDE", sNumCde
  Ecriture_balise "MARCHE", sMarché
  Ecriture_balise "DATECDE", sDateCde
  Ecriture_balise "COMMUNE", sLibCne
  Ecriture_balise "TRAVAUX", sLibTx
  ' Enregistrer le fichier après modification
  WdDoc.Save
  ' Exporter au format PDF
  WdDoc.ExportAsFixedFormat OutputFileName:=sPath & Replace(sNomFic, ".docx", ".pdf"), _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
  ' Fermer le fichier Word et le supprimer, plus besoin
  On Error Resume Next
  WdDoc.Close: AppWd.Quit
  On Error GoTo 0
  ' Effacer les variables objet
  Set WdDoc = Nothing
  Set AppWd = Nothing  

Procédure générale de remplacement des balises

'Sélection et remplacement de toutes les balises du modèle word associées à la ligne par la chaîne de caractères associée
Sub Ecriture_balise(LibBalise As String, ValBalise As String)
  Dim Balise As String
  Balise = "<" & LibBalise & ">"
  If ValBalise = "" Then ValBalise = " "
  ' Remplacement de "<Balise>" par "Valeur_balise" dans le document
  WdDoc.Content.Find.Execute FindText:=Balise, ReplaceWith:=ValBalise, Replace:=wdReplaceAll  'Remplacement"
End Sub

Si cela peut t'aider

Merci Bruno, je vais éplucher ça.

C'est vrai que ça a l'air plus pensé, abouti et évolutif que le pauvre truc que j'avais pu pondre

Rechercher des sujets similaires à "signet word accorder feminin"