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

  1. #1
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : janvier 2010
    Messages : 8 156
    Points : 19 258
    Points
    19 258
    Billets dans le blog
    8

    Par défaut Objet ContentControl : Comment détecter si une image a été téléchargée

    Bonjour,
    Afin de rendre invisible lors de l'impression d'un document, les contrôles de contenu non utilisés, je cherche à détecter si une photo a été téléchargée ou pas.
    Soit dans l'image ci-dessous le contrôle entouré en rouge.

    Nom : Image photo.png
Affichages : 16
Taille : 30,3 Ko

    Pour les autres contrôles, j'ai trouvé la solution mais je cherche en vain pour le contrôle de contenu d'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub HiddenControl()
      ' Masque les contrôles formulaire non utilisés
      Dim Ctrl As ContentControl
      For Each Ctrl In ThisDocument.ContentControls
        With Ctrl
         Select Case .Type
           Case 0 To 1, 3, 6 ' Texte enrichi, brut, liste déroulante, sélection date
             .Range.Font.Hidden = .Range = .PlaceholderText
           Case 2 ' d'image
             ' .Range.Font.Hidden = False
         End Select
        End With
      Next
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  2. #2
    Expert éminent

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 613
    Points : 9 191
    Points
    9 191
    Billets dans le blog
    26

    Par défaut

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour Philippe,

    Au moment où tu charges (et décharges) ton image, as-tu moyen de renseigner la propriété tag du contentcontrol, pour t'en servir ensuite ?
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : janvier 2010
    Messages : 8 156
    Points : 19 258
    Points
    19 258
    Billets dans le blog
    8

    Par défaut

    Bonjour Eric,
    Merci de te pencher sur mon problème.
    Le problème est que ce n'est pas par VBA que les photos sont chargées mais manuellement par l' utilisateur et j'avais bien pensé faute de mieux d'alimenter la propriété Tag de l'objet mais je devrais alors intercepter l'événement et je ne vois pas cet événement.
    Il y aurait bien une solution avec celui ci Document_ContentControlOnExit mais on peut sortir de l'événement en supprimant l'image et donc je me retrouve avec le même problème "Comment savoir s'il y a une image chargée ou pas"
    J'ai testé plusieurs propriétés mais sans succès et malheureusement l'enregistreur de macros de Word n'est pas très bavard.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  4. #4
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : janvier 2010
    Messages : 8 156
    Points : 19 258
    Points
    19 258
    Billets dans le blog
    8

    Par défaut Solution momentannée

    Bonjour,
    En attendant mieux et en espérant qu'une meilleure solution existe, voilà ce que j'ai opté comme solution
    Les contrôles étant préinstallé dans un modèle, les tailles de ceux-ci sont identiques. Lorsque l'utilisateur chargera la photo la taille (largeur et hauteurà sera différentes.
    Je teste donc ceux-ci pour rendre visible ou pas le contrôle.
    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 HiddenControl()
      ' Masque les contrôles du contenu non utilisés
      Const dHeight As Double = 115.2, dWidth As Double = 115.2
      Dim Ctrl As ContentControl
      Dim Flag As Boolean
      '
      For Each Ctrl In ThisDocument.ContentControls
        With Ctrl
          Select Case .Type
            Case 0 To 1, 3, 6 ' Texte enrichi, brut, liste déroulante, sélection date
              Flag = .Range = .PlaceholderText
            Case 2 ' d'image
              With .Range.InlineShapes(1)
                Flag = .Height = dHeight And .Width = dWidth
              End With
          End Select
         .Range.Font.Hidden = Flag
        End With
      Next
    End Sub
    Je laisse pour l'instant la discussion ouverte; en espérant une solution propre
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  5. #5
    Expert éminent

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 613
    Points : 9 191
    Points
    9 191
    Billets dans le blog
    26

    Par défaut

    Citation Envoyé par Philippe Tulliez Voir le message
    Ce code te permet-il de différencier les controles vides ? Vrai si vide.

    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
     
    Sub VerifierLesContentsImages()
     
    Dim I As Integer
     
      With ActiveDocument
     
           For I = 1 To .ContentControls.Count
               With .ContentControls(I)
                    If .Type = wdContentControlPicture Then
                       Debug.Print I & ", " & .ShowingPlaceholderText
                    End If
            End With
           Next I
     
      End With
     
     
    End Sub
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  6. #6
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : janvier 2010
    Messages : 8 156
    Points : 19 258
    Points
    19 258
    Billets dans le blog
    8

    Par défaut

    Bonjour Eric,
    Génial, celle là je ne l'ai pas vue

    Du coup, mon code est réduit à sa plus simple expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub HiddenControl()
      ' Masque les contrôles du contenu non utilisés
      Dim Ctrl As ContentControl
      For Each Ctrl In ThisDocument.ContentControls
        With Ctrl
        .Range.Font.Hidden = .ShowingPlaceholderText
        End With
      Next
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

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

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