Case a cocher sous word

Résolu
Sebi82 -  
Nepenthes6224 Messages postés 24 Statut Membre -
Bonjour,

Je cherche à faire un document word pour le boulot qui selon qu'une case soit coché ou non un valeur apparaisse dans un tableau

Plusieurs case si la case1 est coché mettre 1 dans le tableau si case 2 mettre 2 ........

je débute en VBA si quelqu'un pouvais me venir en aide :)

J'ai également une seconde question un peu plus complexe je pense.... toujours en fonction de case à cocher, si la Case "modele1" et coché dans le document une certaine partie du texte est visible est l'autre pas.. je ne sais pas si ceci est réalisable ou pas j'attends vos réponse :)

tous ceci sur word2000

Merci à tous
Configuration: Windows XP
Firefox 3.0.3

13 réponses

  1. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonsoir

    Bonsoir,

    Je pense que pour la première question, il s'agit de cases d'option, et non pas de cases à cocher.

    Voici les macro que tu peux ajouter sur modification de ces cases :

    Private Sub OptionButton1_Click()
    Dim macellule As Range
    Set macellule = ActiveDocument.Tables(1).Rows(1).Cells(1).Range
    If OptionButton1.Value = True Then macellule.Text = "bleu"
    End Sub


    Private Sub OptionButton2_Click()
    Dim macellule As Range
    Set macellule = ActiveDocument.Tables(1).Rows(1).Cells(1).Range
    If OptionButton2.Value = True Then macellule.Text = "rouge"
    End Sub


    Private Sub OptionButton3_Click()
    Dim macellule As Range
    Set macellule = ActiveDocument.Tables(1).Rows(1).Cells(1).Range
    If OptionButton3.Value = True Then macellule.Text = "vert"
    End Sub


    Pour ta deuxième question, il s'agit plutôt d'une case à cocher, et c'est même plus simple :

    Private Sub CheckBox1_Click()
    Dim macellule As Range
    Set macellule = ActiveDocument.Tables(2).Rows(1).Cells(1).Range
    If CheckBox1.Value = True Then
    macellule.Text = "Voici le texte que je veux montrer"
    Else: macellule.Text = "voici le texte plus petit"
    End If
    End Sub


    Le plus compliqué avec les macros Word, c'est de placer le texte. La solution tableau est la solution la plus simple.

    Dans mon exemple, pour les cases d'option, le texte sera inséré dans la première cellule du premier tableau de ton document, et pour les cases à cocher dans la première cellule du second tableau de ton document.

    m@rina
    0
    1. Sebi82
       
      Bonsoir,

      Merci M@rina pour ta reponse :)

      pour la première partie je ne connaissais pas les case option dont tu parle tu les trouve ou?

      en mettant des cases à cocher ou des radio bouton ont pourrais aussi tester si =>"la case est coché" =>alors "la case X , Y du tableau Z" prendra telle ou telle valeurs je pense non??

      j'ai un bouton dans mon doc word je mettrais donc le bout de code dans l'événement boutonclic



      Enfin pour la seconde partie

      c'est des fois une page entière du documents qui apparait ou disparait selon qu'une case est coché ou non ces pages comprennent du texte et ou image.

      actuellement pour les effacer rapidement pour une mise en page correcte j'ai tout mis dans différent tableau donc s'il existait une solution pour cacher c'est tableau ou ces bout de page ca serait chouette :)

      encore merci a toi :)
      0
    2. Nessie
       
      Bonjour Marina, en espérant que tu consulteras ce vieux post.
      J'essaie de m'inspirer de tes codes mais je n'arrive pas à les appliquer à mon cas.
      Je voudrais que si la case est cochée, il y ait un texte que j'ai inséré dans un tableau (1 ligne 1 colonne) et qui contient un champ à renseigner), soit affiché. Else If on aurait le texte "NEANT" qui apparaîtrait.
      Quel code utiliser ? Je suppose que cela n'est possible qu'avec des contrôles et non des champs de formulaires.

      Je me suis d'abord dirigée vers l'option de champs, avec une macro attribuée à la case à cocher du type
      Public Sub caseAcocher()
      If ActiveDocument.FormFields("bruit").Result = True Then
      ActiveDocument.Tables(6).Cell(1, 1).Range.Font.Hidden = False
      ActiveDocument.FormFields("neant").Range.Font.Hidden = True
      Else
      ActiveDocument.Tables(6).Cell(1, 1).Range.Font.Hidden = True
      ActiveDocument.FormFields("neant").Range.Font.Hidden = False
      End If
      End Sub

      et cette solution fonctionne mais en terme de mise en oage de mon document, elle me laisse un espace entre la mention un de mes titres et la mention Néant. rien de grave en soi mais très heureux.

      je souhaitais donc que les textes se "remplacent" selon la coche de la case : soit le super paragraphe avec un champ à saisir, soit le mot Neant

      Avec un des codes que tu as fourni sur le checkBox, le "remplacement fonctionne mais cela ne n'inclut pas le signet du champ à saisir

      Je ne sais pas si je suis claire.

      D'avance merci.
      0
  2. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonsoir,

    Dans une insertion auto, tu mets ce que tu veux ! Même 10 pages...

    Le code n'est pas caché. Si tu télécharges le fichier, tu as accès au code.
    C'est un code exemple très simple, tu peux le modifier à souhait.

    En fait, je n'ai pas utilisé les signets. A chaque appui sur la touche OK, la macro reconstruit entièrement le fichier et insère une TM. C'est très rapide.

    m@rina
    0
    1. sebi82
       
      Bon j'ai testé ca legerement mais je galere....

      J'ai pris ton exemple et tout sur la userform

      mais peu tu m'expliquer comment faire a partir d'un document type (celui que je veux inserer si la case et coché)

      une insertion automatique

      dans l'exemple ont reprend des donnée que l'utilisateur a tapé mais moi je lui demande simplement de cocher ou non une case et en focntion de cela le document en question s'insere a la place d'un mot comme dans ton exemple.

      ce que je n'arrive pas a faire c'est le si c'est coché remplacer le mot par le contenu du fichier

      donc il me faudrais les explication depuis le debut pour faire d'un fichier une insert auto et enfin le bout de code qui remplace le mot par cette insere :)

      vraiment merci a toi
      0
  3. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonjour,

    Dans l'exemple, on ne reprend pas le texte que l'utilisateur a tapé. Il s'agit de texte type issu d'insertion automatique.

    Le problème pour insérer un texte à la place d'un mot est qu'une fois le texte inséré, le signet aura disparu. Et si l'utilisteur veut faire marche arrière, ce ne sera pas possible.

    Pour pallier ce problème, il faut que tu ajoutes le nom du signet dans l'insertion automatique.

    Si tu reprends mon exemple :
    - Crée chaque paragraphe type, et ajoutes-y un signet, puis enregistre le en insertion automatique
    - Dans ton modèle, tu mets un mot ou une lettre ou ce que tu veux à l'endroit où doit s'insérer le texte et tu mets le même nom de signet
    - Ensuite pour chaque texte à insérer, tu auras une case à cocher avec une macro comme ceci (ici le signet se nomme "T1") :
    If Me.CheckBox1.Value = True Then
    Selection.GoTo What:=wdGoToBookmark, Name:="T1"
    ActiveDocument.AttachedTemplate.AutoTextEntries("chap1").Insert Where:= _
            Selection.Range, RichText:=True
    
    End If


    Ce qui signifie que si la case à cocher est cochée (value=true) on insérera l'entrée d'insertion auto "chap1" à la place du signet "T1". Ce signet sera effacé mais régénéré aussitôt puisque l'insertion auto le contient.

    m@rina
    0
  4. sebi82
     
    Okay pour ce point je devrais avoir compris...

    1) peu tu encore me dire comment bien crée une insertion auto?

    2) les insertions automatique sont elle enregistrer dans le document même? ou alors ce sont des des autre .doc ou .dot?

    3) si je fais voyager mon document type sur d'autre post ca marchera bien? ou faut-il copier d'autre chose en même temps que le doc?

    4) la mise en page des insert auto sera t'elle pareil que lorsque je l'aurais enregistré?

    si tu passe par strasbourg je te paye un verre de vin chaud au marché de noel :D ca le mérite bien :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonjour sebi82

    2) les insertions automatique sont elle enregistrer dans le document même? ou alors ce sont des des autre .doc ou .dot?
    Les insertions auto doivent être enregistrées dans le modèle. Une IA ne peut être qu'enregistrée dans un modèle. Il faut l'enregistrer dans le modèle de ce document, et pas dans le normal.dot (voir en dessous).

    1) peu tu encore me dire comment bien crée une insertion auto?

    - Saisie du texte et sélection
    - Menu Insertion, Insertion automatique, Insertion automatique
    - Taper le nom de l'insertion
    - Regarder dans : choisir le modèle actif et non pas le normal.dot
    - Clic sur Ajouter

    3) si je fais voyager mon document type sur d'autre post ca marchera bien? ou faut-il copier d'autre chose en même temps que le doc?
    Ton document type doit être un modèle (voir ci-dessus). Il contiendra les IA et la macro. Le document final ne contiendra pas la macro.

    4) la mise en page des insert auto sera t'elle pareil que lorsque je l'aurais enregistré?
    oui, à condition de bien enregistré avec le ou les retours paragraphes. Ne pas oublier aussi les signets.

    Et pis, zut pour le verre de vin chaud !!!! Figure-toi que j'ai un AR pour Strasbourg pour ce mois-ci dans ma poche, mais le vin chaud ne sera pas encore là !!! ;)
    Et même que mes billets, je vais devoir les jeter, car au final, j'ai un contre-temps qui m'empêche de venir... C'est po juste !! :(
    Merci quand même...

    m@rina
    0
  7. sebi82
     
    ah ben zut alors :( il me semble que le marché de noel ouvre dns 1 voir 2 semaine je crois :) je vais tester tout ceci et j'te tiendrais au courant si j'ai reussi ou non ;) en tous cas merci pour ta patience ;)
    0
  8. sebi82
     
    Bon j'ai réussi à faire ce que je voulais ou presquuqe :)

    peu tu encore me dire comment appeler la userform lorsqu'on appui sur un bouton ou un lien qui se trouve en fin de document ??

    un grand merci a toi encore une fois :D
    0
  9. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonsoir,

    Il faut un petit bout de code, car le formulaire ne va pas se charger tout seul ! ;)

    Sub formulaire()
    Load UserForm1
    UserForm1.Show
    End Sub

    Tu ajoutes sur ta barre d'outils ou dans un menu un bouton lié à cette macro.

    m@rina
    0
    1. sebi82
       
      Bon ben voila j'ai fini ce que je voulais faire et c'est top :)

      encore mille merci et a defaut d'un verre de vin chaud j't'envoi un gros bisoux :D

      merci merciiiii
      0
  10. Nepenthes6224 Messages postés 24 Statut Membre 5
     
    Bonjour,

    Moi aussi, pour le boulot, je cherche à montrer du texte quand la case est activée, mais rien ne marche.
    J'ai essayé des copy-paste de tout ce qui est ici, et ca ne va pas. J'ai finalement tenter de "cacher si pas sélectionner", mais ca ne marche pas non plus...
    Une idée pour m'aider?

    Merci beaucoup

    PS : je travaille avec word 2007 en anglais et je découvre pour la 1ère fois les macros :-)

    voila sur quoi je travaille :

    Private Sub CheckBox1_Click()

    End Sub

    Private Sub CheckBox2_Click()

    End Sub

    Private Sub CheckBox3_Click()

    End Sub

    Private Sub CheckBox4_Click()
    If Me.CheckBox1.Value = False Then
    Hidden.GoTo What:=wdGoToBookmark, Name:="purif"
    Else: Written.GoT0 What:=wdGoToBookmark, Name:="purif"
    End If
    End Sub

    Private Sub CheckBox5_Click()

    End Sub

    Private Sub CheckBox6_Click()

    End Sub

    Private Sub CommandButton1_Click()

    End Sub
    0
    1. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
       
      Bonjour

      Merci d'ouvrir ton propre topic, car ça vient comme un cheveu sur une soupe et on ne comprend pas ce que tu veux faire.

      Donc essaie d'être précis dans ce que tu veux faire.

      m@rina
      0
  11. Nepenthes6224 Messages postés 24 Statut Membre 5
     
    merci, pour ta réflexion. J'ai donc créé une nouvelle discussion...
    0
  12. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonsoir,

    La différence entre les cases à cocher et les boutons d'option, c'est que les boutons d'option s'annulent les uns les autres... Donc, cela dépend de ce que tu veux faire.

    Pour la question de teste à faire disparaître, il faut 'jouer' avec les signets. Dans la macro, tu diras : si la case est cochée, on insère ce texte (issu par exemple d'une insertion auto) avec un signet. Si on décoche, on supprimer le texte marqué par le signet.

    Si tu es débutant en macro, regarde sur mon site, tu trouveras des exemples, dont la création d'une userform.
    http://faqword.fr

    m@rina
    -1
    1. Sebi82
       
      Bon plusieur chose réglé aujour'dhui au boulo :) malheureusement n'ayant pas le net labas je ne peux pas venir sur ce forum...

      ton forum est d'ailleurs chouette et j'y ai vite fait trouvé une chose interessante ce matin (INCLUDETEXT)

      j'ai testé ca basiquement et ca me convient comme methode....

      maintenant question

      Si je prends des includes texte pour afficher les bouts de pages selon les options cochées

      { INCLUDETEXT "nomdufichier" Signet }

      je voudrais, lorsque je modifie soit une case à cocher soit un bouton option, changer la valeur « nomdefichier » d’un champ INCLUDETEXT
      ou alors ajouter un nouveau champ INCLUDETEXT à l’endroit que je veux
      If Chkbx_Type1.Value = 1 Then AJOUTER UN NOUVEAU CHAMP A TEL ENDROIT
      Else PAS DE CHAMP A AFFICHER

      Quel serait le code VB à ajouter dans le clic de mon bouton si je veux que les bonnes pages de texte soit inséré en fonction des options cochées lorsque je clique sur ce dernier ?


      encore une fois merci :)
      0
  13. m@rina Messages postés 27507 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonsoir,

    Je ne sais pas exactement à quoi doit ressembler ton projet, mais ne crois tu pas que ce serait mieux d'utiliser une Userform ?

    Regarde l'exemple que j'ai mis sur mon site. Il s'agit de remplir une Userform qui ensuite permet de construire entièrement un fichier en fonction des cases à cocher.
    http://faqword.fr/index.php/telechargements/cat_view/65-exemples-maison.html

    ça s'appelle "Documents types".
    Il faut être enregistré pour le downloader.

    Par ailleurs, je ne sais pas si la solution des INCLUDETEXT est une bonne solution, car ça crée un lien et en cas de transmission de fichier à d'autres personnes, les liens peuvent être rompus. Je pense que les insertions auto seraient peut être mieux, c d'ailleurs ce que j'ai utilsié dans le modèle dont je te parle.

    m@rina
    -1
    1. Sebi82
       
      Oui je pense que c'est beaucoup plus propre de cette maniere effectivement...

      Pour etre plus précis je souhaite créer un devis automatique pour faciliter la vie a nos commerciaux...

      donc dans la userform je met toute les options possible le commercial coche ce qui convient pour le devis et celui ci est fin prêt a être imprimé et ne nécessite plus de retouche.

      au niveau des options comment faire pour insérer un document entier a la place d'un signet si la case est coché...

      je ne sais pas comment mettre un doc dans une insertion auto si c'est ca la methode....

      Si tu pouvais me transmettre un bout de code test qui lorsqu'on coche une case dans la userform du document DEVIS
      copie en lieu et place du signet OPTION1 tout le contenu du fichier OPTION1

      j'en demande beaucoup mais tu me rendrais vraiment un grand service :)

      je te remercie encore :)
      0