Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2008, 11h09   #1
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mai 2008
Messages : 6
Points : 2
Points : 2
Par défaut [Macro VB - Word] Changer la couleur d'un mot

Bonjour à tous,

Voilà ce que j'aimerais faire, sachant que le VB est pour moi est très récent...

J'ai un tableau dans Word, la première colonne contient des mots, la 2e des "0" et des "1" (issus d'un publipostage pour signifier la présence ou l'absence de l'exposition professionnelle).

Ex :

Citation:
1ere col / 2e col :
Amiante 1
Silice 0
HAP 1
Diesel 0
Beryllium 0
Chrome 1
Nickel 0
CoW 0
Cadmium 0
BCME 0
Arsenic 0
Peinture 0
J'aimerais à chaque fois qu'il y a "1" que le facteur associé s'écrive en rouge par exemple (dans l'exemple au dessus : Amiante, HAP et Silice deviendrait rouge).

Citation:
1ere col / 2e col :
Amiante 1
Silice 0
HAP 1
Diesel 0
Beryllium 0
Chrome 1
Nickel 0
CoW 0
Cadmium 0
BCME 0
Arsenic 0
Peinture 0
Merci d'avance pour votre aide.
dodors57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 12h11   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Le principe à utiliser est le suivant, on va en premier lieu vérifier le contenu de la cellule de la seconde colonne.
Si cette valeur est égale à 1, on va colorer le texte de la cellule de la première colonne.

Ce qui nous intéresse, c'est le nombre de lignes.
Ce nombre de ligne nous allons le stocker dans la variable i

Dans une cellule, on a toujous deux caractères inutiles.
On va les supprimer avec la fonction txtNet, on mesure la longueur de la chaîne, on lui enlève 2 et on retire les caractères de la cellules sans les deux derniers.

On va faire une boucle sur les cellules de la seconde colonne.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Sub colo()
Dim oTbl As Table
Dim i As Integer, j As Integer
 
Set oTbl = ActiveDocument.Tables(1)
i = oTbl.Rows.Count
 
For j = 1 To i
    If txtNet(oTbl.Cell(j, 2).Range.Text) = 1 Then oTbl.Cell(j, 1).Range.Font.Color = wdColorRed
 
 
Next j
 
End Sub
 
Function txtNet(stTemp As String) As String
txtNet = Left(stTemp, Len(stTemp) - 2)
 
End Function
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 13h20   #3
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mai 2008
Messages : 6
Points : 2
Points : 2
Merci pour ta réponse !!

J'ai bien compris le concept !

Mais j'ai une erreur d'execution du code 'erreur d'execution 13' : incompatibilité de type sur cette commande :
Code :
If txtNet(oTbl.Cell(j, 2).Range.Text) = 1 Then
Mon tableau aurait-il un problème ?

Merci !
dodors57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 14h04   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Peux tu mettre ton document sur le forum.

c'est le contenu du tableua qui ne serait pas comme je le pense.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 14h46   #5
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mai 2008
Messages : 6
Points : 2
Points : 2
Bien sur !

Voir doc ci-joint !

PS : J'ai mis les 2 premières fiches. Mais j'en ai 150 comme cela !

C'est toujours le même concept, c'est juste les 2 premières lignes avec les identifiants qui change !

Merci beaucoup !
Fichiers attachés
Type de fichier : doc Imputabilité_test.doc (100,0 Ko, 7 affichages)
dodors57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 15h34   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Je suppose que toutes les fiches se suivant !

Dans ce cas, c'est l'indice de la table qui n'était pas bon!

On peut envisager de traiter toutes les tables du document.

Code :
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
Sub colo()
Dim oTbl As Table
Dim i As Integer, j As Integer
 
 
For Each oTbl In ActiveDocument.Tables
 
If UCase(txtNet(oTbl.Cell(1, 1).Range.Text)) = "NUISANCE" Then
Debug.Print "ici"
    i = oTbl.Rows.Count
 
 
    For j = 1 To i
    Debug.Print j
    If txtNet(oTbl.Cell(j, 2).Range.Text) = "1" Then oTbl.Cell(j, 1).Range.Font.Color = wdColorRed
 
 
    Next j
End If
Next oTbl
 
End Sub
 
Function txtNet(stTemp As String) As String
txtNet = Left(stTemp, Len(stTemp) - 2)
 
End Function
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h19   #7
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mai 2008
Messages : 6
Points : 2
Points : 2
Que dire...

Merveilleux !

Merci 1000 fois !!

C'est là que je me dis que vraiment, j'suis mauvaise de chez mauvaise en VB, faut vraiment que je m'y mette...
dodors57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web