Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche de nombres entiers

14 réponses
Avatar
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.

10 réponses

1 2
Avatar
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+
Avatar
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" a écrit dans le message de news:

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+




Avatar
Geo
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+
Avatar
heureux-oli
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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+








Avatar
Circé
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.


Avatar
Circé
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.


Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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+










Avatar
heureux-oli
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é" a écrit dans le message de news:
%
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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+














Avatar
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+
Avatar
heureux-oli
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" a écrit dans le message de news:

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+




1 2