Macro pour enlever carateres inderdits dans chaines de caracteres
6 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 <cj...@mail.doc.gov> 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.
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
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
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. 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
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
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 <cj...@mail.doc.gov> 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
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
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
Bonjour,
dans quelle colonne se trouve le nom de la société ?
Cordialement
Michel dit "Sam"
"Christophe" <cjoly@mail.doc.gov> a écrit dans le message de news:
58d6ea11-6099-4472-beae-d2d64d7a7089@y11g2000yqm.googlegroups.com...
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
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
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
Bonjour:
Les noms des entreprises sont en ("B4:B123"). mais ne cherche plus L
Steph vient de trouver la solution.