Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

WORD pour les fortiches du rechercher/remplacer

C@thy

XLDnaute Barbatruc
Bonsouarrrr le forum,

je suis bien perplexe... 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? 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

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.

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:

Gelinotte

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

Allô!

Excuse-moi Cris, je n'ai pas importé la ligne "Option base 1", c'est pour cela que ça ne fonctionnait pas correctemenet.

Désolé de mon erreur.

Perdrix
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…