Sub Quatre_Espace_Quatre()
Dim c As Range
For Each c In Selection
c.Value = Trim(Application.Substitute(c.Value, Chr(160), ""))
Next c
End Sub
Toutes mes excuses, cette macro ne tient pas la route.
Serge
Sub Quatre_Espace_Quatre()
Dim c As Range
For Each c In Selection
c.Value = Trim(Application.Substitute(c.Value, Chr(160), ""))
Next c
End Sub
Toutes mes excuses, cette macro ne tient pas la route.
Serge
Sub Quatre_Espace_Quatre()
Dim c As Range
For Each c In Selection
c.Value = Trim(Application.Substitute(c.Value, Chr(160), ""))
Next c
End Sub
Toutes mes excuses, cette macro ne tient pas la route.
Serge
Bonjour mambas,
En réponse :
Ce n'est pas réellement un code qui fonctionne que je t'ai passé, mais
un principe de ce qu'il fallait faire.
Désolé, encore une fois je ne sais pas du tout ce que tu sais faire par
rapport à ce que tu demandes.
Je pourrais tout t'expliquer, mais ça va te servir sans doute une seule
fois, donc tu vas l'oublier, et le temps passé à l'expliquer va dépasser
le temps qu'il faut pour écrire le code en VB6, alors, comme ce n'est pas
un fichier secret, pour moi ça ne veut rien dire, ce que je te propose est
de m'envoyer ton fichier boiteux en copie par mail à mon adresse :
montmartre75018 arobase free point fr
Ton fichier texte ne contient que des séries de 4 chiffres séparées par
un nombre aléatoire de blancs, et ce que tu veux, c'est bien qu'il n'y ait
qu'une séparation d'un seul espace (ascii 32) entre tes séries de 4
chiffres, ceci sur chaque ligne du fichier texte, excepté je présume en
dernière position de chaque ligne où il ne doit pas y avoir de blanc en
fin (d'où le Trim(), est-ce bien ça ?
Je te fais ça dans l'après-midi et je te renvois un exe testé en vb6
qui, dans un répertoire, mis en présence d'un fichier O.txt, te pondra un
fichier D.txt, ainsi que le code, de la sorte tu pourras l'appeler de ton
code (Shell), si ça se reproduit, car il faudrait normalement que tu sache
quoi faire pour que ça ne se reproduise pas, il doit y avoir une erreur
quelque part.
A te lire, cordialement.
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"manbas" a écrit dans le message de
news:Bonjour letroll
Merci pour ta réponse. Comme tu l'as dis "ça dépends de mes compétences"
et là tu surfes sur des vagues un peu hautes pour moi!
1) J'ai crée deux fichiers textes, un appellé O et l'autre appellé D
(tous deux des copies .txt)
2) J'ai mis ton code dans un module XL
3) 3 lignes sont "en rouge" et m'empêchent de tester (je ne comprends pas
tout le code)
select case Mid(Trim(ligne)), i, 1)
et
écrit fichier D = ligneBis
et
rename D en O (dois je comprendre que je fais manuellement? mais alors
pourquoi Kill O ensuite?)
"LE TROLL" <le a écrit dans le message de news:
ub5cz%Bonjour,
Le solution est simple, tout dépend de tes connaissances :
Faire une copie de sauvegarde du fichier d'origine O (copyFichierO.txt)
Tu ouvres le fichier d'origine en lecture texte O
Tu ouvres un nouveau fichier de destinations texte en écriture D
dim i as long
dim j as long
dim ligne as string
dim ligneBis as long
Do while EOF(fichier) <> true
if EOF(fichier) = True then exit Do
ligneBis=""
j = 0
for i = 1 to len(ligne)
select case mid(Trim(ligne)), i, 1)
case <> " " : j = 0
case else : j = j + 1
end select
if j < 2 then : ligneBis = ligneBis & mid(ligne, i, 1)
next i
écrit fichoer D = ligneBis
loop
rename D en O
Kill O
Il y a d'autre méthodes, comme changer tout ce qui est plus long que
" " en " " par ligne, etc...
Toutefois il faudrait aussi penser à voir ce qui cause ce problème et le
supprimer :o)
In fine, si ce sont des séries de 4 chiffres, il n'y a aucune utilité à
conserver le séparateur, ben oui, sauf pour le plaisir des yeux...
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Jacques RAGNI" a écrit dans le message de
news:Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres
séparées par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc.
Certains sont très longs.
Mon problème c'est que certains d'entre eux sont pollués par des
espaces surnuméraires: au lieu d'un espace entre 2 séquences de 4
chiffres, il y en a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une
anomalie, d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création
s'est faite à partir de valeurs intégrant les zéros "devant" pour
garder la séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *")
ce qui me permet de les colorer, mais je n'ai pas d'idée pour essayer
de les corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Bonjour mambas,
En réponse :
Ce n'est pas réellement un code qui fonctionne que je t'ai passé, mais
un principe de ce qu'il fallait faire.
Désolé, encore une fois je ne sais pas du tout ce que tu sais faire par
rapport à ce que tu demandes.
Je pourrais tout t'expliquer, mais ça va te servir sans doute une seule
fois, donc tu vas l'oublier, et le temps passé à l'expliquer va dépasser
le temps qu'il faut pour écrire le code en VB6, alors, comme ce n'est pas
un fichier secret, pour moi ça ne veut rien dire, ce que je te propose est
de m'envoyer ton fichier boiteux en copie par mail à mon adresse :
montmartre75018 arobase free point fr
Ton fichier texte ne contient que des séries de 4 chiffres séparées par
un nombre aléatoire de blancs, et ce que tu veux, c'est bien qu'il n'y ait
qu'une séparation d'un seul espace (ascii 32) entre tes séries de 4
chiffres, ceci sur chaque ligne du fichier texte, excepté je présume en
dernière position de chaque ligne où il ne doit pas y avoir de blanc en
fin (d'où le Trim(), est-ce bien ça ?
Je te fais ça dans l'après-midi et je te renvois un exe testé en vb6
qui, dans un répertoire, mis en présence d'un fichier O.txt, te pondra un
fichier D.txt, ainsi que le code, de la sorte tu pourras l'appeler de ton
code (Shell), si ça se reproduit, car il faudrait normalement que tu sache
quoi faire pour que ça ne se reproduise pas, il doit y avoir une erreur
quelque part.
A te lire, cordialement.
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"manbas" <manbas@wanadoo.fr> a écrit dans le message de
news:edbH1Hg1KHA.776@TK2MSFTNGP04.phx.gbl...
Bonjour letroll
Merci pour ta réponse. Comme tu l'as dis "ça dépends de mes compétences"
et là tu surfes sur des vagues un peu hautes pour moi!
1) J'ai crée deux fichiers textes, un appellé O et l'autre appellé D
(tous deux des copies .txt)
2) J'ai mis ton code dans un module XL
3) 3 lignes sont "en rouge" et m'empêchent de tester (je ne comprends pas
tout le code)
select case Mid(Trim(ligne)), i, 1)
et
écrit fichier D = ligneBis
et
rename D en O (dois je comprendre que je fais manuellement? mais alors
pourquoi Kill O ensuite?)
"LE TROLL" <le troll@enfer.fr> a écrit dans le message de news:
ub5cz%23b1KHA.6108@TK2MSFTNGP06.phx.gbl...
Bonjour,
Le solution est simple, tout dépend de tes connaissances :
Faire une copie de sauvegarde du fichier d'origine O (copyFichierO.txt)
Tu ouvres le fichier d'origine en lecture texte O
Tu ouvres un nouveau fichier de destinations texte en écriture D
dim i as long
dim j as long
dim ligne as string
dim ligneBis as long
Do while EOF(fichier) <> true
if EOF(fichier) = True then exit Do
ligneBis=""
j = 0
for i = 1 to len(ligne)
select case mid(Trim(ligne)), i, 1)
case <> " " : j = 0
case else : j = j + 1
end select
if j < 2 then : ligneBis = ligneBis & mid(ligne, i, 1)
next i
écrit fichoer D = ligneBis
loop
rename D en O
Kill O
Il y a d'autre méthodes, comme changer tout ce qui est plus long que
" " en " " par ligne, etc...
Toutefois il faudrait aussi penser à voir ce qui cause ce problème et le
supprimer :o)
In fine, si ce sont des séries de 4 chiffres, il n'y a aucune utilité à
conserver le séparateur, ben oui, sauf pour le plaisir des yeux...
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Jacques RAGNI" <manbas@wanadoo.fr> a écrit dans le message de
news:O2TGdob1KHA.220@TK2MSFTNGP06.phx.gbl...
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres
séparées par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc.
Certains sont très longs.
Mon problème c'est que certains d'entre eux sont pollués par des
espaces surnuméraires: au lieu d'un espace entre 2 séquences de 4
chiffres, il y en a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une
anomalie, d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création
s'est faite à partir de valeurs intégrant les zéros "devant" pour
garder la séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *")
ce qui me permet de les colorer, mais je n'ai pas d'idée pour essayer
de les corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Bonjour mambas,
En réponse :
Ce n'est pas réellement un code qui fonctionne que je t'ai passé, mais
un principe de ce qu'il fallait faire.
Désolé, encore une fois je ne sais pas du tout ce que tu sais faire par
rapport à ce que tu demandes.
Je pourrais tout t'expliquer, mais ça va te servir sans doute une seule
fois, donc tu vas l'oublier, et le temps passé à l'expliquer va dépasser
le temps qu'il faut pour écrire le code en VB6, alors, comme ce n'est pas
un fichier secret, pour moi ça ne veut rien dire, ce que je te propose est
de m'envoyer ton fichier boiteux en copie par mail à mon adresse :
montmartre75018 arobase free point fr
Ton fichier texte ne contient que des séries de 4 chiffres séparées par
un nombre aléatoire de blancs, et ce que tu veux, c'est bien qu'il n'y ait
qu'une séparation d'un seul espace (ascii 32) entre tes séries de 4
chiffres, ceci sur chaque ligne du fichier texte, excepté je présume en
dernière position de chaque ligne où il ne doit pas y avoir de blanc en
fin (d'où le Trim(), est-ce bien ça ?
Je te fais ça dans l'après-midi et je te renvois un exe testé en vb6
qui, dans un répertoire, mis en présence d'un fichier O.txt, te pondra un
fichier D.txt, ainsi que le code, de la sorte tu pourras l'appeler de ton
code (Shell), si ça se reproduit, car il faudrait normalement que tu sache
quoi faire pour que ça ne se reproduise pas, il doit y avoir une erreur
quelque part.
A te lire, cordialement.
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"manbas" a écrit dans le message de
news:Bonjour letroll
Merci pour ta réponse. Comme tu l'as dis "ça dépends de mes compétences"
et là tu surfes sur des vagues un peu hautes pour moi!
1) J'ai crée deux fichiers textes, un appellé O et l'autre appellé D
(tous deux des copies .txt)
2) J'ai mis ton code dans un module XL
3) 3 lignes sont "en rouge" et m'empêchent de tester (je ne comprends pas
tout le code)
select case Mid(Trim(ligne)), i, 1)
et
écrit fichier D = ligneBis
et
rename D en O (dois je comprendre que je fais manuellement? mais alors
pourquoi Kill O ensuite?)
"LE TROLL" <le a écrit dans le message de news:
ub5cz%Bonjour,
Le solution est simple, tout dépend de tes connaissances :
Faire une copie de sauvegarde du fichier d'origine O (copyFichierO.txt)
Tu ouvres le fichier d'origine en lecture texte O
Tu ouvres un nouveau fichier de destinations texte en écriture D
dim i as long
dim j as long
dim ligne as string
dim ligneBis as long
Do while EOF(fichier) <> true
if EOF(fichier) = True then exit Do
ligneBis=""
j = 0
for i = 1 to len(ligne)
select case mid(Trim(ligne)), i, 1)
case <> " " : j = 0
case else : j = j + 1
end select
if j < 2 then : ligneBis = ligneBis & mid(ligne, i, 1)
next i
écrit fichoer D = ligneBis
loop
rename D en O
Kill O
Il y a d'autre méthodes, comme changer tout ce qui est plus long que
" " en " " par ligne, etc...
Toutefois il faudrait aussi penser à voir ce qui cause ce problème et le
supprimer :o)
In fine, si ce sont des séries de 4 chiffres, il n'y a aucune utilité à
conserver le séparateur, ben oui, sauf pour le plaisir des yeux...
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Jacques RAGNI" a écrit dans le message de
news:Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres
séparées par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc.
Certains sont très longs.
Mon problème c'est que certains d'entre eux sont pollués par des
espaces surnuméraires: au lieu d'un espace entre 2 séquences de 4
chiffres, il y en a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une
anomalie, d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création
s'est faite à partir de valeurs intégrant les zéros "devant" pour
garder la séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *")
ce qui me permet de les colorer, mais je n'ai pas d'idée pour essayer
de les corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres séparées
par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc. Certains sont
très
longs.
Mon problème c'est que certains d'entre eux sont pollués par des espaces
surnuméraires: au lieu d'un espace entre 2 séquences de 4 chiffres, il y
en
a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une anomalie,
d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création s'est
faite à partir de valeurs intégrant les zéros "devant" pour garder la
séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *") ce
qui me permet de les colorer, mais je n'ai pas d'idée pour essayer de les
corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres séparées
par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc. Certains sont
très
longs.
Mon problème c'est que certains d'entre eux sont pollués par des espaces
surnuméraires: au lieu d'un espace entre 2 séquences de 4 chiffres, il y
en
a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une anomalie,
d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création s'est
faite à partir de valeurs intégrant les zéros "devant" pour garder la
séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *") ce
qui me permet de les colorer, mais je n'ai pas d'idée pour essayer de les
corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres séparées
par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc. Certains sont
très
longs.
Mon problème c'est que certains d'entre eux sont pollués par des espaces
surnuméraires: au lieu d'un espace entre 2 séquences de 4 chiffres, il y
en
a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une anomalie,
d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création s'est
faite à partir de valeurs intégrant les zéros "devant" pour garder la
séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *") ce
qui me permet de les colorer, mais je n'ai pas d'idée pour essayer de les
corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Là ça me semble OK.
Un peu tard mais il fallait que j'y arrive ;-)
Pour des cellules formatées « texte » :
Sub Quatre_Espace_Quatre()
Dim c As Range
Dim texte$, der$
For Each c In Selection
texte = Replace(Replace(c.Value, Chr(160), ""), Chr(32), "")
For i = 1 To Len(texte) Step 4
der = der & Mid(texte, i, 4) & " "
Next i
c.Value = Trim(der)
der = ""
Next c
End Sub
Serge
"Tatanka" a écrit dans le message de news:
%Sub Quatre_Espace_Quatre()
Dim c As Range
For Each c In Selection
c.Value = Trim(Application.Substitute(c.Value, Chr(160), ""))
Next c
End Sub
Toutes mes excuses, cette macro ne tient pas la route.
Serge
Là ça me semble OK.
Un peu tard mais il fallait que j'y arrive ;-)
Pour des cellules formatées « texte » :
Sub Quatre_Espace_Quatre()
Dim c As Range
Dim texte$, der$
For Each c In Selection
texte = Replace(Replace(c.Value, Chr(160), ""), Chr(32), "")
For i = 1 To Len(texte) Step 4
der = der & Mid(texte, i, 4) & " "
Next i
c.Value = Trim(der)
der = ""
Next c
End Sub
Serge
"Tatanka" <garnote3ENLEVER@videotron.ca> a écrit dans le message de news:
%23MxIAHy1KHA.5972@TK2MSFTNGP06.phx.gbl...
Sub Quatre_Espace_Quatre()
Dim c As Range
For Each c In Selection
c.Value = Trim(Application.Substitute(c.Value, Chr(160), ""))
Next c
End Sub
Toutes mes excuses, cette macro ne tient pas la route.
Serge
Là ça me semble OK.
Un peu tard mais il fallait que j'y arrive ;-)
Pour des cellules formatées « texte » :
Sub Quatre_Espace_Quatre()
Dim c As Range
Dim texte$, der$
For Each c In Selection
texte = Replace(Replace(c.Value, Chr(160), ""), Chr(32), "")
For i = 1 To Len(texte) Step 4
der = der & Mid(texte, i, 4) & " "
Next i
c.Value = Trim(der)
der = ""
Next c
End Sub
Serge
"Tatanka" a écrit dans le message de news:
%Sub Quatre_Espace_Quatre()
Dim c As Range
For Each c In Selection
c.Value = Trim(Application.Substitute(c.Value, Chr(160), ""))
Next c
End Sub
Toutes mes excuses, cette macro ne tient pas la route.
Serge
Tu pourrais utiliser une macro comme celle-ci en adaptant
le nom de la feuille, la plage de cellules occupées et remplacer
25 par le nombre maximum d'espaces que tu peux retrouver
entre 2 séries de chiffres. Comme l'exécution de cette procédure
est très rapide, au lieu de 25, tu peux mettre 50 si tu le désires...
'---------------------------------------
Sub test()
Dim X As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1:g5")
Do While X <= 25
.Replace " ", " "
X = X + 1
Loop
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'---------------------------------------
"manbas" a écrit dans le message de groupe de
discussion :
Bonjour michdenis
Merci pour ta réponse.
La solution n'est pas optimale à cause de la longueur des chaines de 4
chiffres. Rien que pour compter le nombre de séquences de 4 chiffres de la
plus grande... et laquelle est la plus grande sur plusieurs centaines de
lignes...
"michdenis" a écrit dans le message de news:Bonjour,
Essaie quelque chose dans le genre :
Tu adaptes le nom de la feuille, plage de cellules.
Tu peux ajouter des #### autant que tu désires
selon la chaîne de caractères la plus longue que tu as
'--------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A10")
.Replace " ", ""
.NumberFormat = "####"" ""####"" ""####"" ""####"" ""####""
""####"
End With
End With
End Sub
'--------------------------------
"Jacques RAGNI" a écrit dans le message de groupe de
discussion :
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres
séparées
par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc. Certains sont
très
longs.
Mon problème c'est que certains d'entre eux sont pollués par des espaces
surnuméraires: au lieu d'un espace entre 2 séquences de 4 chiffres, il y
en
a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une
anomalie,
d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création s'est
faite à partir de valeurs intégrant les zéros "devant" pour garder la
séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *")
ce
qui me permet de les colorer, mais je n'ai pas d'idée pour essayer de les
corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Tu pourrais utiliser une macro comme celle-ci en adaptant
le nom de la feuille, la plage de cellules occupées et remplacer
25 par le nombre maximum d'espaces que tu peux retrouver
entre 2 séries de chiffres. Comme l'exécution de cette procédure
est très rapide, au lieu de 25, tu peux mettre 50 si tu le désires...
'---------------------------------------
Sub test()
Dim X As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1:g5")
Do While X <= 25
.Replace " ", " "
X = X + 1
Loop
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'---------------------------------------
"manbas" <manbas@wanadoo.fr> a écrit dans le message de groupe de
discussion :
eAJCl9f1KHA.3868@TK2MSFTNGP06.phx.gbl...
Bonjour michdenis
Merci pour ta réponse.
La solution n'est pas optimale à cause de la longueur des chaines de 4
chiffres. Rien que pour compter le nombre de séquences de 4 chiffres de la
plus grande... et laquelle est la plus grande sur plusieurs centaines de
lignes...
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
Oowbi5b1KHA.364@TK2MSFTNGP02.phx.gbl...
Bonjour,
Essaie quelque chose dans le genre :
Tu adaptes le nom de la feuille, plage de cellules.
Tu peux ajouter des #### autant que tu désires
selon la chaîne de caractères la plus longue que tu as
'--------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A10")
.Replace " ", ""
.NumberFormat = "####"" ""####"" ""####"" ""####"" ""####""
""####"
End With
End With
End Sub
'--------------------------------
"Jacques RAGNI" <manbas@wanadoo.fr> a écrit dans le message de groupe de
discussion :
O2TGdob1KHA.220@TK2MSFTNGP06.phx.gbl...
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres
séparées
par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc. Certains sont
très
longs.
Mon problème c'est que certains d'entre eux sont pollués par des espaces
surnuméraires: au lieu d'un espace entre 2 séquences de 4 chiffres, il y
en
a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une
anomalie,
d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création s'est
faite à partir de valeurs intégrant les zéros "devant" pour garder la
séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *")
ce
qui me permet de les colorer, mais je n'ai pas d'idée pour essayer de les
corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...
Tu pourrais utiliser une macro comme celle-ci en adaptant
le nom de la feuille, la plage de cellules occupées et remplacer
25 par le nombre maximum d'espaces que tu peux retrouver
entre 2 séries de chiffres. Comme l'exécution de cette procédure
est très rapide, au lieu de 25, tu peux mettre 50 si tu le désires...
'---------------------------------------
Sub test()
Dim X As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1:g5")
Do While X <= 25
.Replace " ", " "
X = X + 1
Loop
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'---------------------------------------
"manbas" a écrit dans le message de groupe de
discussion :
Bonjour michdenis
Merci pour ta réponse.
La solution n'est pas optimale à cause de la longueur des chaines de 4
chiffres. Rien que pour compter le nombre de séquences de 4 chiffres de la
plus grande... et laquelle est la plus grande sur plusieurs centaines de
lignes...
"michdenis" a écrit dans le message de news:Bonjour,
Essaie quelque chose dans le genre :
Tu adaptes le nom de la feuille, plage de cellules.
Tu peux ajouter des #### autant que tu désires
selon la chaîne de caractères la plus longue que tu as
'--------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A10")
.Replace " ", ""
.NumberFormat = "####"" ""####"" ""####"" ""####"" ""####""
""####"
End With
End With
End Sub
'--------------------------------
"Jacques RAGNI" a écrit dans le message de groupe de
discussion :
Bonjour à tous
Mon fichier comporte des centaines de lignes qui reçoivent des codes de
chiffres. Ces codes sont constitués par des chaines de 4 chiffres
séparées
par 1 espace. Par exemple: 0125 7458 6589 0012 5681 etc. Certains sont
très
longs.
Mon problème c'est que certains d'entre eux sont pollués par des espaces
surnuméraires: au lieu d'un espace entre 2 séquences de 4 chiffres, il y
en
a 2, 3, 4, ou plus.
Exemple: 0125 7458 6589 0012 5681
Impossible de déterminer une règle de survenue, certains ont une
anomalie,
d'autres en ont plusieurs.
Ces chaines de caractères sont au format "texte" car leur création s'est
faite à partir de valeurs intégrant les zéros "devant" pour garder la
séquence de 4 chiffres.
Je sais repérer ces chaines anormales en vba (activecell.value="*# *")
ce
qui me permet de les colorer, mais je n'ai pas d'idée pour essayer de les
corriger.
Avez-vous une solution pour m'aider SVP?
En vous remerciant mille fois par avance...