Macro pour insérer espace insécable dans toutes mes dates.

Le
Souriane
Je veux créer une macro qui recherche toutes les dates qui peuvent se
trouver dans un document et insère un espace insécables entre la date,
le mois et l'année.

ex : 31[ ]mai[ ]2009

J’ai beau chercher sur le net, je ne trouve pas cette macro dont je ne
suis certainement pas la première à y penser!

Merci!

Souriane
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #19313221
Bonjour Souriane

Je veux créer une macro qui recherche toutes les dates qui peuvent se
trouver dans un document et insère un espace insécables entre la date,
le mois et l'année.

ex : 31[ ]mai[ ]2009

J’ai beau chercher sur le net, je ne trouve pas cette macro dont je ne
suis certainement pas la première à y penser!



Probablement que si, que vous êtes la première.
Ça risque d'ailleurs de vous poser des problèmes dans votre mise en
forme.
Ce sont des dates sous forme de texte ou des champs ?

Si c'est du texte, il faudrait balayer tout le texte, voire tous les
articles et faire un rechercher / remplacer de chr(32)& "janvier" &
chr(32) par chr(160)& "janvier" & chr(160)
pareil pour février etc.
Idem pour les noms avec une majuscule ou en majuscules.
Ça peut faire un bel exercice de programmation si on ne veut pas
aligner des lignes de code, j'allais dire "bêtement", mais parfois le
bêtement est le plus efficace.

[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ] >



--
A+
Jary
Le #19321341
Bonjour,

Ci-dessous le code d'une macro qui fait ce que vous souhaitez et que
j'utilise quotidiennement depuis plusieurs années.
Je précise qu'écrivant toujours les mois en minuscules, cette macro n'a pas
été prévue pour rechercher les mois
comportant une ou plusieurs capitales.

Sub DateInsécable()
Dim i As Byte
With Selection.Find
For i = 1 To 12
.Execute Format$(DateSerial(Year(Now), i, 1), " mmmm "), True, , , , , ,
wdFindContinue, _
False, sInsécable + Format$(DateSerial(Year(Now), i, 1), "mmmm") +
sInsécable, wdReplaceAll
Next i
End With
End Sub

En espérant qu'elle vous sera utile.
Cordialement.
Jary





"Souriane"
Je veux créer une macro qui recherche toutes les dates qui peuvent se
trouver dans un document et insère un espace insécables entre la date,
le mois et l'année.

ex : 31[ ]mai[ ]2009

J’ai beau chercher sur le net, je ne trouve pas cette macro dont je ne
suis certainement pas la première à y penser!

Merci!

Souriane
Souriane
Le #19388961
Merci, mais tout ce que ça fait, c'est d'enlever tous les espaces des
dates...! Y-t-il un erreur dans le code ou j'ai pas compris quelque
chose?

Geo, je ne figure pas comment le faire dans le chercher remplacer le
"chr".

Merci!


On 12 mai, 18:04, "Jary"
Bonjour,

Ci-dessous le code d'une macro qui fait ce que vous souhaitez et que
j'utilise quotidiennement depuis plusieurs années.
Je précise qu'écrivant toujours les mois en minuscules, cette macro n 'a pas
été prévue pour rechercher les mois
comportant une ou plusieurs capitales.

Sub DateInsécable()
Dim i As Byte
With Selection.Find
  For i = 1 To 12
    .Execute Format$(DateSerial(Year(Now), i, 1), " mmmm "), True, , , , , ,
wdFindContinue, _
     False, sInsécable + Format$(DateSerial(Year(Now), i, 1), "mm mm") +
sInsécable, wdReplaceAll
 Next i
End With
End Sub

En espérant qu'elle vous sera utile.
Cordialement.
Jary


Geo
Le #19390031
Bonjour

Merci, mais tout ce que ça fait, c'est d'enlever tous les espaces des
dates...! Y-t-il un erreur dans le code ou j'ai pas compris quelque
chose?



La solution de Jary est intéressante, c'est astucieux.
Amha il manque un
dim sInsécable as string
sInsécable = Chr(160)
en début de macro.

--
A+
Souriane
Le #19390591
Super! Ça fonctionne à 100%. Je suis très très contente!

Merci Geo (et Jary aussi!!)
Souriane

On 22 mai, 12:03, Geo

La solution de Jary est intéressante, c'est astucieux.
Amha il manque un
dim sInsécable as string
sInsécable = Chr(160)
en début de macro.

--
A+


Geo
Le #19391011
Bonjour

Super! Ça fonctionne à 100%. Je suis très très contente!



En plus c'est un très bon exercice d'essayer de comprendre comment ça
marche.

Et hop, Jary dans le cargo Russe pour le Québec !

--
A+
Jary
Le #19417931
Bonjour,

Effectivement, la macro ne pouvait pas fonctionner car j'avais oublié dans
un module ad hoc un :
Option Explicit
Public Const sInsécable = " "

Il faut dire que j'utilise cette macro, faite par mon fils aîné, depuis
tellement longtemps.
La correction de Geo donne plus d'autonomie à la macro.

Si cela en intéresse certains j'ai une autre macro qui insère des espaces
insécables
dans les expressions juridiques comme article L. 32, article R. 10.

Jary

"Geo"
Bonjour

Merci, mais tout ce que ça fait, c'est d'enlever tous les espaces des
dates...! Y-t-il un erreur dans le code ou j'ai pas compris quelque
chose?



La solution de Jary est intéressante, c'est astucieux.
Amha il manque un
dim sInsécable as string
sInsécable = Chr(160)
en début de macro.

--
A+




Circé
Le #19419801
Bonjour Jary,
Jary a exprimé avec précision :


Si cela en intéresse certains j'ai une autre macro qui insère des espaces
insécables
dans les expressions juridiques comme article L. 32, article R. 10.



Ta macro est d'ores et déjà dans la faq de ce forum.
http://faqword.fr/index.php/faq/vba-solutions/715-comment-remplacer-les-espaces-des-dates-par-des-espaces-insecables-.html

Ton autre macro, bien entendu, intéressera du monde, et si tu veux me
la donner, je la mettai également dans la FAQ.

Avec tous nos remerciements,

Circé
http://faqword.fr

Jary

"Geo"
Bonjour

Merci, mais tout ce que ça fait, c'est d'enlever tous les espaces des
dates...! Y-t-il un erreur dans le code ou j'ai pas compris quelque
chose?



La solution de Jary est intéressante, c'est astucieux.
Amha il manque un
dim sInsécable as string
sInsécable = Chr(160)
en début de macro.

-- A+






Jary
Le #19445701
Bonjour Circé,

Voilà la macro en question, elle est toute simple et plutôt destinée aux
rédacteurs juridiques.
Petite précision sur ce qu'elle fait : [] = espace insécable.
article[]10
article L.[]233-1, article R.[]310 : pas d'espace insécable entre article et
L. ou R.
car si l'expression se trouve tout en fin de ligne, vu sa longueur, une
espace insécable
la rejetterait à la ligne suivante créant des blancs disgracieux entre les
mots
de la ligne précédente en cas de justification à droite et à gauche. Il
fallait faire un choix.
On peut toujours ajouter une espace insécable à l'aide d'un raccourci
clavier. .

Sub Article()
With Selection.Find
.Execute "([Aa])rticle ([0-9])", , , True, , , , wdFindContinue, False,
"1rticle^s2", wdReplaceAll
.Execute "([Aa])rticles ([0-9])", , , True, , , , wdFindContinue, False,
"1rticles^s2", wdReplaceAll
.Execute "L. ([0-9])", , , True, , , , wdFindContinue, , "L.^s1",
wdReplaceAll
.Execute "R. ([0-9])", , , True, , , , wdFindContinue, , "R.^s1",
wdReplaceAll
End With
End Sub

J'en profite pour vous féliciter, ainsi que Geo, Anacoluthe et Heureux-Oli,
pour la qualité de la faq
et de vos interventions sur ce groupe. Vous apportez une aide vraiment très
utile aux utilisateurs de Word,
novices ou chevronnés, tout en respectant notre langue et en faisant preuve
d'humour.
Bon courage.

Jary

"Circé" %
Bonjour Jary,
Jary a exprimé avec précision :


Si cela en intéresse certains j'ai une autre macro qui insère des espaces
insécables
dans les expressions juridiques comme article L. 32, article R. 10.



Ta macro est d'ores et déjà dans la faq de ce forum.
http://faqword.fr/index.php/faq/vba-solutions/715-comment-remplacer-les-espaces-des-dates-par-des-espaces-insecables-.html

Ton autre macro, bien entendu, intéressera du monde, et si tu veux me la
donner, je la mettai également dans la FAQ.

Avec tous nos remerciements,

Circé
http://faqword.fr

Jary

"Geo"
Bonjour

Merci, mais tout ce que ça fait, c'est d'enlever tous les espaces des
dates...! Y-t-il un erreur dans le code ou j'ai pas compris quelque
chose?



La solution de Jary est intéressante, c'est astucieux.
Amha il manque un
dim sInsécable as string
sInsécable = Chr(160)
en début de macro.

-- A+










Circé
Le #19462071
Bonjour Jary,

et merci pour ton implication.

J'aime moins cette macro que la précédente, parce que, en réalité, ce
n'est pas compliqué à faire à la main, contrairement aux espaces entre
les dates.
Je suis bien d'accord que pour quelqu'un qui passe son temps à faire
ce type de rédaction, cela devient utile.

Cela étant dit, personnellement j'aurais pensé à une correction
automatique qui serait de remplacer (automatiquement)
"Article L. "
par :
"Article L.[]"

idem pour le R.

Oui... mais, on ne peut pas avoir une expression à remplacer qui se
termine par un espace. Ce qui signifie qu'il en faudrait 9 de chaque...
x 2 à cause de la majuscule ou minuscule. Ce n'est toutefois pas
insurmontable et il me semble que ce serait confortable et on n'aurait
plus à se soucier de ce fichu espace insécable.

Comme ça peut paraître un peu compliqué, j'ai pensé aussi à l'insertion
automatique mais les majuscules/minuscules pour le A ne seront pas
prises en compte.

Que penses-tu de ces réflexions ?

Merci pour tes félicitations, je pense que ça va droit au coeur des
personnes concernées. Nous regrettons tous malheureusement anacoluthe
qui a préféré nous abandonner...
Je vois que tu es un lecteur habitué !;)

Circé
http://faqword.fr

Jary a pensé très fort :
Bonjour Circé,

Voilà la macro en question, elle est toute simple et plutôt destinée aux
rédacteurs juridiques.
Petite précision sur ce qu'elle fait : [] = espace insécable.
article[]10
article L.[]233-1, article R.[]310 : pas d'espace insécable entre article et
L. ou R.
car si l'expression se trouve tout en fin de ligne, vu sa longueur, une
espace insécable
la rejetterait à la ligne suivante créant des blancs disgracieux entre les
mots
de la ligne précédente en cas de justification à droite et à gauche. Il
fallait faire un choix.
On peut toujours ajouter une espace insécable à l'aide d'un raccourci
clavier. .

Sub Article()
With Selection.Find
.Execute "([Aa])rticle ([0-9])", , , True, , , , wdFindContinue, False,
"1rticle^s2", wdReplaceAll
.Execute "([Aa])rticles ([0-9])", , , True, , , , wdFindContinue, False,
"1rticles^s2", wdReplaceAll
.Execute "L. ([0-9])", , , True, , , , wdFindContinue, , "L.^s1",
wdReplaceAll
.Execute "R. ([0-9])", , , True, , , , wdFindContinue, , "R.^s1",
wdReplaceAll
End With
End Sub

J'en profite pour vous féliciter, ainsi que Geo, Anacoluthe et Heureux-Oli,
pour la qualité de la faq
et de vos interventions sur ce groupe. Vous apportez une aide vraiment très
utile aux utilisateurs de Word,
novices ou chevronnés, tout en respectant notre langue et en faisant preuve
d'humour.
Bon courage.

Jary

"Circé" %
Bonjour Jary,
Jary a exprimé avec précision :


Si cela en intéresse certains j'ai une autre macro qui insère des espaces
insécables
dans les expressions juridiques comme article L. 32, article R. 10.



Ta macro est d'ores et déjà dans la faq de ce forum.
http://faqword.fr/index.php/faq/vba-solutions/715-comment-remplacer-les-espaces-des-dates-par-des-espaces-insecables-.html

Ton autre macro, bien entendu, intéressera du monde, et si tu veux me la
donner, je la mettai également dans la FAQ.

Avec tous nos remerciements,

Circé
http://faqword.fr

Jary

"Geo"
Bonjour

Merci, mais tout ce que ça fait, c'est d'enlever tous les espaces des
dates...! Y-t-il un erreur dans le code ou j'ai pas compris quelque
chose?



La solution de Jary est intéressante, c'est astucieux.
Amha il manque un
dim sInsécable as string
sInsécable = Chr(160)
en début de macro.

-- A+












Publicité
Poster une réponse
Anonyme