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

probleme: remplacer un espace par une virgule dans un tableau exce

5 réponses
Avatar
B_M
Bonjour,
J'ai plusieurs tableaux excels ou les virgules ont été remplacées par des
espaces.
je ne peut pas utiliser la fonction remplacé incluse dans ce logiciel car
elle ne comprend pas l'espace (j'ai essaye entre guillement: " ").
Donc j'ai essayé de voir la structure de cette fonction sous VBA pour mettre
un espace... (j'ai remplacer un "h" par un " ") dans la macro suivante mais
cela a sorti une erreur.

Sub Macro1()
Range("d7").Select
Cells.Find(What:=" ", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False _
, SearchFormat:=False).Activate
Cells.Replace What:=" ", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False,
ReplaceFormat:=False
End Sub

Bref ,'ai eu l'idée de rechercher dans le tableau le caractere " " avec la
fonction mid qui parcourerait tous les contenus des cellules... Mais comme je
n'ai pas trouvé de methode pour remplacer le caractere identifié, cela me
fait une belle jambe...

Je vous remercie d'avance de l'aide apportée, Excel me navre....
(Je suis sous VBA6.3)

5 réponses

Avatar
papou
Bonjour
Pour l'espace essaie la fonction Space(1).
Cordialement
Pascal


"B_M" a écrit dans le message de news:

Bonjour,
J'ai plusieurs tableaux excels ou les virgules ont été remplacées par des
espaces.
je ne peut pas utiliser la fonction remplacé incluse dans ce logiciel car
elle ne comprend pas l'espace (j'ai essaye entre guillement: " ").
Donc j'ai essayé de voir la structure de cette fonction sous VBA pour
mettre
un espace... (j'ai remplacer un "h" par un " ") dans la macro suivante
mais
cela a sorti une erreur.

Sub Macro1()
Range("d7").Select
Cells.Find(What:=" ", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate
Cells.Replace What:=" ", Replacement:=",", LookAt:=xlPart, SearchOrder
_
:=xlByRows, MatchCase:úlse, SearchFormat:úlse,
ReplaceFormat:úlse
End Sub

Bref ,'ai eu l'idée de rechercher dans le tableau le caractere " " avec la
fonction mid qui parcourerait tous les contenus des cellules... Mais comme
je
n'ai pas trouvé de methode pour remplacer le caractere identifié, cela me
fait une belle jambe...

Je vous remercie d'avance de l'aide apportée, Excel me navre....
(Je suis sous VBA6.3)


Avatar
Patrice Henrio
C'est bizarre chez moi remplacer le fait bien

Donc j'utilise

Remplacer

Texte à remplacer : un espace sans guillemet ni rien

remplacer par : ;

cela devrait marcher

Excel 2000, version 9.0.2812


"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
O4ni%
Bonjour
Pour l'espace essaie la fonction Space(1).
Cordialement
Pascal


"B_M" a écrit dans le message de news:

Bonjour,
J'ai plusieurs tableaux excels ou les virgules ont été remplacées par des
espaces.
je ne peut pas utiliser la fonction remplacé incluse dans ce logiciel car
elle ne comprend pas l'espace (j'ai essaye entre guillement: " ").
Donc j'ai essayé de voir la structure de cette fonction sous VBA pour
mettre
un espace... (j'ai remplacer un "h" par un " ") dans la macro suivante
mais
cela a sorti une erreur.

Sub Macro1()
Range("d7").Select
Cells.Find(What:=" ", After:¬tiveCell, LookIn:=xlFormulas, LookAt:=
_
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate
Cells.Replace What:=" ", Replacement:=",", LookAt:=xlPart, SearchOrder
_
:=xlByRows, MatchCase:úlse, SearchFormat:úlse,
ReplaceFormat:úlse
End Sub

Bref ,'ai eu l'idée de rechercher dans le tableau le caractere " " avec
la
fonction mid qui parcourerait tous les contenus des cellules... Mais
comme je
n'ai pas trouvé de methode pour remplacer le caractere identifié, cela me
fait une belle jambe...

Je vous remercie d'avance de l'aide apportée, Excel me navre....
(Je suis sous VBA6.3)






Avatar
SAISAS
Bonjour,

désolé, mais chez moi aussi, la fonction Replace(chaine," ","-") fonctionne
sans problème.

N'as tu pas un problème de variables ou quelque chose comme cela?

Cordialement.

"Patrice Henrio" a écrit :

C'est bizarre chez moi remplacer le fait bien

Donc j'utilise

Remplacer

Texte à remplacer : un espace sans guillemet ni rien

remplacer par : ;

cela devrait marcher

Excel 2000, version 9.0.2812


"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
O4ni%
> Bonjour
> Pour l'espace essaie la fonction Space(1).
> Cordialement
> Pascal
>
>
> "B_M" a écrit dans le message de news:
>
>> Bonjour,
>> J'ai plusieurs tableaux excels ou les virgules ont été remplacées par des
>> espaces.
>> je ne peut pas utiliser la fonction remplacé incluse dans ce logiciel car
>> elle ne comprend pas l'espace (j'ai essaye entre guillement: " ").
>> Donc j'ai essayé de voir la structure de cette fonction sous VBA pour
>> mettre
>> un espace... (j'ai remplacer un "h" par un " ") dans la macro suivante
>> mais
>> cela a sorti une erreur.
>>
>> Sub Macro1()
>> Range("d7").Select
>> Cells.Find(What:=" ", After:¬tiveCell, LookIn:=xlFormulas, LookAt:=
>> _
>> xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
>> MatchCase:úlse _
>> , SearchFormat:úlse).Activate
>> Cells.Replace What:=" ", Replacement:=",", LookAt:=xlPart, SearchOrder
>> _
>> :=xlByRows, MatchCase:úlse, SearchFormat:úlse,
>> ReplaceFormat:úlse
>> End Sub
>>
>> Bref ,'ai eu l'idée de rechercher dans le tableau le caractere " " avec
>> la
>> fonction mid qui parcourerait tous les contenus des cellules... Mais
>> comme je
>> n'ai pas trouvé de methode pour remplacer le caractere identifié, cela me
>> fait une belle jambe...
>>
>> Je vous remercie d'avance de l'aide apportée, Excel me navre....
>> (Je suis sous VBA6.3)
>
>





Avatar
Gloops
Salut,

A priori, j'ai aussi tendance à trouver louche, ce que tu dis là .

Dans mes tests en version 95 j'ai quand même eu un cas où la vi rgule
était ignorée par la fonction replace, comme si il fallait la p réfixer
comme dans une "expression régulière", ça m'a laissé perplexe.


Tu devrais poser la question dans le newsgroup
microsoft.public.fr.excel, en précisant :
- la version d'Excel
- comment est paramétrée la fonction de fractionnement du texte (sur ma
version c'est Données / Convertir) ; il ne semble pas que ce soit en
cause, mais sait-on jamais.

Si on veut faire mumuse avec des remplacements sur mesure on peut
essayer quelque chose de ce style (qui ne peut bien entendu, en l'ét at,
rechercher qu'une chaîne de ... un espace) :

On peut aussi simplifier, j'ai décomposé pour pouvoir mieux sit uer les
erreurs le cas échéant.

Attention, quand je dis Selection.Formula, je suppose qu'une seule
cellule est sélectionnée : ça aussi il y a intérê t à adapter.

Sub Macro1()
Dim T As String
T = VirguleEnEspace(Selection.Formula, " ", ", ")
' pour mettre une virgule devant chaque espace
Selection.Formula = T
End Sub

Function VirguleEnEspace(T As String, De As String, Par As String) As Str ing
Dim Tmp As String
For N = 1 To Len(T)
If Mid$(T, N, 1) = De Then
Tmp = Tmp + Par
Else
Tmp = Tmp + Mid$(T, N, 1)
End If
Next
VirguleEnEspace = Tmp
End Function
Avatar
B_M
Probleme regle...

C'etait en fait le programme d'acquisition des donnees qui etait
foireux... avec un parametrage dans un fichier txt planqué dans le dossier
d'installation ... Bref plus besoin de remplacer un " " par une virgule.

Merci beaucoup pour vos sugestions.

"Gloops" a écrit :

Salut,

A priori, j'ai aussi tendance à trouver louche, ce que tu dis là.

Dans mes tests en version 95 j'ai quand même eu un cas où la virgule
était ignorée par la fonction replace, comme si il fallait la préfixer
comme dans une "expression régulière", ça m'a laissé perplexe.


Tu devrais poser la question dans le newsgroup
microsoft.public.fr.excel, en précisant :
- la version d'Excel
- comment est paramétrée la fonction de fractionnement du texte (sur ma
version c'est Données / Convertir) ; il ne semble pas que ce soit en
cause, mais sait-on jamais.

Si on veut faire mumuse avec des remplacements sur mesure on peut
essayer quelque chose de ce style (qui ne peut bien entendu, en l'état,
rechercher qu'une chaîne de ... un espace) :

On peut aussi simplifier, j'ai décomposé pour pouvoir mieux situer les
erreurs le cas échéant.

Attention, quand je dis Selection.Formula, je suppose qu'une seule
cellule est sélectionnée : ça aussi il y a intérêt à adapter.

Sub Macro1()
Dim T As String
T = VirguleEnEspace(Selection.Formula, " ", ", ")
' pour mettre une virgule devant chaque espace
Selection.Formula = T
End Sub

Function VirguleEnEspace(T As String, De As String, Par As String) As String
Dim Tmp As String
For N = 1 To Len(T)
If Mid$(T, N, 1) = De Then
Tmp = Tmp + Par
Else
Tmp = Tmp + Mid$(T, N, 1)
End If
Next
VirguleEnEspace = Tmp
End Function