Rechercher une cellule dans un tableau word puis appliquer un style

Signaler
Messages postés
19
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2014
-
Messages postés
19
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2014
-
Bonjour,
effectuant une mise à niveau de documents, je me retrouve dans un cas ou une tâche automatisée m'économiserais bien des efforts inutiles. J'ai quelques milliers de tableaux d'une longueur assez conséquente à mettre en forme.

Et ne m'y connaissant pas encore assez malgré les essais, les recherches que j'ai effectuées et les aides que vous m'avez déjà apportées, je me vois vous demander à nouveau des conseils pour développer cette macro.

Dans la première colonne il y a des cellules non-vides, quand elles sont non-vides, je dois mettre en forme toute la ligne avec un gris 25%, le texte en gras avec le style "Style 1" (qui est un style fait maison... avec une police précise).
Dans le cas ou la cellule est vide, il ne faut pas appliquer de style, en gros, laisser tel quel.

Voici un exemple, avec une ligne en gris, et une ligne ou la première cellule n'est pas vide mais où le style n'a pas encore été appliqué... Si la colonne n'est pas vide, elle contient au moins le caractère '_'.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 11" /><meta name="Originator" content="Microsoft Word 11" /><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Ctni%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
--></style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->Test_00001

, Ouverture de l'objet par le réseau.

, -

, Failed

, ----
 , Etat initial :

 , Objet fermé.,  , ----
 , Ouverture de l'objet par réseau., L interface YYY doit retomber.,  , ----
Test_00002, Fermeture de l'objet par l'opérateur., -, OK, ----
 , Etat initial :

 , Objet ouvert.,  , ----
 , Fermeture de l'objet par l'opérateur., L interface XXX doit retomber.,  

Si ce n'est pas possible, tant pis, je ferai tout manuellement...

Je vous remercie par avance,

brau

3 réponses

Messages postés
19
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2014

Je m'aperçois que la première ligne du tableau avec le texte en gras n'apparaît pas en gris...
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Tu pourrais faire un filtre (non vide) sur la première colonne.
Rows(2).AutoFilter Field:=1, Criteria1:="<>" ' ligne 2 ou autre

Tu sélectionnes toutes les cellules et tu leur apposes le format nécessaire.
cells.font.colorindex = ce que tu veux (Integer)
cells.font.name = "ce que tu veux"  (String)
....

Ensuite tu enlèves le filtre et le tour est joué.

Je pense que c'est plus rapide que de passer par les boucles...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
19
Date d'inscription
mardi 14 octobre 2008
Statut
Membre
Dernière intervention
15 décembre 2014

c'est une idée assez intéressante, je la mets en pratique demain!
merci pour cette réponse!