Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft 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 24/07/2011, 19h21   #1
Invité régulier
 
Homme JEAN-YVES
Consultant fonctionnel
Inscription : juillet 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme JEAN-YVES
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Service public

Informations forums :
Inscription : juillet 2011
Messages : 9
Points : 5
Points : 5
Par défaut conversion d'une macro word 2000 en 2003

Bonjour,

Je suis novice sur le forum, j'espère être suffisamment explicite.
Voici mon problème, j'ai créé une macro sous word 2000 qui ne fonctionne plus avec word 2003 ou 2007.

la voici:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub ConvertConstats()
' Surligne Constats.
Dim i, pos1, pos2 As Integer
Dim vrange As Range
With ActiveDocument
For i = 0 To .Characters.Count - 1
If i < .Characters.Count Then pos1 = i
If pos1 + 9<= .Characters.Count Then
pos2 = pos1 + 9
Else
pos2 = pos1
End If
Set vrange = ActiveDocument.Range(pos1, pos2)
If vrange.Text = "Constats." Or vrange.Text = "constats" Then
vrange.Font.Underline = wdUnderlineSingle
End If
Next i
End With
End Sub
Le but tout simple est de SURLIGNER tous les mots constats d'un document.
Bien entendu ce n'est pas mon seul mot.

J'ai essayé de le faire avec une nouvelle macro trouver sur ce forum mais les mises en forme des diffèrents mots se mélangent...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Textes()
'souligner textes
Selection.HomeKey unit:=wdstory
Selection.Find.ClearFormatting
 With Selection.Find
    .Format = False
    .Text = "Textes"
.Replacement.Text = "Textes"
    .Forward = True
    .Replacement.Font.Underline = wdUnderlineSingle
    .Execute Replace:=wdReplaceAll
End With
End Sub
Merci pour votre aide.
JYPIQ62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 20h50   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 594
Points : 1 594
Envoyer un message via MSN à carden752
Bonjour,

Déjà une remarque sur la déclaration de variables
Citation:
Envoyé par JYPIQ62
Code :
Dim i, pos1, pos2 As Integer
i et pos1 sont de types variants, seul pos2 est un entier

La syntaxe correcte est celle-la
Code :
Dim i As Integer, pos1 As Integer, pos2 As Integer
Citation:
Envoyé par JYPIQ62
J'ai essayé de le faire avec une nouvelle macro trouvée sur ce forum mais les mises en forme des diffèrents mots se mélangent...
Que veux-tu dire par là, le texte n'est pas sensible à la casse ni au format précédent ?
Pourtant cette macro ne fait bien que remplacer et souligner le mot texte et écrire "Textes" exactement comme cela.
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 20h58   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut,

Si c'est un simple soulignement des mots trouvés, le plus simple est d'utiliser l'enregistreur de macro et d'utiliser la macro obtenue.

Un exemple obtenu :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Macro1()
'
' Macro1 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Underline = wdUnderlineThick
    With Selection.Find
        .Text = "metus"
        .Replacement.Text = "metus"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
De plus la fonction recherche et remplacement de Word est très puissante, ce qui rend le code beaucoup plus rapide.

A toi de voir.
__________________
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 25/07/2011, 19h51   #4
Invité régulier
 
Homme JEAN-YVES
Consultant fonctionnel
Inscription : juillet 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme JEAN-YVES
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Service public

Informations forums :
Inscription : juillet 2011
Messages : 9
Points : 5
Points : 5
Par défaut En fait voici la macro complète

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
28
29
30
31
32
33
34
35
36
37
Sub Miseenformedoc()
'
' mise en forme doc'
    Application.Run MacroName:="ConvertLOARIAL11"
   Application.Run MacroName:="Texte"
   Application.Run MacroName:="Constats"
End Sub
 
Sub Textes()
'souligner textes
Selection.HomeKey unit:=wdstory
Selection.Find.ClearFormatting
 With Selection.Find
    .Format = False
    .Text = "Textes"
    .Replacement.Text = "Textes"
    .Forward = True
    .Replacement.Font.Underline = wdUnderlineSingle
    .Execute Replace:=wdReplaceAll
End With
End Sub
Sub Constats()
' souligner et mettre en gras et aligner à gauche constats
Selection.HomeKey unit:=wdstory
Selection.Find.ClearFormatting
 
With Selection.Find
    .Format = False
    .Text = "Constats."
.Replacement.Text = "Constats."
    .Forward = True
    .Replacement.Font.Underline = wdUnderlineSingle
    .Replacement.Font.Bold = wdToggle
    .Replacement.ParagraphFormat.Alignment = wdAlignParagraphLeft
    .Execute Replace:=wdReplaceAll
End With
End Sub
Au final en executant la macro des fois elle met "textes" en gras mais aussi parfois elle remplace également le mot par constats... et souligne constats

Et pour le coup ce n'est pas du tout ce que j'ai programmé. Est-ce un bug de mon micro?
JYPIQ62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 20h29   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut,

Si ce qui te tracasses est de faire tourner plusieurs fois la macro avec des mots différents, tu peux faire une boucle dans la même macro ou une boucle qui passe en paramètre le mot de recherche pour une fonction ou sub.

Voilà ce que ça pourrait donner :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Miseenformedoc()
'
' mise en forme doc'
RemplacementTextes StrAChercher:="Textes"
RemplacementTextes strachcercher:="Constats."
 
 
End Sub
 
Sub RemplacementTextes(StrAChercher As String)
'souligner textes
Selection.HomeKey unit:=wdStory
Selection.Find.ClearFormatting
 With Selection.Find
    .Format = False
    .Text = StrAChercher
    .Replacement.Text = StrAChercher
    .Forward = True
    .Replacement.Font.Underline = wdUnderlineSingle
    .Execute Replace:=wdReplaceAll
End With
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 25/07/2011, 22h01   #6
Invité régulier
 
Homme JEAN-YVES
Consultant fonctionnel
Inscription : juillet 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme JEAN-YVES
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Service public

Informations forums :
Inscription : juillet 2011
Messages : 9
Points : 5
Points : 5
Par défaut Tout à fait merci ça fonctionne

merci
JYPIQ62 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 11h51.


 
 
 
 
Partenaires

Hébergement Web