Rechercher le contenu d'une combobox ActiveX sur Word2007

Jawab Rechercher le contenu d'une combobox ActiveX sur Word2007

  • mercredi 21 décembre 2011 10:02
     
     

    Bonjour à toutes et tous,

    J'ai inséré des combobox (Zone de liste déroulante) ActiveX dans un document Word (2007 SP3), et je voudrais pouvoir faire une recherche Ctrl-F sur la valeur des combobox. Pour l'instant, j'ai constaté que seul le contenu des combobox "Formulaires hérités" peut être recherché. Quid des composants ActiveX ?

    L'idée in fine est de pouvoir faire une recherche sur le contenu de ces composants directement à partir de l'explorateur Windows (7).

    Merci de votre aide.

    Nicolas

Toutes les réponses

  • jeudi 22 décembre 2011 01:16
     
     
    bonjour Nicolas,
     
    MsgBox Me.ComboBox1.Value
    ne foctionne pas ?
     
     
    --
    isabelle
     Le 2011-12-21 05:02, Nickoo a écrit :
    > Bonjour à toutes et tous,
    >
    > J'ai inséré des combobox (Zone de liste déroulante) ActiveX dans un document Word (2007 SP3), et je voudrais pouvoir faire une recherche Ctrl-F sur la valeur des combobox. Pour l'instant, j'ai constaté que seul le contenu des combobox "Formulaires hérités" peut être recherché. Quid des composants ActiveX ?
    >
    > L'idée in fine est de pouvoir faire une recherche sur le contenu de ces composants directement à partir de l'explorateur Windows (7).
    >
    > Merci de votre aide.
    >
    > Nicolas
    >
     
  • jeudi 22 décembre 2011 02:00
     
     
  • jeudi 22 décembre 2011 09:27
     
     

    Bonjour Isabelle,

    Merci pour tes réponses. Tout d'abord, les sécurités concernant les composants ActiveX sont au minimum, l'emplacement dans lequel je place mon fichier fait partie de mes "emplacements approuvés".

    Je vais apporter quelques précisions sur le but de la manœuvre :

    J'ai placé un certains nombre de combobox dans un document, les items des combobox étant dépendantes des valeurs d'autres. J'utilise donc Me.ComboBox1.Value dans mon code, et l'afficher sous forme de MessageBox fonctionne, mais ce n'est pas ce que je cherche à faire.

    Une fois que j'ai sélectionné des items dans mes combobox, je voudrais effectuer une recherche dans le document via Accueil/Rechercher (Ctrl-F) et que cette recherche s'effectue aussi sur la valeur des combobox. Si j'ai mis la valeur "Item1" dans des combobox, je veux que la recherche Word trouve ces champs. Or pour l'instant, il me dit que l'objet de la recherche n'a pas pu être trouvé, même si je l'ai sous les yeux (et qu'il correspond bien à Me.ComboBox1.Value).

    Y-a-t-il un moyen de rendre "visible" la valeur des combobox ActiveX par l'outil de recherche de Word (ou de l'explorateur Windows)? Merci.

    Nicolas

  • jeudi 22 décembre 2011 16:01
     
     
    je ne crois pas que l'on puisse faire la recherche sur les controls activex via Accueil/Rechercher
    mais voici un exemple pour une recherche perso:
     
    '___copier ce code sur la page ThisDocument______________________________________________________________
     
    Dim TextRechercher
     
    Sub MaRecherche()
    Dim p1 As String, p2 As String, n As Boolean
    Dim Style, Title, Response1, Response2
    Style = vbYesNo + vbCritical + vbDefaultButton2
    Title = "RECHERCHE"
     
    TextRechercher = InputBox("Écrire le texte recherché", Title)
     
    p1 = Selection.Information(wdActiveEndPageNumber) & "-" & _
        Selection.Information(wdHorizontalPositionRelativeToPage) & "-" & _
        Selection.Information(wdVerticalPositionRelativeToPage)
     
    début:
     
    With Selection.Find
        .Forward = True
        .ClearFormatting
        .MatchWholeWord = True
        .MatchCase = False
        .Wrap = wdFindContinue
        .Execute FindText:=TextRechercher
    End With
    p2 = Selection.Information(wdActiveEndPageNumber) & "-" & _
        Selection.Information(wdHorizontalPositionRelativeToPage) & "-" & _
        Selection.Information(wdVerticalPositionRelativeToPage)
     
    If n = False And p1 = p2 Then
            Response2 = MsgBox("aucune valeur trouvée, voulez-vous continuer la recherche sur les ActiveX ?", Style, Title)
            If Response2 = vbNo Then
                Exit Sub
            Else
                Call RechecheActiveX
                Exit Sub
            End If
     
    Else
        If n = False Then p1 = p2
         If n = True And p1 = p2 Then
        Response2 = MsgBox("fin du document, voulez-vous continuer la recherche sur les ActiveX ?", Style, Title)
            If Response2 = vbNo Then
                Exit Sub
            Else
                Call RechecheActiveX
                Exit Sub
            End If
         Else
        Response1 = MsgBox("une valeur trouvée, voulez-vous continuer ?", Style, Title)
            If Response1 = vbNo Then
                Exit Sub
            Else
                n = True
                GoTo début
            End If
        End If
    End If
    End Sub
     
    Sub RechecheActiveX()
    Dim oCtl As InlineShape
    Dim oTB, n As Boolean
     
    For Each oCtl In ActiveDocument.InlineShapes
     If oCtl.OLEFormat.ProgID = "Forms.ComboBox.1" Then
       Set oTB = oCtl.OLEFormat.Object
        If TextRechercher = oTB.Text Then
          n = True
          oCtl.Activate
          MsgBox "le texte est trouvée sur le control " & oTB.Name
          Exit Sub
        End If
     End If
    Next
    If n = False Then MsgBox "le texte n'a pas été trouvé"
    End Sub
     
    '______________________________________________________________________________
     --
    isabelle
     
    Le 2011-12-22 04:27, Nickoo a écrit :
    > Bonjour Isabelle,
    >
    > Merci pour tes réponses. Tout d'abord, les sécurités concernant les composants ActiveX sont au minimum, l'emplacement dans lequel je place mon fichier fait partie de mes "emplacements approuvés".
    >
    > Je vais apporter quelques précisions sur le but de la manœuvre :
    >
    > J'ai placé un certains nombre de combobox dans un document, les items des combobox étant dépendantes des valeurs d'autres. J'utilise donc Me.ComboBox1.Value dans mon code, et l'afficher sous forme de MessageBox fonctionne, mais ce n'est pas ce que je cherche à faire.
    >
    > Une fois que j'ai sélectionné des items dans mes combobox, je voudrais effectuer une recherche dans le document via Accueil/Rechercher (Ctrl-F) et que cette recherche s'effectue aussi sur la valeur des combobox. Si j'ai mis la valeur "Item1" dans des combobox, je veux que la recherche Word trouve ces champs. Or pour l'instant, il me dit que l'objet de la recherche n'a pas pu être trouvé, même si je l'ai sous les yeux (et qu'il correspond bien à Me.ComboBox1.Value).
    >
    > Y-a-t-il un moyen de rendre "visible" la valeur des combobox ActiveX par l'outil de recherche de Word (ou de l'explorateur Windows)? Merci.
    >
    > Nicolas
    >
     
    • Proposé comme réponse Ciprian DuduialaOwner vendredi 23 décembre 2011 16:37
    • Marqué comme réponse Ciprian DuduialaOwner vendredi 30 décembre 2011 20:36
    • Non marqué comme réponse Nickoo lundi 2 janvier 2012 08:19
    • Non proposé comme réponse Nickoo lundi 2 janvier 2012 08:19
    •  
  • lundi 2 janvier 2012 08:19
     
     

    Bonjour, et bonne année à tous !

    Merci beaucoup pour ce code Isabelle, mais faire une boucle sur les Combobox pour tester leur valeur ne constitue pas en soit une réponse à ma question. (Je retire donc le "marqué comme réponse")

    C'est cette partie de ta réponse qui m'intéresse le plus : "je ne crois pas que l'on puisse faire la recherche sur les controls activex via Accueil/Rechercher". Je voudrais avoir une confirmation du "je ne crois pas que l'on puisse" ! Parce que si effectivement on ne peut pas faire de recherche via Accueil/Recherche, il faut que je change toute la structure de mon document et je ne pourrai plus utiliser de code VBA pour afficher le contenu de mes combobox de manière conditionnelle... Si par contre, il y a un moyen d'activer la recherche sur la valeur des Combobox, alors j'aimerais le connaître, et je ne sais pas auprès de qui à part vous chercher la réponse.

    Merci.

    Nicolas

  • jeudi 5 janvier 2012 10:20
    Propriétaire
     
     

    Bonjour, Nicolas,

     

    J’ai marqué la réponse d’Isabelle parce que vous n’êtes pas revenu avec feedback pour plus de 7 jours. D’autre côté, je ne comprends pas pourquoi la boucle sur les Combobox n’est pas une solution pour vous. Selon vos explications, le code d’Isabelle fait exactement ce que vous voulez faire. Merci d’avance !

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

  • jeudi 5 janvier 2012 12:42
     
     

    Bonjour Ciprian,

    Le but ultime est d'utiliser l'outil Recherche de l'explorateur des dossiers de Windows 7 pour trouver des renseignements inclus dans des documents Word, de la manière d'un formulaire de base de donnée. Je disposerai par exemple d'un fichier Word par Client, avec ses coordonnées et son historique d'achats. J'utilise dans chaque document Word des combobox liées entre elles, c'est-à-dire que le contenu d'une combobox peut être conditionnée par la valeur choisie dans une autre, par VBA. Pour ce faire, j'ai du utiliser des combobox de type ActiveX.

    Mon problème est décrit sur l'image jointe : si je fais une recherche de texte affiché dans ce type de combobox via l'outil Rechercher de Word (idem avec l'outil Recherche de l'explorateur des dossiers de Windows 7), rien ne sort... Par contre (et ce qui me fait penser que c'est un problème d'élément ActiveX), si j'utilise une combobox de type classique, la recherche est fructueuse.

    Donc ma question est : comment rendre les composants ActiveX visibles par l'outil de recherche de Word? Dès lors, je pense que la recherche par l'explorateur des dossiers de W7 ne posera pas de souci...

    J'espère que c'est clair cette fois... En tous cas, je compte beaucoup sur vous... Si vous pensez que je dois me renseigner ailleurs, j'espère que vous pourrez m'indiquer où.

    Merci, et à bientôt j'espère ;-)

    Nicolas

     

  • samedi 7 janvier 2012 03:07
     
     Traitée
    bonjour Nicolas,
     
    je confirme que ce n'est pas possible de faire ce travail par l'outil Recherche de l'explorateur des dossiers de Windows 7,
    et non plus par une recherche de texte directement dans un document Word,
    la seule possibilité que j'entrevois est d'écrire un code (VB, VBA ou autre) pour faire ce travail.
     
    --
    isabelle
     
    Le 2012-01-05 07:42, Nickoo a écrit :
    > Bonjour Ciprian,
    >
    > Le but ultime est d'utiliser l'outil Recherche de l'explorateur des dossiers de Windows 7 pour trouver des renseignements inclus dans des documents Word, de la manière d'un formulaire de base de donnée. Je disposerai par exemple d'un fichier Word par Client, avec ses coordonnées et son historique d'achats. J'utilise dans chaque document Word des combobox liées entre elles, c'est-à-dire que le contenu d'une combobox peut être conditionnée par la valeur choisie dans une autre, par VBA. Pour ce
    > faire, j'ai du utiliser des combobox de type ActiveX.
    >
    > Mon problème est décrit sur l'image jointe : si je fais une recherche de texte affiché dans ce type de combobox via l'outil Rechercher de Word (idem avec l'outil Recherche de l'explorateur des dossiers de Windows 7), rien ne sort... Par contre (et ce qui me fait penser que c'est un problème d'élément ActiveX), si j'utilise une combobox de type classique, la recherche est fructueuse.
    >
    > Donc ma question est : comment rendre les composants ActiveX visibles par l'outil de recherche de Word? Dès lors, je pense que la recherche par l'explorateur des dossiers de W7 ne posera pas de souci...
    >
    > J'espère que c'est clair cette fois... En tous cas, je compte beaucoup sur vous... Si vous pensez que je dois me renseigner ailleurs, j'espère que vous pourrez m'indiquer où.
    >
    > Merci, et à bientôt j'espère ;-)
    >
    > Nicolas
    >
     
  • lundi 9 janvier 2012 08:11
     
     

    Merci pour vos réponses. Je vais m'y prendre autrement alors...

    A bientôt.

    Nicolas