WORD pour les fortiches du rechercher/remplacer

C@thy

XLDnaute Barbatruc
Bonsouarrrr le forum,

je suis bien perplexe...:eek: j'ai un texte comportant des dates sous la forme
10/12/2009 et je voudrais l'écrire en français dans le texte, càd 10 décembre 2009 (quand c'est 1, je veux écrire 1 décembre),
et... je ne sais comment faire
macro? pas macro?:confused: zat iz ze couestion

Merci à tous ceux qui pourraient éclairer ma lanterne.

Edit j'ai aussi des dates du style 01-janv-1980 10-déc-1998, même question : pour les écrire en français.
Merci à vous

Bonne soirée

C@thy
 
Dernière édition:

Gelinotte

XLDnaute Accro
Re : WORD pour les fortiches du rechercher/remplacer

Allô!

Je ne voudrais pas être un oiseau de malheur, mais je crois que tu vas devoir retaper tes dates à la main. Sinon, il faudrait aller vers une macro.

S'il y a une autre solution, j'aimerais bien la lire :D

De plus, si une date arrive en fin de ligne, il faut changer les espaces contre des espaces insécables (CTRL+MAJ+Espace). Sinon une partie de la date pourrait se retrouver sur l'autre ligne. Ce qui n'est pas très beau et moins facile à lire rapidement.

Perdrix
 

C@thy

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

Bonjour Gelinotte,

merci de ta réponse.
Je crois bien qu'il y a une soluce, mais sans doute par macro, je cherche...

j'ai essayé un truc du style
Sub MacroDate4Test()
mois = Array("janvier", "février", "mars", "avril", "mai", "juin", _
"juillet", "août", "septembre", "octobre", "novembre", "décembre")
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find

For i = 1 To 12
Selection.HomeKey Unit:=wdStory
.ClearFormatting
.Replacement.ClearFormatting
.Text = .Text = "([0-9]{2})/([0-9]{2})/([0-9]{4})"
.Replacement.Text = "([0-9]{2})/CStr(mois(i))/([0-9]{4})"
.MatchCase = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
Next i
End With
End Sub

mais c'est pas ça du tout...

Biz et bonne journée

C@thy
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

Bonjour

cela semble OK
Code:
Option Base 1

Sub Macrodate1()
'
mois = Array("janvier", "février", "mars", "avril", "mai", "juin", _
"juillet", "août", "septembre", "octobre", "novembre", "décembre")
    
    Selection.Find.ClearFormatting
    With Selection.Find
        For i = 1 To 12
        Selection.HomeKey Unit:=wdStory
        Do
            .ClearFormatting
            .Text = "([0-9]{2})/" & IIf(i < 10, "0" & i, i) & "/([0-9]{4})"
            .Forward = True
            .Wrap = wdFindContinue
            .MatchCase = True
            .MatchWildcards = True
            .Execute
        If .Found = True Then
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.MoveRight Unit:=wdCharacter, Count:=2
            Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
            Selection.TypeText Text:=" " & CStr(mois(i)) & " "
        End If
        Loop Until .Found = False
        Next i
    End With
End Sub
 

Gelinotte

XLDnaute Accro
Re : WORD pour les fortiches du rechercher/remplacer

Allô!

Pour la partie xx/xx/xxxx ça fonctionne moins un coquille; i.e le mois compte un mois de trop. Ce qui peut être corrigé par la ligne
Selection.TypeText Text:=" " & CStr(mois(i - 1)) & " "

Où on inscrit i-1

Pour les dates du style : 01-jan-1980. Ça va prendre d'autres codes.

Merci pour ce bout qui fonctionne bien. :D

Perdrix
 

C@thy

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

Un grand MERCI à vous deux. Je teste tout ça.

Euh.... justement à propos des points, j'ai une autre question

Je fais du copier/coller depuis Excel, et donc parfois (souvent, même), je me retrouve avec une minuscule après le point.

Auriez-vous une idée pour la mettre en majuscule???

remplacer ([a-z])([;:\?!]) par \1 \2

permet d'ajouter un espace avant la ponctuation
donc, un truc du style (.[az] [032^s](je ne connais pas le code de l'espace insécable)

Merciiiiiiiiiiiiiiiiiiii et bravo pour la réponse ci-dessus

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

J'ai testé, ça marche nickel chrome, merci à vous deux pour votre collaboration.

J'apprends beaucoup avec vous, je n'avais pas pensé qu'on pouvait ajouter une condition derrière la recherche.
Justement, à ce propos, si on veut rechercher 01/ ou bien 1/ comment konfé?
j'ai essayé {1;} mais a marche pô!

Question subsidiaire : c'est koi option Base 1???

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

Eurêkaaaaa! Ca y est, j'ai compris le coup du -1 (ouf! il était temps!)
Le 1er argument d'une table est à la position 0, du coup il faudrait mettre :
mois = Array("", "janvier", "février", "mars", "avril", "mai", "juin", _
"juillet", "août", "septembre", "octobre", "novembre", "décembre"), c'est plus propre.

C@thy
 

chris

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

Bonjour

Pour la partie xx/xx/xxxx ça fonctionne moins un coquille; i.e le mois compte un mois de trop. Ce qui peut être corrigé par la ligne
Selection.TypeText Text:=" " & CStr(mois(i - 1)) & " "

Avec ma ligne
Option Base 1

Cela marche sans erreur chez moi

Cathy : Option base 1 sert justement à dire que l'array part de 1 et non 0

Sinon tu peux aussi faire ta boucle de 0 à 11
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

re
si on veut rechercher 01/ ou bien 1/ comment konfé?

Je suis nulle en expressions régulières mais je pense qu'il faudrait peut-être trouver 01 ou espace suivi de 1.

Pour les mois as-tu toujours 2 chiffres ?

Pour le second cas je pense qu'avec un array des mois abrégés pour alimenter le texte à rechercher tu peux facilement adapter mon code.

Au fait je manque à tous mes devoirs : bises à toi.
 

chris

XLDnaute Barbatruc
Re : WORD pour les fortiches du rechercher/remplacer

Bonjour

Je vais m'y mettre aux expressions régulières !
Ça marche !
Sous réserve que les mois soient bien sur 2 chiffres
Code:
Option Base 1
Sub Macrodate1()
'
mois = Array("janvier", "février", "mars", "avril", "mai", "juin", _
"juillet", "août", "septembre", "octobre", "novembre", "décembre")
    
    Selection.Find.ClearFormatting
    With Selection.Find
        For i = 1 To 12
        Selection.HomeKey Unit:=wdStory
        Do
            .ClearFormatting
            .Text = "([0-9]{1;})/" & IIf(i < 10, "0" & i, i) & "/([0-9]{4})"
            .Forward = True
            .Wrap = wdFindContinue
            .MatchCase = True
            .MatchWildcards = True
            .Execute
        If .Found = True Then
            ddate = 10 - Len(Selection)
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.MoveRight Unit:=wdCharacter, Count:=2 - ddate
            Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
            Selection.TypeText Text:=" " & CStr(mois(i)) & " "
        End If
        Loop Until .Found = False
        Next i
    End With
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 198
Messages
2 086 114
Membres
103 121
dernier inscrit
SophieS