Document word avec formulaire de saisie

Bonjour

j'ai essayé de concevoir un modèle Word qui se remplisse en saisissant les informations dans un formulaire, mais le macro ne marche

pouvez vous m'aider a corriger le macro ( je me suis fait aidé par chatgpt, je ne connais pas le VBA)

merci

Bonjour,

Dans le module de code de l'Userform, il faut que les valeurs entre guillemets correspondent exactement à celles entre crochets [] de votre document, crochets compris. Hors votre IA, pour une raison inconnu, les a encadrés entre "{{}}" donc il ne peut pas les retrouver. Corrigez comme je l'ai fait sur le screenshot ci-après pour la 1e ligne ("{{Dénomination sociale}}" -> "[Dénomination sociale]") pour tous les autres. Vérifiez que le texte à l'intérieur est également exact.

image

Ensuite le code bloque car dans le module Module1, le sub RemplacerBalise s'attend à ce que key soit une String, hors c'est un variant.

Donc remplacez le code par celui-ci.

Sub RemplacerBalise(balise As Variant, valeur As String)
    With ActiveDocument.Content.Find
        .Text = CStr(balise)
        .Replacement.Text = valeur
        .Forward = True
        .Wrap = wdFindContinue
        .Execute Replace:=wdReplaceAll
    End With
End Sub

Sauvegardez et relancez le fichier, cela devrait fonctionner.

Attention, à votre place j'ajouterais peut-être un garde-fou qui vérifie que tous les champs sont remplis avant l'écriture dans le document. Autrement vous risquez d'avoir un champ vide. Si ça vous intéresse dites le moi, ou demandez à l'IA de vous ajouter ce check, ce n'est pas très difficile.

MERCI BIEN

j'ai corriger et il marche

je ne sais pas comment faire pour ajouter un garde-fou qui vérifie que tous les champs sont remplis

Bien, une petite modification simple est la suivante :

    ' Remplacer dans le document
    Dim key As Variant
    For Each key In champs.Keys
        If Trim$(champs(key)) = vbNullString Then
          MsgBox "Attention, le champ " & key & " n'a pas été rempli !", vbExclamation, "Champ ignoré"
        Else
          RemplacerBalise CStr(key), champs(key)
        End If
    Next key

Cela vous ouvrira une MsgBox pour chaque champ non rempli. De plus, ces champs ne seront pas modifiés dans le document, vous permettant de les implémenter a posteriori en relançant la macro, car par défaut ils étaient remplacés par rien "".

merci bien

Rechercher des sujets similaires à "document word formulaire saisie"