D'excel à word : piloter la couleur de fond d'un tableau [Résolu]

Signaler
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011
-
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011
-
Bonjour.

Je cherche à réaliser l'action suivante :

En fonction de la valeur contenue dans une cellule d'un tableur excel, je voudrais que la couleur d'arrière plan d'un tableau sous word soit changée.

Voici le code utilisé :

If Sheets("Resultats incertitudes").Range("C17") <= 5 Then
wrddoc.Tables(2).Cell(1, 1).Tables(1).Shading.BackgroundPatternColor = wdColorBrightGreen    
wrddoc.Tables(3).Shading.BackgroundPatternColor = wdColorBrightGreen
ElseIf Sheets("Resultats incertitudes").Range("C17") <= 7 Then
    wrddoc.Tables(2).Cell(1, 1).Tables(1).Shading.BackgroundPatternColor = wdColorOrange
    wrddoc.Tables(3).Shading.BackgroundPatternColor = wdColorOrange
Else
    wrddoc.Tables(2).Cell(1, 1).Tables(1).Shading.BackgroundPatternColor = wdColorRed
    wrddoc.Tables(3).Shading.BackgroundPatternColor = wdColorRed
End If


Le problème étant que quelle que soit la valeur prise apr la cellule, mon tableau sera invariablement colorié en noir ...

Une idée à propos de ce problème ?

11 réponses

Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

j'ai trouvé une solution peu élégante, mais qui a le mérite de marcher :

je remplace les constantes de type wdBlack/wdcolor par le code RGB équivalent.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Bonjour,
1) àon ne sait pas dans quel évènement tu as mis ce code.
2) toutes tes "constantes" de couleur montrées ici n'étant pas reliées à Word, elles ont bien évidemment les valeurs de VBA/Excel, c'est à dire 0 puisqu'inconnues de VBA/Excel et 0 = Noir !
On ne répètera jamais assez la nécessité d'utiliser option Explicit. Si tu l'avais fait, auraient immédiatement été dénoncées les variables 'et pas des "constantes", là..) :
- wdColorBrightGreen
- wdColorOrange
- wdColorRed




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
et de toutes manières :
même avec des points d'arrêt ou en exécutant pas à pas (ce que tu n'as manifestement pas fait non plus), tu te serais aperçu de la valeur 0
de chacune de ces variables/couleur. Et cela t'aurait permis de ne pas venir ici poser n'importe quelle question sans savoir ce qu'il y avait derrière !
Non ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

L'évenement lié suis le click sur un button qui ouvre un document word (au format prédéfini) à partir d'un userform ouvert sous excel : je vous passe les détails du code qui ne nous intéressent pas ici.

Le wrddoc représente donc le document word déjà ouvert.

En effet vu comme ça ça a l'air d'être un problème de savoir à quelle bibliothèque vba fait appel.

Je crois avoir plutôt bien cerné l'idée comme quoi je ne code pas comme il faut. ca me motive aussi pas mal à me débrouiller par moi même en voyant comment je suis reçu quand je pose une banale question.

Maintenant s'il y avait moyen, éventuellement, d'envisager de solutionner mon problème plutôt de juste dire ce qui ne va pas ça m'arrangerait pas mal.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Ah bon ?
Tu n'as pas eu de solution ?
Tu en as eu deux pour le prix d'une, me semble-t-il, pourtant (en utilisant autant de neurones que de solutions, soit deux)!
- soit tu affectes une couleur VBA/Excel, mais avec une constante VBA/Excel
- soit tu affectes une couleur VBA/Word, mais en précisant qu'elle est le l'objet Word ouvert !
Je regrette que réfléchir te fatigue. Désolé pour toi ! Mais c'est comme cela, avec moi : je force à réfléchir un peu (rien de tout ce qui n'irait pas dans ce sens ne saurait être ma tasse de thé).
Mais si tu n'aimes pas, pas de problèmes ===>> continue seul, donc
Bonne chance.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
et au passage (quand même !) si l'on avait vu le code que tu penses ne pas nous intéresser, j'aurais probablement été à même de te dire comment utiliser les constantes couleurs de l'objet ouvert. Mais ça n'a pas été le cas . Te reste à ce stade, donc (car je ne reviendrai plus dans la présente discussion, puisque prise ainsi) la possibilité d'utiliser les constantes "en cours" (celles de VBA/Excel, donc.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

Soit, autant ne pas épiloguer, je vais me démerder seul.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Et avec ce que je t'ai dit, les efforts ne seront pas "démesurés", non ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

Oui, j'arrive à présent à cerner le problème, cependant il me manque la méthode pour accéder aux librairies de constantes/procédures de word depuis le vb excel, rien de plus ...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Bis repetita ? OK ===>
si l'on avait vu le code que tu penses ne pas nous intéresser, j'aurais probablement été à même de te dire comment utiliser les constantes couleurs de l'objet ouvert. Mais ça n'a pas été le cas

Cela ne te parle pas non plus ?
Et as-tu au moins profité de ce que je t'ai dit plus haut, à propos de l'utilisation de Option Explicit (qui t'aurait permis de venir ici en meilleure connaissance de cause) ?
Le problème semble être que tu viens à la fois demander de l'aide, mais n'a apparemment pas la moindre intention de participer, d'écouter, etc...
Et voilà comment on en arrive au 10ème message pour une affaire vraiment "banale" (comme tu dis).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
5 décembre 2011

Soit.

Private Sub CommandButton1_Click()

Dim wrdapp As Object
Dim racine As String

racine = ActiveWorkbook.Path

On Error Resume Next
Set wrdapp = GetObject(, "Word.Application")    'on vérifie si word n'est pas déjà ouvert, si c'est le cas on le ferme
On Error GoTo 0
If wrdapp Is Nothing Then
    Err.Clear
Else
    On Error Resume Next
    DisplayAlerts = False
    wrdapp.Quit False 'si ouvert, on ferme toutes les applications word
    DisplayAlerts = True
    If Err 0 Then trouve True
    On Error GoTo 0
End If

    Set wrdapp = CreateObject("Word.Application")
    Set wrddoc = wrdapp.Documents.Open(racine & "\EVALUATION DES INCERTITUDES DE MESURES.dot")
    wrdapp.ActiveDocument.SaveAs Filename:=(Nomemplacement & "Incertitudes_" & Emplacement & ".doc")
    
wrddoc.Tables(1).Cell(2, 1).Range.Font.Name = "Tahoma"
wrddoc.Tables(1).Cell(2, 1).Range.Font.Size = 16
wrddoc.Tables(1).Cell(2, 1).Range.Text = "Jaugeage : " & Emplacement

wrddoc.Tables(2).Columns(1).Cells(1).Range.inlineshapes.AddPicture Filename:="C:\WINDOWS\Temp\imageTemp1.gif", linktofile:=False, savewithdocument:=True    'on insère la première image
wrddoc.Tables(2).Columns(2).Cells(1).Range.inlineshapes.AddPicture Filename:="C:\WINDOWS\Temp\imageTemp2.gif", linktofile:=False, savewithdocument:=True
wrddoc.Tables(2).Columns(2).Cells(2).Range.inlineshapes.AddPicture Filename:="C:\WINDOWS\Temp\imageTemp3.gif", linktofile:=False, savewithdocument:=True

With wrddoc.inlineshapes(wrddoc.inlineshapes.Count)
    .Borders.enable = False
End With
wrddoc.Tables(2).Cell(1, 1).Tables(1).Cell(1, 3).Range.Text = Label28.Caption

wrddoc.Tables(3).Cell(1, 2).Range.Text = Label4.Caption
wrddoc.Tables(3).Cell(1, 4).Range.Text = Label5.Caption

wrddoc.Tables(4).Cell(2, 3).Range.Text = Label18.Caption
wrddoc.Tables(4).Cell(3, 3).Range.Text = Label19.Caption
wrddoc.Tables(4).Cell(4, 3).Range.Text = Label20.Caption
wrddoc.Tables(4).Cell(5, 3).Range.Text = Label21.Caption
wrddoc.Tables(4).Cell(6, 3).Range.Text = Label22.Caption
wrddoc.Tables(4).Cell(7, 3).Range.Text = Label23.Caption
wrddoc.Tables(4).Cell(8, 3).Range.Text = Label24.Caption
wrddoc.Tables(4).Cell(9, 3).Range.Text = Label25.Caption
wrddoc.Tables(4).Cell(10, 3).Range.Text = Label26.Caption
wrddoc.Tables(4).Cell(11, 3).Range.Text = Label51.Caption

'If Sheets("Resultats incertitudes").Range("C17") <= 5 Then
    'wrddoc.Tables(2).Cell(1, 1).Tables(1).Shading.BackgroundPatternColor = wdWhite
    'wrddoc.Tables(3).Shading.BackgroundPatternColor = wdWhite
'Else
    'wrddoc.Tables(2).Cell(1, 1).Tables(1).Shading.BackgroundPatternColor = wdBlack
    'wrddoc.Tables(3).Shading.BackgroundPatternColor = wdBlack
'End If

wrdapp.Visible = True

End Sub


Pour anticiper certains commentaires tout de même :
-oui c'est mal codé
-oui c'est mal commenté
-oui ça ressemble à rien

mais à part la question des couleurs, ça marche.