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

Macro pour enlever carateres inderdits dans chaines de caracteres

6 réponses
Avatar
Christophe
Bonjour:

Excel 2007 - Windows XP.

Je souhaite ecrire une Macro pour effacer les caracteres interdits
suivants "&", ":", "/", "\", "?", "*", "[", "]" puis garder uniquement
les 31 carateres de gauche (y compris les espaces) pour les cellules
du Range ("B4:B123") de la feuille "Temporaire" et copier les
r=E9sultats dans le Range("A4:A123") de la meme feuille.

Merci.

Christophe

6 réponses

Avatar
JB
Bonjour,

Sub convert()
For Each c In [B4:B123]
temp = ""
For i = 1 To Len(c)
x = Mid(c, i, 1)
If (Asc(x) >= 65 And Asc(x) <= 65 + 25) Or Asc(x) = 32 Then tem p
= temp & x
Next i
c.Offset(, -1) = temp
Next c
End Sub

ou

Sub convert2()
autorisés = "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
For Each c In [B4:B123]
temp = ""
For i = 1 To Len(c)
x = Mid(c, i, 1)
If InStr(autorisés, x) > 0 Then temp = temp & x
Next i
c.Offset(, -1) = temp
Next c
End Sub


JB
http://boisgontierjacques.free.fr/

On 2 août, 22:57, Christophe wrote:
Bonjour:

Excel 2007 - Windows XP.

Je souhaite ecrire une Macro pour effacer les caracteres interdits
suivants "&", ":", "/", "", "?", "*", "[", "]" puis garder uniquement
les 31 carateres de gauche (y compris les espaces) pour les cellules
du Range ("B4:B123") de la feuille "Temporaire" et copier les
résultats dans le Range("A4:A123") de la meme feuille.

Merci.

Christophe
Avatar
Christophe
Bonjour JB:

Merci. Comme on dit: Il ya de l'idée mais c'est pas ça :-)

En fait, je souhaite enlever que les caratères suivants: & : / ? *
[ ] (cad les caractères interdits dans le nom d'un onglet) et les
remplacer par _ (ça j'avais oublié de le dire)

Si ca peut aider ci-dessous la macro que j'ai pour les onglets

'si la chaîne "Onglet" est vide
If Onglet1 = "" Then
Onglet1 = "ZZZZ"
GoTo Suite
End If
'si le nom comprend des caractères interdits -> tiret bas
For V = 1 To Len(Onglet1)
Select Case Mid(Onglet1, V, 1)
Case "&", ":", "/", "", "?", "*", "[", "]": Mid(Onglet1, V, 1) = "_"
End Select
Next
'si le nom est trop long -> tronqué à 31 caractères
If Len(Onglet1) > 31 Then
Onglet1 = Left(Onglet1, 31)
End If

Maintenant, je veux obtenir dans un document excel le nom de l'onglet
a coté du nom de la société.

Avec ta macro j'obtiens
A AADEE SA Argentinan (01)
- ?AADEE S.A.
A BIODIAGNSTICO SA Argentina (12) -
BIO&DIAGNÓSTICO S.A

Je souhaite obtenir
Argentina (01) - _AADEE S.A. Argentina (01) - ?AADEE
S.A.
Argentina (12) - BIO_DIAGNÓSTIC Argentina (12) -
BIO&DIAGNÓSTICO S.A

Merci.

Christophe
Avatar
LSteph
Bonjour,

Tu as visiblement zappé la deuxième proposition de JB
que tu dois pouvoir adapter ainsi par exemple:

Sub convInterd_()
Dim mystr As String, c as range, i as integer
For Each c In [B4:B123]
mystr = ""
For i = 1 To Len(c)
x = Mid(c, i, 1)
If InStr("/?,;*&:[]", x) > 0 Then
mystr = mystr & "_"
Else
mystr = mystr & x
End If
Next i
c.Offset(, -1) = mystr
Next c

End Sub

'--
'LSteph


On 3 août, 13:22, Christophe wrote:
Bonjour JB:

Merci.  Comme on dit: Il ya de l'idée mais c'est pas ça :-)

En fait, je souhaite enlever que les caratères suivants: & : / ? *
[ ]  (cad les caractères interdits dans le nom d'un onglet) et les
remplacer par _ (ça j'avais oublié de le dire)

Si ca peut aider ci-dessous la macro que j'ai pour les onglets

'si la chaîne "Onglet" est vide
If Onglet1 = "" Then
Onglet1 = "ZZZZ"
GoTo Suite
End If
    'si le nom comprend des caractères interdits -> tiret bas
For V = 1 To Len(Onglet1)
Select Case Mid(Onglet1, V, 1)
Case "&", ":", "/", "", "?", "*", "[", "]": Mid(Onglet1, V, 1) = "_"
 End Select
 Next
'si le nom est trop long -> tronqué à 31 caractères
If Len(Onglet1) > 31 Then
    Onglet1 = Left(Onglet1, 31)
  End If

Maintenant, je veux obtenir dans un document excel le nom de l'onglet
a coté du nom de la société.

Avec ta macro j'obtiens
A   AADEE SA                                          Argentinan (01)
- ?AADEE S.A.
A   BIODIAGNSTICO SA                            Argentina (12) -
BIO&DIAGNÓSTICO S.A

Je souhaite obtenir
Argentina (01) - _AADEE S.A.                  Argentina (01) - ?AADEE
S.A.
Argentina (12) - BIO_DIAGNÓSTIC            Argentina (12) -
BIO&DIAGNÓSTICO S.A

Merci.

Christophe
Avatar
Sam
Bonjour,
dans quelle colonne se trouve le nom de la société ?

Cordialement
Michel dit "Sam"

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

Bonjour JB:

Merci. Comme on dit: Il ya de l'idée mais c'est pas ça :-)

En fait, je souhaite enlever que les caratères suivants: & : / ? *
[ ] (cad les caractères interdits dans le nom d'un onglet) et les
remplacer par _ (ça j'avais oublié de le dire)

Si ca peut aider ci-dessous la macro que j'ai pour les onglets

'si la chaîne "Onglet" est vide
If Onglet1 = "" Then
Onglet1 = "ZZZZ"
GoTo Suite
End If
'si le nom comprend des caractères interdits -> tiret bas
For V = 1 To Len(Onglet1)
Select Case Mid(Onglet1, V, 1)
Case "&", ":", "/", "", "?", "*", "[", "]": Mid(Onglet1, V, 1) = "_"
End Select
Next
'si le nom est trop long -> tronqué à 31 caractères
If Len(Onglet1) > 31 Then
Onglet1 = Left(Onglet1, 31)
End If

Maintenant, je veux obtenir dans un document excel le nom de l'onglet
a coté du nom de la société.

Avec ta macro j'obtiens
A AADEE SA Argentinan (01)
- ?AADEE S.A.
A BIODIAGNSTICO SA Argentina (12) -
BIO&DIAGNÓSTICO S.A

Je souhaite obtenir
Argentina (01) - _AADEE S.A. Argentina (01) - ?AADEE
S.A.
Argentina (12) - BIO_DIAGNÓSTIC Argentina (12) -
BIO&DIAGNÓSTICO S.A

Merci.

Christophe
Avatar
Christophe
Bonjour:

Les noms des entreprises sont en ("B4:B123"). mais ne cherche plus L
Steph vient de trouver la solution.

Sincères salutations.

Christophe
Avatar
Christophe
Bonjour:

Je pensais t'avoir répondu hier mais a priori non. C'est parfait,
merci.

Christophe