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 14/08/2007, 16h43   #1
Invité régulier
 
Inscription : mai 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 42
Points : 9
Points : 9
Par défaut Mettre en couleur du code [résolu]

Bonjour, je suis débutant en macro sous word (merci d'être indugent ^^)

Voila, j'aimerais

1 - pour chaque paragraphe un à un d'un texte word
tester si son style est le style "code_source"

2 - si son style est "code_source"
pour chaque ligne une par une et tester s'il y a le caractere #

3 - s'il y a le caractère #
selectionner ce caractère # et le reste de la ligne

4 - mettre cette selection de la couleur verte


J'ai bô aller dans différent type d'help, je dois avouer que j'ai un peu de mal.

J'ai quelques pistes
1- ActiveDocument.Paragraphs pour selectionner le doc, par contre pour connaitre son type ???
2- Je n'arrive pas faire pour chaque ligne ..
3- normalement avec Trim(LIGNE) = "#" ça devrait le faire, mais pour selectionner la fin de texte je vois pas trop
4- une fois selectionner, c'est facile :
Code :
Selection.Font.Color = wdColorSeaGreen

Voila, si quelqu'un pouvais m'indiquer les elements qui me serait nécéssaire pour faire cet algo, ce serait vraiment sympas.
J'espere que j'en ai dit assez ce ce que je voulais faire.
lathenor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 17h13   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Ton caractère # où se trouve-t-il dans ta ligne de texte ?
Si il est au début, on peut le jouer.
Si c'est pas le cas, c'est un pneu plus dur( moins de pression c'est mieux).
__________________
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 14/08/2007, 17h27   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Ce code ne fonctionne que si # est le premier caractère de la ligne et qu'il est suivi par un espace.
Si ce n'est pas le cas, il faut faire une boucle supplémentaire pour les différents mots de la phrase.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Sub codeCouleur()
Dim p As Paragraph
 
For Each p In ActiveDocument.Paragraphs
p.Range.Select
If Trim(Selection.Words(1)) = "#" Then
    Selection.Font.Color = wdColorDarkRed
    Debug.Print "OK"
End If
 
Next p
 
 
 
End Sub
__________________
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 16/08/2007, 01h17   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Regarde ici, tu as la solution pour sélectionner du texte entre deux balises où qu'elles se trouvent. La solution passe par ExtendMode, qui permet, à partir d'une balise, d'étendre la sélection jusqu'à la suivante.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h40   #5
Invité régulier
 
Inscription : mai 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 42
Points : 9
Points : 9
Merci, Heureux-oli pour ton code,

J'ai repris la même base et je l'ai modifié pour repondre plus a mes attentes, mais il me manque un element pour finir mon objectif (l'element 1 de mon algo).

Comment connaitre le "STYLE" courant et savoir q"' on est dans le "Style : normal" ou le "style : TITRE 1" ou en ce qui me concerne le "Style : CODE_SOURCE", car je voudrais que ma macro soit utilisée uniquement dans ce "style".

Si vous avez des éléments de réponses je vous remercie d'avance !

voici le code modifié :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub codeCouleur()
    Dim p As Paragraph
    Dim i As Integer
    Dim nbword As Integer
    Dim commentaire As Integer
 
    For Each p In ActiveDocument.Paragraphs
    p.Range.Select
 
        nbword = Selection.Words.Count
        i = 1
        commentaire = 0
        Do While nbword <> i
            If commentaire = 1 Then
                Selection.Words(i).Font.Color = wdColorSeaGreen
            ElseIf Trim(Selection.Words(i)) = "#" Then
                commentaire = 1
                Selection.Words(i).Font.Color = wdColorSeaGreen
            End If
            i = i + 1
        Loop
    Next p
End Sub
lathenor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h57   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Voilà la code qui permet de déterminer le style de ton paragraphe.


Code :
1
2
3
4
5
6
7
8
9
Sub styleShow()
Dim p As Paragraph
 
For Each p In ActiveDocument.Paragraphs
p.Range.Select
Debug.Print Selection.Style
Next p
 
End Sub
On aurait alors
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 codeCouleur()
    Dim p As Paragraph
    Dim i As Integer
    Dim nbword As Integer
    Dim commentaire As Integer
 
 
 
    For Each p In ActiveDocument.Paragraphs
    p.Range.Select
    If selection.style = "Normal" Then
        nbword = Selection.Words.Count
        i = 1
        commentaire = 0
        Do While nbword <> i
            If commentaire = 1 Then
                Selection.Words(i).Font.Color = wdColorSeaGreen
            ElseIf Trim(Selection.Words(i)) = "#" Then
                commentaire = 1
                Selection.Words(i).Font.Color = wdColorSeaGreen
            End If
            i = i + 1
        Loop
    Next p
   End If
End Sub
__________________
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 05/10/2007, 15h05   #7
Invité régulier
 
Inscription : mai 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 42
Points : 9
Points : 9
Géant, génialisme !

Un grand merci !
lathenor 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 04h42.


 
 
 
 
Partenaires

Hébergement Web