Recherche de nombres entiers

Le
lazare
Bonjour, je cherche à trouver tous les nombres entiers d'un document Word
pour les relolacer par leurs équivalents avec 2 décimales;
Exemple: 324 deviendrait 324,00
Est ce possible (VBA ??). Merci d'avance.
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 #19607931
Bonjour

je cherche à trouver tous les nombres entiers d'un document Word pour les
relolacer par leurs équivalents avec 2 décimales;
Exemple: 324 deviendrait 324,00
Est ce possible (VBA ??). Merci d'avance.



Oui en vba c'est possible, balayer tous les mots et si la sélection est
numérique, ajouter ,00 derrière.
Je pensais qu'un bon rechercher remplacer devrait suffire, mais je ne
trouve pas la solution.

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



--
A+
lazare
Le #19608801
Aurais tu une idée de ce que pourrait être ce code de balayage des nombres
entiers (et non les décimaux) ?
Merci d'avance.
"Geo"
Bonjour

je cherche à trouver tous les nombres entiers d'un document Word pour
les relolacer par leurs équivalents avec 2 décimales;
Exemple: 324 deviendrait 324,00
Est ce possible (VBA ??). Merci d'avance.



Oui en vba c'est possible, balayer tous les mots et si la sélection est
numérique, ajouter ,00 derrière.
Je pensais qu'un bon rechercher remplacer devrait suffire, mais je ne
trouve pas la solution.

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



--
A+




Geo
Le #19609061
Bonjour

Aurais tu une idée de ce que pourrait être ce code de balayage des nombres entiers (et
non les décimaux) ?



Effectivement s'il y a des décimaux ça pose problème car la virgule est
considérée comme un séparateur de mots.
Faut réfléchir.

--
A+
heureux-oli
Le #19609801
Salut,

Essaie ce code :

******************
Sub modifierFormatNombre()
Dim myWd
Dim myStr As String
Dim lngI As Long, lngJ As Long
lngI = lngJ = 0

lngI = ActiveDocument.Words.Count


For lngJ = 1 To lngI
Debug.Print ActiveDocument.Words(lngJ); ActiveDocument.Words.Count
If IsNumeric(ActiveDocument.Words(lngJ)) Then
ActiveDocument.Words(lngJ).Select
'Selection.Delete
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty,
Text:="= " & ActiveDocument.Words(lngJ) & " # #.##0,00"
'Selection.MoveRight unit:=wdCharacter, Count:=1
Selection.InsertAfter " "
lngI = lngI + 2
lngJ = lngJ + 2

End If
Next lngJ


End Sub
**********************************

C'est du bricolage ;-)

On fait une boucle sur tous les mots, si le mot est numérique, on le
transforme en champ avec un masque d'affichage.



--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"lazare"
Aurais tu une idée de ce que pourrait être ce code de balayage des nombres
entiers (et non les décimaux) ?
Merci d'avance.
"Geo"
Bonjour

je cherche à trouver tous les nombres entiers d'un document Word pour
les relolacer par leurs équivalents avec 2 décimales;
Exemple: 324 deviendrait 324,00
Est ce possible (VBA ??). Merci d'avance.



Oui en vba c'est possible, balayer tous les mots et si la sélection est
numérique, ajouter ,00 derrière.
Je pensais qu'un bon rechercher remplacer devrait suffire, mais je ne
trouve pas la solution.

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



--
A+








Circé
Le #19610861
Bonjour Geo et Lazare,

Geo a couché sur son écran :
Bonjour

Aurais tu une idée de ce que pourrait être ce code de balayage des nombres
entiers (et non les décimaux) ?



Effectivement s'il y a des décimaux ça pose problème car la virgule est
considérée comme un séparateur de mots.



Effectvement, c'est là le problème...
S'il n'y avait que des nombres entiers, ça pourrait se faire facilement
avec un RR...

Ici le problème est surtout, me semble-t-il, de ne pas ajouter de
décimales après un nombre possédant déjà des décimales de façon à ne
pas obtenir quelque chose comme 125,20,00...

Cela dit, on pourrait passer un 2e RR pour rectifier le tir... Faut
réfléchir.

Est ce qu'il y a une présentation particulière dans le fichier ? Par
exemple, les nombres peuvent se trouver n'importe où ou bien ils sont
dans des tableaux, peuvent-ils être suivis par n'importe quelle
ponctuation ou retour paragraphe ?

Circé
http://faqword.fr

Faut réfléchir.


Circé
Le #19610851
Bonjour Geo et Lazare,

Geo a couché sur son écran :
Bonjour

Aurais tu une idée de ce que pourrait être ce code de balayage des nombres
entiers (et non les décimaux) ?



Effectivement s'il y a des décimaux ça pose problème car la virgule est
considérée comme un séparateur de mots.



Effectvement, c'est là le problème...
S'il n'y avait que des nombres entiers, ça pourrait se faire facilement
avec un RR...

Ici le problème est surtout, me semble-t-il, de ne pas ajouter de
décimales après un nombre possédant déjà des décimales de façon à ne
pas obtenir quelque chose comme 125,20,00...

Cela dit, on pourrait passer un 2e RR pour rectifier le tir... Faut
réfléchir.

Est ce qu'il y a une présentation particulière dans le fichier ? Par
exemple, les nombres peuvent se trouver n'importe où ou bien ils sont
dans des tableaux, peuvent-ils être suivis par n'importe quelle
ponctuation ou retour paragraphe ?

Circé
http://faqword.fr

Faut réfléchir.


Circé
Le #19610841
Bonjour Olivier,

J'avais également pensé effectivement à un truc avec les champs, à
savoir convertir en champ avec le format numérique et éventuellement
reconvertir en texte.

Mais le problème, à mon sens, est toujours le même. Un mot étant
déterminé entre autres par une virgule, ta macro va prendre juste la
première partie du nombre si ce dernier a déjà des décimales.

Circé

Salut,

Essaie ce code :

******************
Sub modifierFormatNombre()
Dim myWd
Dim myStr As String
Dim lngI As Long, lngJ As Long
lngI = lngJ = 0

lngI = ActiveDocument.Words.Count


For lngJ = 1 To lngI
Debug.Print ActiveDocument.Words(lngJ); ActiveDocument.Words.Count
If IsNumeric(ActiveDocument.Words(lngJ)) Then
ActiveDocument.Words(lngJ).Select
'Selection.Delete
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty,
Text:="= " & ActiveDocument.Words(lngJ) & " # #.##0,00"
'Selection.MoveRight unit:=wdCharacter, Count:=1
Selection.InsertAfter " "
lngI = lngI + 2
lngJ = lngJ + 2

End If
Next lngJ


End Sub
**********************************

C'est du bricolage ;-)

On fait une boucle sur tous les mots, si le mot est numérique, on le
transforme en champ avec un masque d'affichage.



--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"lazare"
Aurais tu une idée de ce que pourrait être ce code de balayage des nombres
entiers (et non les décimaux) ?
Merci d'avance.
"Geo"
Bonjour

je cherche à trouver tous les nombres entiers d'un document Word pour
les relolacer par leurs équivalents avec 2 décimales;
Exemple: 324 deviendrait 324,00
Est ce possible (VBA ??). Merci d'avance.



Oui en vba c'est possible, balayer tous les mots et si la sélection est
numérique, ajouter ,00 derrière.
Je pensais qu'un bon rechercher remplacer devrait suffire, mais je ne
trouve pas la solution.

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



-- A+










heureux-oli
Le #19611361
Salut Circé,

Mais dans son titre, il mentionne les nombres entiers.
C'est correct qu'avec une virgule ça ne fonctionne pas.

--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" %
Bonjour Olivier,

J'avais également pensé effectivement à un truc avec les champs, à savoir
convertir en champ avec le format numérique et éventuellement reconvertir
en texte.

Mais le problème, à mon sens, est toujours le même. Un mot étant déterminé
entre autres par une virgule, ta macro va prendre juste la première partie
du nombre si ce dernier a déjà des décimales.

Circé

Salut,

Essaie ce code :

******************
Sub modifierFormatNombre()
Dim myWd
Dim myStr As String
Dim lngI As Long, lngJ As Long
lngI = lngJ = 0

lngI = ActiveDocument.Words.Count


For lngJ = 1 To lngI
Debug.Print ActiveDocument.Words(lngJ); ActiveDocument.Words.Count
If IsNumeric(ActiveDocument.Words(lngJ)) Then
ActiveDocument.Words(lngJ).Select
'Selection.Delete
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty,
Text:="= " & ActiveDocument.Words(lngJ) & " # #.##0,00"
'Selection.MoveRight unit:=wdCharacter, Count:=1
Selection.InsertAfter " "
lngI = lngI + 2
lngJ = lngJ + 2

End If
Next lngJ


End Sub
**********************************

C'est du bricolage ;-)

On fait une boucle sur tous les mots, si le mot est numérique, on le
transforme en champ avec un masque d'affichage.



--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"lazare"
Aurais tu une idée de ce que pourrait être ce code de balayage des
nombres entiers (et non les décimaux) ?
Merci d'avance.
"Geo"
Bonjour

je cherche à trouver tous les nombres entiers d'un document Word pour
les relolacer par leurs équivalents avec 2 décimales;
Exemple: 324 deviendrait 324,00
Est ce possible (VBA ??). Merci d'avance.



Oui en vba c'est possible, balayer tous les mots et si la sélection est
numérique, ajouter ,00 derrière.
Je pensais qu'un bon rechercher remplacer devrait suffire, mais je ne
trouve pas la solution.

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



-- A+














Geo
Le #19611571
Bonjour

Et c'est pas tout, une date va être transformée.
20/6/2009 devient 20,00/6,00/2009,00 mdr
Il y a un écueil que tu as vu, c'est que le nombre de mot évoluerait du
fait de l'insertion des décimales. En utilisant un champ on évite
probablement ça.
Je pensais que la solution était simple, mais ce n'est pas vrai.

--
A+
heureux-oli
Le #19611871
Salut Geo,

Le champ ne permet pas du tout d'éviter le problème et mon premier essai a
planté Word dans une boucle que même Ctrl + Break n'a suffit.
Effectivement, je n'avais pas pensé aux dates qui sont transformées aussi.

J'avais un moment faire une comparaison avec le caractère qui précède et le
cratère qui suit, mais on se retrouve très vite avec une usine à gaz
ingérable.




--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Geo"
Bonjour

Et c'est pas tout, une date va être transformée.
20/6/2009 devient 20,00/6,00/2009,00 mdr
Il y a un écueil que tu as vu, c'est que le nombre de mot évoluerait du
fait de l'insertion des décimales. En utilisant un champ on évite
probablement ça.
Je pensais que la solution était simple, mais ce n'est pas vrai.

--
A+




Publicité
Poster une réponse
Anonyme