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 :

Check-list à section binairement validée par noms des vérificateurs à ses éléments ?


Sujet :

Word

  1. #1
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Check-list à section binairement validée par noms des vérificateurs à ses éléments ?
    Bonjour,

    Pour mon employeur, j'ai décomposé une check-list plus à fond, pour éviter d'oublier des éléments

    L'idée est que des éléments soient "signés" du nom de leur vérificateur (qui peut donc varier en fonction de différents éléments (différents éléments, différents vérificateurs)).
    Une fois tous les éléments d'une section validés, j'aimerait que l'intitulé de leur section se voie valider sa boîte de contrôle par la coche.

    Ensuite, si 2 sections (sans autre) sont dans une section-mère, et qu'une seule des 2 a vu sa coche validée, j'aimerais que la section-mère, naturellement, ne reçoive pas la coche de validation.

    J'ai entrevu ici et là qu'il était possible d'automatiser ce genre de "répercussions" avec un peu de code VBA. J'ai entrevu les bases de ce codage en 2012, mais ne m'en souviens pas assez bien même pour la partie que j'avais acquise.

    Ci-joint, un document illustrant, pré-remplis - mais manuellement, du type de résultat que j'attendrais en fonction des éléments.

    Tout doit dépendre des validation aux intitulés-fils, et donc, par transitivité, tout doit reposer sur les noms aux éléments, (à l'exception du "nom" "non-validé" par défaut, qui ne doit, évidemment, pas mener à une validation de plus haut niveau).

    J'aimerais qu'une personne connaisseuse puisse me fournir un rudiment de code pour les variables Boîte de contrôle et Liste, s'il lui plaît; à titre personnel, j'utilise Word 2019, mais au bureau, 2010 (.docx) voire 2003 (.doc) sont susceptibles d'être utilisés.

    Résultat attendu:
    Nom : Formulaire_ResultatAttendu.png
Affichages : 107
Taille : 105,7 Ko
    -D'avance mes infinis remerciements.
    Fichiers attachés Fichiers attachés
    "La physique n'est pas tout" - Robert J. Oppenheimer

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message
    Bonjour,

    Le code ci-dessous va vous donner le contenu de vos champs de type FormFileds :
    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
     
    Sub Test()
     
    Dim I As Integer
     
        With Documents("Formulaire.docm")
             Debug.Print "Nombre de champs : " & .FormFields.Count
             For I = 1 To .FormFields.Count
                 With .FormFields(I)
                      Select Case .Type
                             Case 71
                                  Debug.Print "Case à cocher : " & I & " : " & .Result
                             Case 83
                                  Debug.Print "Liste déroulante : " & I & " : " & .Result
                      End Select
              End With
            Next I
        End With
     
    End Sub
    Pour localiser vos champs, peut-être serait-il plus simple de fonctionner avec des ContentControls.

  3. #3
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut J'ai enregistré en doc 2007 à macros, mais cela ne fonctionne pas.
    Bonjour Monsieur Kergresse,

    Merci infiniment de m'avoir répondu!

    J'aurais dû mettre une liste, sous "Terminologie...", car c'est une section indépendante, à un seul élément.

    Mais j'ai essayé, pour le moment avant de tout comprendre, votre code. J'ai auparavant enregistré en document 2007 à macro-commande .docm, et le code ne fonctionne pas.
    Puis j'ai essayé en mode document 2003, non plus.

    -En fait, si je spécifie NielsBohr en I.A.1 au lieu d'une "valeur" non-valide telle que "Choisissez...", une fois renseigné aussi, la case-mère en I.A Illustrations ne s'active pas, comme je l'espérerais.

    (Un but que je n'avais pas annoncé, est bien-sûr de pouvoir se référer à la personne pour chacune des vérifications indépendantes, et autrement de pouvoir effectuer un contrôle rapide de la liste).

    J'ai essayé de m'inspirer de: https://faqword.com/index.php/word/f...cases-a-cocher, qui en fait est l'exposé du cas inverse au mien.

    Par ailleurs, une question:
    je ne comprends pas pourquoi vos cas sautent à 71 puis 83 ?

    Merci encore pour votre aide.
    "La physique n'est pas tout" - Robert J. Oppenheimer

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message
    B
    je ne comprends pas pourquoi vos cas sautent à 71 puis 83 ?
    71 correspond aux cases à cocher, 83 aux listes déroulantes.

    Pièce jointe 585564

    Cliquez sur le bouton rouge dans la barre d'accès rapide du fichier joint.

  5. #5
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Mon problème est peut-être inhérent à la version Mac.
    Merci, mais de votre document, lorsque je remplace le 1er "NielsBohr" par "Non-validé", la case de la section, en dessus, reste activée.
    Nom : CaseResteActivee.png
Affichages : 100
Taille : 441,8 Ko
    Serait-ce inhérent à Word 2019 Mac ?

    Je vais vérifier sur ma partition Windows.
    "La physique n'est pas tout" - Robert J. Oppenheimer

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message
    Merci, mais de votre document, lorsque je remplace le 1er "NielsBohr" par "Non-validé", la case de la section, en dessus, reste activée.
    Le code que j'ai mis en ligne ne voulait pas répondre directement à votre demande.

    Il vous indique seulement la valeur en cours des champs. Il vous faut maintenant ajouter à ce code, des tests sur les valeurs des cases à cocher et en fonction de celles-ci, modifier les listes déroulantes concernées (ou peut-être l'inverse : faire varier l'état des cases à cocher en fonction des valeurs dans les listes déroulantes).

  7. #7
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Quel "Bouton rouge"?
    Mon résultat sous Windows donne le même résultat.

    Désolé, mais je ne vois pas de quel bouton rouge ni de quel accès rapide vous parlez; s'agit-il de faire lire la macro?
    "La physique n'est pas tout" - Robert J. Oppenheimer

  8. #8
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Le code que j'ai mis en ligne ne voulait pas répondre directement à votre demande.

    Il vous indique seulement la valeur en cours des champs. Il vous faut maintenant ajouter à ce code, des tests sur les valeurs des cases à cocher et en fonction de celles-ci, modifier les listes déroulantes concernées (ou peut-être l'inverse : faire varier l'état des cases à cocher en fonction des valeurs dans les listes déroulantes).
    Ah, okay.

    C'est ce que je vais essayer de faire.

    Merci.
    "La physique n'est pas tout" - Robert J. Oppenheimer

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message

    Je suis Office 365, je viens de vérifier sur le Formulaire.doc qu'effectivement sous ce format, il n'y a pas la possibilité de créer le bouton dans la barre d'accès rapide et de le conserver dans le document. Désolé.

    Il vous suffit de lancer la macro Test.

  10. #10
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut J'ai essayé un codage en relativement "dur", sans succès.
    Monsieur Kergresse,

    J'ai vu sur des sites web, le passage par ce que l'on appelle les signets* (ils auraient pas pu appeler ça un identificateur, ou un nom), et je sens que je dois passer par un codage en relativement "dur" - ce qui ne devrait pas poser de problème, à partir du moment où le modèle de check-list sera validé (qui concerne ces validations de forme, mais aussi d'autres, de contenu, à propos de guides informatiques (documentations/tutoriels)). Le codage en dur étant généralement déconseillé, je documenterai aussi la manière de rédiger la macro de vérification.

    *J'ai appelé les éléments de contrôle ListeDeroulante et CaseACocher, auxquels sont accolés comme suffixes les numéros de la liste hiérarchique, sans points.

    J'ai essayé ça, uniquement pour les 2 dernières listes surplombées par 1 case à cocher de leur section, pour le test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Checking()
        If ((ListeDeroulanteIB2a <> "Non-validé") And (ListeDeroulanteIB2b <> "Non-validé")) Then CaseACocherIB2 = True
        Else: CaseACocherIB2 = False
        End If
    End Sub
    mais si je remets une de ces listes sur "Non-validé", la case à cocher reste cochée, à l'encontre de ce que j'aimerais.

    Le fichier est joint.Formulaire.doc La marco est sous Project - ThisDocument.

    Quelle erreur aurais-je faite, s'il vous plaît?
    "La physique n'est pas tout" - Robert J. Oppenheimer

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message
    Telles que vous les utilisez, ListeDeroulanteIB2a et ListeDeroulanteIB2b sont des variables de type variant parce que non déclarées. Cela ne peut donc pas marcher.

    Ce code fonctionne quand on le lance en mode formulaire ou non depuis l'éditeur VBA :
    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
    24
    25
    26
    27
    28
     
    Sub MajCaseACocherIB2()
     
    Dim DocEnCours As Document
    Dim I As Integer, NbListesNonValides As Integer
     
        Set DocEnCours = ActiveDocument
        With DocEnCours
     
             NbListesNonValides = 0
     
             .FormFields("CaseACocherIB2").CheckBox.Value = False
             Debug.Print "CaseACocherIB2 : " & .FormFields("CaseACocherIB2").CheckBox.Value _
                       & ", ListeDeroulanteIB2a : " & .FormFields("ListeDeroulanteIB2a").Result _
                       & ", ListeDeroulanteIB2b : " & .FormFields("ListeDeroulanteIB2b").Result
     
             If .FormFields("ListeDeroulanteIB2a").Result <> "Non-validé" Then NbListesNonValides = 1
             Debug.Print "ListeDeroulanteIB2a : " & NbListesNonValides & ", valeur : " & .FormFields("ListeDeroulanteIB2a").Result
             If .FormFields("ListeDeroulanteIB2b").Result <> "Non-validé" Then NbListesNonValides = NbListesNonValides + 1
             Debug.Print "ListeDeroulanteIB2b : " & NbListesNonValides & ", valeur : " & .FormFields("ListeDeroulanteIB2b").Result
     
             If NbListesNonValides = 2 Then .FormFields("CaseACocherIB2").CheckBox.Value = True
     
        End With
     
        Set DocEnCours = Nothing
     
    End Sub
    En revanche, le déclenchement des macros via les champs me laisse dubitatif, cela marche d'une façon aléatoire lorsqu'on modifie les valeurs des listes déroulantes. En revanche, cela fonctionne en cliquant sur n'importe quelle checkbox. C'est la raison de la présence des debug.print pour tracer le déclenchement ou non des macros.
    Les contrôles ActiveX sont plus fiables de mon point de vue.

  12. #12
    Membre éclairé
    Avatar de Oppenheimer
    Homme Profil pro
    Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Inscrit en
    Mars 2012
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Certificat Fédéral de Capacité en informatique - orientation bases de données (conception)
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2012
    Messages : 235
    Points : 891
    Points
    891
    Par défaut Je vais demander à un donneur d'appuis en informatique, connaissant le VBA.
    Monsieur Kergresse,

    Vous avez deviné ma question: l'utilité de debug.print, que j'avais vue aussi dans un de vos messages auparavant.

    Je vous remercie sincèrement de tous vos efforts.

    Bien que vous me faites bénéficier d'un aperçu de la nécessité de debug.print, son fonctionnement exact ou formel m'échappe, car je n'ai pas vu le code VBA jusque-là.

    J'ai bien acquis des livres de VBA, pour Word, Excel, et Access, s'il vous plaît, mais leur macro-commandes indiquent des choses générales que j'ai vue et certaines de leur variantes. Ce qui me déplaît énormément avec ces livres, est que leur VBA ne sert qu'à des mises en forme (lors de certaines opération), ce qui m'est inutile et donc dont je ne me soucie aucunement.
    Ces livres me rendent dingue, parce que les questions de fond - de contenu et de logique - sont esquivées.

    Auriez-vous une/des références techniquement valables, pour ce qui concerne les contenus, et la logique, en VBA, (de préférence un/des livre(s) assez complet(s) ou alors un/des tutoriels Youtube ou autres références pour les questions de fond), s'il vous plaît?

    Mis à part cela, je ne vais pas vous solliciter plus longtemps pour ce qui concerne le code. Pour l'instant, j'ai arrêté ma lecture à debug.print, pour raison de ne pas pouvoir appréhender votre code plus à fond. J'ai encore besoin d'une ou deux connaissance théoriques générales allant jusque là, pour m'autoriser une relative souplesse dans l'appréhension et l'adaptation du code.

    Je pense que je vais demander à un connaisseur, en direct, via un site d'appuis, comme un ingénieur en informatique, avec qui je pourrais regarder cela de près, en "live", car sinon, si je demande de bouts de code, suivis d'1 ou 2 explications, puis re-bouts de code, je vais pas m'en sortir avant 107 ans.

    Mon problème restant de mon point de vue irrésolu (car je ne puis appliquer et adapter proprement), je ne marque donc pas la discussion comme étant résolue; mais je mets un vote à votre dernière réponse.

    Merci encore de votre soutien.
    "La physique n'est pas tout" - Robert J. Oppenheimer

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message
    Les debug.print sont là uniquement pour voir ce qu'on récupère dans les variables. Pour cela, il faut faire apparaître la fenêtre exécution avec les touches Ctrl-G.
    En ce qui concerne les références techniquement valables, je n'ai, hélas, rien d'autre à vous proposer que les tutoriels présents sur ce forum et les sites tels que ceux d' Olivier Lebeau, des mvp Marina ou Cathy Astuces, Ron De Bruin, etc.

    Cordialement.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oppenheimer Voir le message
    Voir l'astuce suivante : https://www.developpez.net/forums/d2.../#post11655472

Discussions similaires

  1. [jersey] Utilisation de validators et nom des paramètres
    Par felix79 dans le forum Services Web
    Réponses: 2
    Dernier message: 04/09/2014, 09h57
  2. requête de validation par rapport à des dates
    Par zougna dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2007, 13h45
  3. Réponses: 2
    Dernier message: 01/08/2006, 13h38
  4. récupérer la liste des noms des champs d'une table
    Par la_didise dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 16h55
  5. Comment obtenir la liste des noms des ordinateurs du réseau ?
    Par da_latifa dans le forum Web & réseau
    Réponses: 2
    Dernier message: 17/08/2005, 11h58

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