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

VBScript Discussion :

Modifier combobox dans Word par vbscript


Sujet :

VBScript

  1. #1
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut Modifier combobox dans Word par vbscript
    Bonjour,

    Pour faire des corrections en masse (49000 fichiers word) je dois modifier la valeur de certaines combobox.
    Je vais devoir aussi aller modifier d'autres éléments contenus dans des tableau de chaque fichier, d'où mon array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'alerte = wdoc.Tables(4).Cell(3, 2).Range.text
    tabcell = Array("alerte")
    La liste des fichiers à ouvrir et des éléments pour les corriger sont dans un csv auquel j'accède par mon Split(fCsv.ReadLine, ";")

    Voici le bout de code :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
     
    cbox = Array("PERIODICITE", "REPRISE_J", "REPRISE_S", "CRITICITE", "Urgence", "Topage")
     
    'alerte = wdoc.Tables(4).Cell(3, 2).Range.text
    tabcell = Array("alerte")
     
     
     
     
    ' Conversion des variables en long pour éviter les dépassements de capacité
    ' Plus d'info :
    ' http://www.lesite.net/contents/1189-vbscript-types-de-donnees
    Debut=Clng(Debut)
    Fin=Clng(Fin)
    Tps=Clng(Tps)
    Duree=Clng(Duree)
     
    ' Affichage du type de données, 3 = long
    'Wscript.echo VarType(Debut) & " " & VarType(Fin) & " " & VarType(Tps) & " " & VarType(Duree)
     
    ' Oui = 6 / Non = 7
    popup_btn = Sh.Popup ("Début du script " & WScript.ScriptName, , "", 4)
    '(strText,[nSecondsToWait],[strTitle],[nType])
    if popup_btn = 7 Then Call fin_script
     
     
    ' Récupération de l'heure courante et transformation en seconde
    debut = (Left(Time,2) * 3600) + (Mid(Time,4,2) * 60) + (Right(Time,2))
    cpt = 0
     
    Set fCsv = fso.OpenTextFile( dir_in & "\" & fic_in, 1)
     
    ligne_fic_in = fCsv.ReadLine ' Permet de sauter la première ligne qui est un entête
     
    fcr_prec = ""
     
    ' Lecture du fichier fic_in ligne à ligne
    While Not fCsv.AtEndOfStream
     
      if cpt = 1 then call fin_script
     
      tb = Split(fCsv.ReadLine, ";") ' Création d'un tableau par ligne
      fcr_lue = tb(0) ' Récupération de la FCR à traiter
      edition = tb(1) ' Récupération de l'édition qui contient la FCR
     
      Wscript.echo "fcr_lue    : " & fcr_lue & vbcrlf & _
                   "fcr_prec : " & fcr_prec
      wdo.visible = False
      Set wdocs = wdo.Documents
      Set wdoc = wdocs.Open(repertoire & "\" & edition & "\" & fcr_lue) 'Ouverture
     
      ' Récupération du champ correspondant à l'alerte '
      ' A sanitiser. '
      'Wscript.Echo wdoc.Tables(4).Cell(3, 2).Range.text
     
     
      '-------------------------------------------------'
              'Du code pour faire les correction'
      ' Détection du type de zone à modifier : combobox/cellule d'un tableau
      Wscript.echo tb(4) & "-> " & tb(5)
     
      ' Rennomage pour correspondre au contenu de la FCR '
      IF tb(4) = "PERIODICITE" OR tb(4) = "REPRISE_J" OR tb(4) = "REPRISE_S" Then rub = tb(4)
      If tb(4) = "impact" Then rub = "CRITICITE" 
      If tb(4) = "urgence" Then rub = "Urgence"
      If tb(4) = "Toppage CR" Then rub = "TOPAGE"
      IF tb(4) = "" Then rub = ""
     
      If IsInArray(rub, cbox)  Then
        Wscript.Echo wdoc. & rub & .text
        'wdoc.rub.text = tb(5)
     
     
     
     
      else
        WScript.Echo "No"
     
     
     
     
     
      End If
     
      '-------------------------------------------------'
     
     
     
        cpt = cpt + 1
        ' Test de rupture dernière
        If fcr_prec = fcr_lue Then
          ' Même FCR on poursuit les corrections sans fermer le fichier
        Wscript.echo "Les FCRs sont identiques, on ne ferme pas le fichier"
     
        Else 
          ' FCR différente on ferme le fichier en l'enregistrant dans un dossier 
          ' et on passe à la FCR suivante'
          Wscript.echo "Les FCRs sont différentes, on peu fermer le fichier"
     
          'wdo.Run "lecture_fcr_chargement_MAESCOT",fic_out_central,fic_out_open,fic_out_reseau,Edition
          wdoc.Close(0) 'fermeture  FCR ouverte précédemment sans sauvegarder
     
        End IF
     
      fcr_prec = fcr_lue  ' Stocke le nom de la FCR qui vient d'être traitée pour la gestion de la rupture dernière
     
      Wend
     
      Wscript.echo "Lignes lues : " & cpt
     
      Call fin_script
     
     
    ' ****************************************************************************** '
    ''
    ''                       Fin du script, début des sous routines
    ''
    ' ****************************************************************************** '
     
    ' Sous routine pour gérer la fin du script 
    ' (le vbs ne gère les Goto que pour les erreurs)
    Sub fin_script()
     
    WScript.Echo "Fin du script " & WScript.ScriptName & vbcrlf & _ 
                 cpt & " objets traités "'en " & duree & " (HH:MM:SS)"
     
    WScript.Quit
    end sub
     
    Function IsInArray(strIn, arrCheck)
        'IsInArray: Checks for a value inside an array
        'Author: Justin Doles - www.DigitalDeviation.com
        Dim bFlag : bFlag = False
     
        If IsArray(arrCheck) AND Not IsNull(strIn) Then
            Dim i
            For i = 0 to UBound(arrCheck)
                If LCase(arrcheck(i)) = LCase(strIn) Then
                    bFlag = True
                    Exit For
                End If
            Next
        End If
        IsInArray = bFlag
    End Function
    C'est cette portion qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      If IsInArray(rub, cbox)  Then
        Wscript.Echo wdoc. & rub & .text
        'wdoc.rub.text = tb(5)
    rub une variable qui représente le nom de la rubrique à modifier, il s'agit de combobox (Contrôle ActiveX)
    Je n'arrive pas à afficher son contenu comme je l'ai écrit en variabilisant le nom.
    Si je remplace rub par sa valeur (Wscript.Echo wdoc.Urgence.text), là ça marche, mais je souhaiterai éviter de repasser par un test des nom de chaque combobox.

    C'est amplement imparfait car en cour de dev, mais bon, là je bloque.


    Merci pour vos suggestions

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If IsInArray(rub, cbox)  Then
        Wscript.Echo wdoc. & rub & .text 'ICI
        'wdoc.rub.text = tb(5)
    Si votre Echo fonctionne, vous devez faire la même opération pour affecter la valeur.

    rub est une variable avec une value.
    Lorsque vous écrivez wdoc. & rub & .text, vous utilisez la valeur de la variable rub.

    Dans , rub est considéré comme du texte.

    Essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdoc. & rub & .text = tb(5)
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  3. #3
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Le echo ne fonctionne pas, j'ai une erreur à la compilation :
    Erreur :Identificateur attendu
    Code : 800A03F2

    Le & ne lui plait pas, la ligne ne semble du coup pas correcte ...

    Je continue de creuser ...


  4. #4
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Bon,

    Je m'étais un peu mélangé les pinceaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wscript.Echo wdo.ActiveDocument.Topage.Value
    Me renvoie "NON" et c'est ce qui est attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wscript.Echo wdo.ActiveDocument.rub.Value
    Me renvoie lorsque qu'il est supposé m'afficher "NON" :
    Cet objet ne gère pas cette propriété ou cette méthode: 'ActiveDocument.rub' en m'indiquant le Wscript.Echo


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wscript.Echo wdo.ActiveDocument. & rub & .Value
    Me renvoie dès la compil du script :
    Identificateur attendu en m'indiquant le premier &

    La question étant de faire passer le contenu de ma variable rub (Topage) dans l'instruction Wscript.Echo wdo.ActiveDocument/l'écriture magique/Value

  5. #5
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour,

    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wscript.Echo wdo.ActiveDocument & "." & rub & "." & Value
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 177
    Points
    17 177
    Par défaut
    Salut
    Je ne connais pas la manipulation de Word, mais
    rub une variable qui représente le nom de la rubrique à modifier
    .............
    Cet objet ne gère pas cette propriété ou cette méthode: 'ActiveDocument.rub'
    rub n'est il pas a considérer comme un objet ?
    Si oui, ne faudrait il pas utiliser Set.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      If tb(4) = "PERIODICITE" Or tb(4) = "REPRISE_J" Or tb(4) = "REPRISE_S" Then Set rub = wdo.ActiveDocument.[tb(4)]
      If tb(4) = "impact" Then Set rub = wdo.ActiveDocument.["CRITICITE"]
      If tb(4) = "urgence" Then Set rub = wdo.ActiveDocument.["Urgence"]
      If tb(4) = "Toppage CR" Then Set rub = wdo.ActiveDocument.["TOPAGE"]
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Mon VBScript est loin, mais, je ne pense pas que VBA-Word, ou le modèle-objets de Word permette d'utiliser une variable comme nom d'objet. Quand on veut piloter Word par automation, que ce soit avec VBScript ou une autre application, on demande à Word de se mettre au service de l'application appelante ses propres capacités et ses propres objets.

    Or, pour autant que je sache, pour agir sur un objet de Word, il faut utiliser le nom spécifique de l'objet Word.

    Pour le cas des contrôles dans un document, il s'agit d'OLEObjects que l'on peut atteindre à partir des Shapes du document.

    Si on parle d'un combo dans une boîte de dialogue (un UserForm en VBA), c'est une autre paire de manches. Là il faut passer par la modification du projet VBA et pas par le document lui-même

    Mais là, de but en blanc, je n'ai pas de code sous la main.

    Je suis enclin à suggérer de poser la question dans le forum VBA Office, ou le forum VBA Word, quitte à faire référence à cette discussion initiale.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  8. #8
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Bonjour,

    Et tout d'abord merci pour vos contribution.

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    IF tb(4) = "PERIODICITE" OR tb(4) = "REPRISE_J" OR tb(4) = "REPRISE_S" Then Set rub = tb(4)
    If tb(4) = "impact" Then Set rub = "CRITICITE" 
    If tb(4) = "urgence" Then Set rub = "Urgence"
    If tb(4) = "Toppage CR" Then Set rub = "TOPAGE"
    IF tb(4) = "" Then Set rub = ""
     
    Wscript.Echo "Variable : " & wdo.ActiveDocument & "." & rub & "." & value
    Et j'obtiens l'erreur :
    Objet requis: '[String: "TOPAGE"]'
    Code : 800A01A8

    Sans les "Set" :
    Erreur : Variable non défini: 'Value'

    J'ai essayé les solutions que vous m'avez proposé, mais rien n'y fait. Comme le suggère clementmarcotte, je vais m'orienter vers les OLEObjects, histoire de voir comment je peux attaquer ça en vbs.


    Merci en tout cas pour vos propositions

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 177
    Points
    17 177
    Par défaut
    Citation Envoyé par postage ouverture de la discussion
    Si je remplace rub par sa valeur (Wscript.Echo wdoc.Urgence.text)
    donc il faut récupéré un objet (en l’occurrence un ComboBox)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	'If tb(4) = "Toppage CR" Then Set rub = "TOPAGE"
    	'Wscript.Echo "Variable : " & wdo.ActiveDocument & "." & rub & "." & value
    	If tb(4) = "Toppage CR" Then Set rub = wdo.ActiveDocument.["TOPAGE"]
    	Wscript.Echo "Variable : " & rub.value
    Les lignes 1 et 2 sont tes derniers essais, la ligne 3 est celle que je te proposai, qui s’utiliserait à la façon de la ligne 4.
    Par contre je me perd entre wdoc et wdo, donc cela donnerai ? If tb(4) = "Toppage CR" Then Set rub = wdoc.["TOPAGE"] ?????
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    wdo est mon instance word, la valeur est "Microsoft Word"

    Je viens de tester, il m'a retourné une petite erreur de rien du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cet objet ne gère pas cette propriété ou cette méthode : 'ActiveDocument."Topage"'
    Où il suffit de retirer les " " pour avoir le résultat escompté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If tb(4) = "Toppage CR" Then Set rub = wdo.ActiveDocument.[TOPAGE]
    Je passe du coup la conversation en résolu en vous remerciant à nouveau pour vos suggestions et votre aide à tous
    :-)

  11. #11
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Bonjour le forum.

    Je me permet de m'auto-déterrer, de m'extirper des sujets résolus

    Le problème de base, a savoir accès à un objet en vbs, est résolu par cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdo.ActiveDocument.[Urgence] = tb(6)
    La combobox Urgence prend bien la valeur de tb(6) (qui est elle-même issue d'un split).

    Mais me replongeant dans ce script, je m'aperçois que c'est en fait une solution imparfaite.
    Mon objet Urgence est une combobox, qui contient des items.
    Il faudrait donc que je puisse me positionner (toujours en vbs) sur l'un de ces item.

    En VBA ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Urgence.ListIndex = U - 1 ' Positionne sur l'index 2

    Je n'arrive pas à accéder à la propriété de ma ComboBox depuis mon script vbs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdo.ActiveDocument.[Urgence.ListIndex] = 2
    Erreur : Cet objet ne gère pas cette propriété ou cette méthode: 'ActiveDocument.Urgence.ListIndex'
    Code : 800a01B6
    Source : Erreur d'exécution Microsoft VBScript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdo.ActiveDocument.[Urgence].[ListIndex] = 2
    Erreur : Impossible de définir la propriété ListIndex. Valeur de propriété non valide
    Code : 800a017C
    Source : Forms.ComboBox.1


    La propriété ListIndex ne semble donc pas pouvoir être appelée comme Text ou Value...


    Des idées seraient les bienvenues


    D'avance Merci !

  12. #12
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 177
    Points
    17 177
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdo.ActiveDocument.[Urgence].[Text] = wdo.ActiveDocument.[Urgence].[List(2)]
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  13. #13
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Bonjour, et merci pour cette réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdo.ActiveDocument.[Urgence].[Text] = wdo.ActiveDocument.[Urgence].[List(2)]
    J'avoue y avoir cru mais j'ai une autre erreur :
    Erreur : Cet objet ne gère pas cette propriété ou cette méthode: 'ActiveDocument.Urgence.list(2)
    Code : 800A01B6
    Source : Erreur d'exécution Microsoft VBScript
    En cherchant, Une solution semblait être de mettre un Set (vu qu'on travaille avec des objets), mais j'obtiens exactement la même erreur.

    J'avoue ne pas trop maitriser cette partie du VBS pour accéder aux objets d'un documents et à leur propriété, du coup je ne comprend pas trop l'erreur.

    A noter que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WScript.Echo wdo.ActiveDocument.[Urgence].[List(2)]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MSGBOX wdo.ActiveDocument.[Urgence].[List(2)]
    Donnent le même résultat

    Par contre, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MSGBOX wdo.ActiveDocument.[Urgence].[ListCount]
    Me renvoi un joli 0 ...

    Du coup ça m'a fait penser à un "léger détail" : la Combobox est alimenté par macro lorsque l'on clique dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub URGENCE_DropButtonClick()
    'Fonction de définition des valeurs possibles pour le champs URGENCE
      If Urgence.ListCount = 0 Then
        With Urgence
          .AddItem "1 - CRITIQUE"
          .AddItem "2 - ELEVEE"
          .AddItem "3 - MOYENNE"
          .AddItem "4 - BASSE"
        End With
      End If
     
    End Sub
    En testant l'affichage du nombre d'item en VBA j'ai également 0, sauf si je clique avant sur le @#~$¤ de bouton ....
    Dès que je clique dessus, fatalement, tout fonctionne à merveille.

    Là où je coince c'est pour activer au préalable la combobox : Urgence.Activate ou Urgence.Select ne fonctionnant pas.


    Toute suggestion sera appréciée

  14. #14
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Donc,


    La solution est


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wdo.Run "URGENCE_DropButtonClick" ' Exécute la macro qui va peupler la combobox
    wdo.ActiveDocument.[Urgence].[Text] = wdo.ActiveDocument.[Urgence].List(2) ' Affecte l'index 2 à la combobox




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

Discussions similaires

  1. [XL-2010] Tableaux Excel colle dans Word par VBa
    Par houstono92 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2014, 12h19
  2. Remplacer texte dans Word par Textbox avec scrollbar
    Par 31400 dans le forum VBA Word
    Réponses: 0
    Dernier message: 06/09/2011, 14h06
  3. Modifier images dans feuilXl par clic de souris (Excel2003)
    Par Jacdan dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/10/2008, 23h16
  4. impossible de modifier texte dans word
    Par Picotin dans le forum Word
    Réponses: 1
    Dernier message: 08/05/2008, 18h10

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