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

VBA Word Discussion :

Les CheckBox ne sont plus accessibles en VBA [WD-2007]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Les CheckBox ne sont plus accessibles en VBA
    Bonjour,

    J'ai créé un modèle Word avec code VBA dans Word 2010 au travail.
    Étant donné la triste situation actuelle, je travaille maintenant à la maison où j'ai Word 2007.

    Et là, la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SelectContentControlsByTag("CC_actifs")(1).Checked = False
    est refusée avec l'erreur "membre de méthode ou de données introuvable".

    J'ai tapé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set newCC = .ContentControls.Add(
    pour faire que Word propose les types de contrôles de contenu disponibles et wdContentControlCheckBox n'est pas proposé.
    Pourtant, le bouton de création de case à cocher du Ruban Office est bien fonctionnel.

    J'ai regardé les Références utilisées qui sont :
    Nom : Références.png
Affichages : 302
Taille : 16,1 Ko

    Est-ce bien un problème de référence?

    En vous remerciant de me lire et éventuellement trouver une solution,

    Courage à tous,

    Arnaud

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

    Regardez l'aide en ligne, visiblement SelectContentControlsByTag est en lecture seule https://docs.microsoft.com/fr-fr/off...tcontrolsbytag

    Regardez de votre côté sur votre module d'aide, si vous avez les mêmes indications.

    Nb : Vous devriez utiliser l'intellisense, c'est à dire instancier des variables object, vous verriez tout de suite les différentes propriétés et méthodes permises pour l'objet en mettant un "." derrière.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup pour votre réponse.
    Vous m'avez déjà plusieurs fois aidé.

    Concernant SelectContentControlsByTag, c'est vrai que Microsoft dit que la collection retournée est en lecture seule mais pas ses éléments à mon avis. En effet, j'ai toujours appliqué des valeurs aux propriétés des contrôles de contenu via cette méthode.

    Pour l'intellisense, je ne savais pas que ça s'appelait comme ça mais en tapant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SelectContentControlsByTag("CC_actifs")(1).
    Checked n'est pas proposé.
    Tout se passe comme si les références vers les contrôles de contenu de type CheckBox étaient inconnues.

    Bonne fin de journée,

    Arnaud

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arnaud2019 Voir le message
    Si vous mettez un exemple en ligne non confidentiel (zipé), je peux regarder mais expliquez-moi ce que vous cherchez à faire.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Voilà un exemple minimal : Test case à cocher.zip
    C'est un modèle avec macro que j'ai créé dans Word 2007 : il contient une case à cocher qui doit se cocher lorsqu'on crée un document basé sur lui, mais la ligne de code .SelectContentControlsByTag("CC_actifs")(1).Checked = True n'est pas acceptée.
    Ce faisant, j'ai noté que l'apparence et les propriétés de la case à cocher sont différentes dans ce document créé dans Word 2007, par rapport aux documents qui ont été créés dans Word 2010.
    Dans les deux cas, ce sont des contrôles ActiveX.
    Est-ce qu'il y aurait une histoire de versions de librairie Microsoft ActiveX différentes et incompatibles?

    En vous remerciant pour votre aide,

    Arnaud

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

    Ce code fonctionne-t-il sur votre version ?
    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
     
    Private Sub Document_New()
     
    Dim I As Integer
     
        With ActiveDocument
             If .InlineShapes.Count > 0 Then
                For I = 1 To .InlineShapes.Count
                  With .InlineShapes(I).OLEFormat
                     If .ClassType = "Forms.CheckBox.1" And .Object.Name = "CheckBox1" Then
                        .Object = True
                       ' Debug.Print "Nom : " & .Object.Name & ", type : " & .ClassType & ", valeur : " & .Object
                     End If
                  End With
     
                Next I
             End If
        End With
     
    End Sub

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci,

    J'ai fait une erreur dans mon exemple : le nom de la case à cocher dans le code n'était pas le bon.
    Cependant, après correction, le problème n'était pas résolu.

    Pour votre code, oui, ça marche.
    Cela veut dire que je dois modifier tout le code dans mon travail (~3000 lignes) pour accéder aux cases à cocher comme des InlineShapes et non des ContentControls.
    C'est galère et il n'est pas garanti que ça marchera au retour à Word 2010...

    Savez-vous s'il est normal que les cases à cocher Word 2010 ne soient pas utilisables comme des contrôles de contenu dans Word 2007?

    Merci encore et bon appétit

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arnaud2019 Voir le message
    Ce code a été réalisé sous office 365, il y aura donc compatibilité ascendante si cela fonctionne sur 2007.
    Combien de lignes de code sont concernées (en gros) ?
    Sous quelle forme apparaissent vos lignes de code (quelle syntaxe) ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arnaud2019 Voir le message
    J'ai fait une erreur dans mon exemple : le nom de la case à cocher dans le code n'était pas le bon.
    Cependant, après correction, le problème n'était pas résolu.
    Le contrôle présent dans le document joint est un contrôle ActiveX et pas un ContentControl. Quel est le type après votre correction ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Ce code a été réalisé sous office 365, il y aura donc compatibilité ascendante si cela fonctionne sur 2007.
    Combien de lignes de code sont concernées (en gros) ?
    Sous quelle forme apparaissent vos lignes de code (quelle syntaxe) ?
    Pour la compatibilité, j'ai voulu essayer d'utiliser votre code avec une case créée dans Word 2010 et ça ne marche pas.
    Je devrais donc remplacer toutes les cases, en plus des occurences de (pour vous répondre, il y en a 49 x4 variantes du modèle).
    La syntaxe est la même que dans l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SelectContentControlsByTag("nom_de_la_case")(1).Checked = False/True
    Merci.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arnaud2019 Voir le message
    J'ai fait une erreur dans mon exemple : le nom de la case à cocher dans le code n'était pas le bon.
    Cependant, après correction, le problème n'était pas résolu.
    Je reprends ce message. Est-ce à dire que l'objet n'était pas le même ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Le contrôle présent dans le document joint est un contrôle ActiveX et pas un ContentControl. Quel est le type après votre correction ?
    Je n'ai pas changé le type.
    Par contre, vous m'avez fait comprendre où était le problème.
    Après vérification sur un site qui montre comment ajouter une case à cocher dans Word, je vois que, dans les versions plus récentes, la case à cocher est proposée directement comme contrôle de contenu dans Ruban > Développeur > Contrôles, alors qu'avec 2007 elle ne l'est que dans Ruban > Développeur > Contrôles > Outils hérités > Contrôles ActiveX.

    Le mieux serait de me procurer une version plus récente.

    Est-ce que je mets la discussion en Résolu?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arnaud2019 Voir le message
    Je ne pourrai vous apporter plus d'aide.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2019
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Je reprends ce message. Est-ce à dire que l'objet n'était pas le même ?
    Dans l'exemple que je vous ai envoyé, le code faisait référence à la case "CC_actifs" qu'il y avait dans le modèle du travail, alors que, dans l'exemple, la case était nommée "CheckBox1".
    Mais ça ne change rien : si je ne veux pas revoir une grande partie de mon travail, je n'ai pas d'autre choix que d'acquérir un Office plus récent.

    Merci beaucoup pour votre aide, Eric Kergresse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lister les tables d'une bd access avec vba
    Par sebac dans le forum Général VBA
    Réponses: 3
    Dernier message: 16/05/2008, 12h52
  2. [phpMyAdmin] Les bases ne sont plus listées sous la forme d'une liste
    Par loopback dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/01/2008, 15h57
  3. Les modifications ne sont plus prises en compte
    Par yousfi.z dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 28/03/2007, 11h51
  4. Réponses: 1
    Dernier message: 12/09/2006, 08h13
  5. quels sont les checkbox qui sont cochés?
    Par debutant.informatique dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 21h18

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