Formulaire avec affichage conditionnel

Forum Microsoft Office Word

Modérateur : Argitxu

Formulaire avec affichage conditionnel

Publicité
 

Romain3525
Posteur débutant
Posteur débutant
Messages : 3
Enregistré le : 22 oct. 2018, 12:25

Formulaire avec affichage conditionnel

Message non lu par Romain3525 » 22 oct. 2018, 13:35

Bonjour,

Je bloque sur une problématique liée à un formulaire sur word :
En prérequis, j'utilise word 2016...

Je cherche à afficher et imprimer dans un document word des blocs de texte en fonction des choix d'une liste à choix multiple (voir fichier ci joint). ces blocs de texte sont des bloc assez long avec des tableau et parfois même des images.
formulaire assuj.docx
Pourriez vous m'aider, j'ai trouver qq truc dans certain sujet sur le forum, mais rien qui ne corresponde vraiment à mon besoin.

En vous remerciant par avance.
Cordialement
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1242
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Formulaire avec affichage conditionnel

Message non lu par m@rina » 22 oct. 2018, 19:30

Bonjour

J'ai un exemple ici
http://download.faqword.com/index.php/w ... -controles
télécharge le fichier fc_07.dotm
qui fait à peu près ce boulot.

C'est à base de cases à cocher ActiveX, il faut donc, dans ton cas, utiliser les ContentControl. COmmence par mettre une balise à ta liste déroulante, par exemple "choix", et le code devrait ressembler à ça :

Code : Tout sélectionner

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
If ContentControl.Tag = "choix" Then
    If ContentControl.Range.Text = "Scellement mecanique" Then 
       'mettre ici l'insertion du texte rouge"
    End If
    If ContentControl.Range.Text = "Scellement chimique" Then 
       'mettre ici l'insertion du texte vert"
    End If
End If
End Sub

Pour tes textes, le mieux est de les enregistrer en tant que blocs de construction. Si le document doit être distribué, il faut que les blocs soient dedans, et donc enregistré en tant que modèle avec macro (dotm).
Ensuite il faut savoir où les placer, et également pouvoir les ôter si on change d'avis où si on s'est trompé. Il y a plusieurs solutions : soit on utilise les signets, un peu plus compliqué car les signets s'effacent en même temps que le texte, d'où la fonction ici :
http://faqword.com/index.php/word/gesti ... -le-signet

Sinon, tu peux utiliser une cellule de tableau, comme dans l'exemple précité.

Reviens si tu ne t'en sors pas.
m@rina

Romain3525
Posteur débutant
Posteur débutant
Messages : 3
Enregistré le : 22 oct. 2018, 12:25

Re: Formulaire avec affichage conditionnel

Message non lu par Romain3525 » 23 oct. 2018, 14:11

Bonjour marina,

Merci pour ces éléments, mais je ne dois pas être très doué,
pas moyen de coché les case du document évoqué, j'ai beau regarder les sécurité du fichier, elles mes semblent cohérente.
Il m'est en fait impossible de sortir du mode création . ce qui fait que la fonction case à cocher ne marche pas.
Merci pour ton aide.
Cordialement

Eskignax
Posteur débutant
Posteur débutant
Messages : 3
Enregistré le : 23 oct. 2018, 16:55

Re: Formulaire avec affichage conditionnel

Message non lu par Eskignax » 23 oct. 2018, 17:15

Bonjour,

Merci pour ce site! Ca m'a aidé pour pleins de choses.

Aujourd'hui j'ai exactement la même problématique que Romain.

J'ai récupéré les macros du document fc_07 qui font m'irait très bien pour mon (notre du coup) problème.

Pour répondre à ta question Romain (histoire de contribuer un peu avant d'emmener mes problèmes :lol: )
J'avais le même problème, il faut aller dans fichier -> Options -> Centre de gestion de la confidentialité -> paramètre du centre de gestion... -> Paramètres des macros -> Activer toutes les macros

Au moins tu es tranquille le temps de faire ta macro. Pense à pas ouvrir de pièce jointe louche par contre :D

Mon problème est le suivant, pour rappel voici le code que j'ai utilisé:

Code : Tout sélectionner

Private Sub CheckBox1_Click()

Dim B As String
Dim chemin As String, modele As String

chemin = ActiveDocument.AttachedTemplate.Path
modele = chemin & "\" & ActiveDocument.AttachedTemplate
Templates.LoadBuildingBlocks

If CheckBox1.Value = True Then
Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst
Application.Templates(modele).BuildingBlockEntries("cb1").Insert Where:=Selection.Range
Else:
ActiveDocument.Tables(1).Rows(1).Range.Text = ""
End If
End Sub
Quand je décoche la case, pas de problème, ça enlève bien mon texte qui est dans le premier tableau. Par contre quand je recoche, la j'ai une erreur.
"Erreur d'exécution 5941: le membre de la collection requis n'existe pas."

L'erreur viens de la ligne

Code : Tout sélectionner

Application.Templates(modele).BuildingBlockEntries("cb1").Insert Where:=Selection.Range
Au début, j'avais mal nommer mon block, du coup je l'ai renommé cb1 pour être sur.
Du coup j'ai commencé à chercher les différence entre votre fichier word qui fonctionne et le mien. Et entre autre, quand on regarde dans les paramètres de cb1, le votre est "enregistrer dans : fc_07" et le miens dans building blocks. Est ce que ça viens de la? Ou c'est la variable"modele" qui est pas bonne? J'ai un peu chercher partout mais sans rien trouver. J'ai même modifier "Modele" pour metre un chemin absolue, sans résultats.
Je précise que quand je vais dans "quickpart", je vois bien mon cb1, avec mon texte dedans.

Merci d'avance :D

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1242
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Formulaire avec affichage conditionnel

Message non lu par m@rina » 24 oct. 2018, 02:55

Bonsoir Eskignax

Merci pour la sécurité macro qu'il faut effectivement enlever.

Les blocs de construction peuvent être à différents endroits, mais toujours dans des modèles. Par défaut ils s'enregistrent dans le building blocks.dotx ou, pour la galerie des insertions automatiques, dans le Normal.dotm. Mais on peut les mettre soit dans un modèle quelconque à mettre avec le building blocks.dotx ou bien dans n'importe quel modèle mais pour ce dernier, il ne sera accessible qu'à l'utilisation de ce modèle.

Comme je partage des modèles, les blocs sont effectivement dans le modèle que je partage.
La variable "modele" dans le code donne le nom et l'emplacement du modèle qui contient les blocs, et il s'agit donc du modèle partagé.
Si tes blocs sont ailleurs, il faut modifier cette variable. Si le document a pour but d'être distribué et également les building blocks, il ne faut pas mettre un chemin en dur. Ce doit être quelque chose comme ça :

Code : Tout sélectionner

Modele = Environ("USERPROFILE") & "\AppData\Roaming\Microsoft\Document Building Blocks\1036\xx\building blocks.dotx"
Attention, je déconseille de distribuer un Building blocks car il écraserait celui des autres personnes. Mieux vaut en faire un nouveau avec un nom particulier.
m@rina

Eskignax
Posteur débutant
Posteur débutant
Messages : 3
Enregistré le : 23 oct. 2018, 16:55

Re: Formulaire avec affichage conditionnel

Message non lu par Eskignax » 29 oct. 2018, 18:04

Bonjour,

Merci pour ta réponse.

Du coup, j'ai essayé ta solution mais j'ai la même erreur. Je fais peut être quelque chose qui ne va pas.
Cependant, je réfléchissais, et avant d'aller plus loin je me dit qu'a termes, moi aussi je devrais partager en modèle ce fichier, pour qu'il soit utilisé par d'autres personnes.

Du coup il faudrait que je fasse comme sur ton modèle à la base non?

Et la très honnêtement j'ai pas compris comment tu les enregistre dans le modele. On les mettant dans "normale"?

Merci d'avance,

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1242
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Formulaire avec affichage conditionnel

Message non lu par m@rina » 30 oct. 2018, 03:26

Bonsoir

Et la très honnêtement j'ai pas compris ce que tu entends par "comment tu les enregistre dans le modele. On les mettant dans "normale"?" ;)

"normale" ??? normale, quoi ?

Pour enregistrer un document en tant que Modèle, il faut choisir le type de document à l'enregistrement. Ce qu'il faut savoir c'est que les blocs de construction ne peuvent se mettre que dans un modèle (dotx). Par défaut, ils se mettent dans le building Blocks.dotx. Ainsi ils sont disponibles pour n'importe quel document. On peut aussi les mettre dans le Normal.dotx.

Si on veut les distribuer, on peut les mettre dans un nouveau modèle à ranger avec le building blocks.dotx pour qu'ils soient toujours disponibles, et afin de ne pas écraser le building blocks des collègues.
L'autre solution est de les mettre dans le modèle que l'on distribue et dans ce cas, ils ne sont disponibles que dans ce modèle. Tout dépend de la finalité.

C'est cette dernière solution que j'utilise car ça ne demande rien d'autre pour fonctionner et ce ne sont que des exemples.
m@rina

Eskignax
Posteur débutant
Posteur débutant
Messages : 3
Enregistré le : 23 oct. 2018, 16:55

Re: Formulaire avec affichage conditionnel

Message non lu par Eskignax » 30 oct. 2018, 15:54

Bonjour,

En effet, j'ai baragouiné rapidement quelque chose, ce n'étais pas très claire.

Mais du coup tu as déjà partiellement répondu ! En effet, il faudrait qu’idéalement mes blocs de construction soit enregistrer dans le modèle que je distribue, comme ton exemple.

Mais du coup, je ne saisie pas comment on enregistre sur bloc dans mon modèle?

Encore merci, tout particulièrement pour ta patience ;)

Bien cordialement,

Répondre