OVH Cloud OVH Cloud

Cellules avec caractères accentuées

16 réponses
Avatar
Albert
Bonjour

Comment compter les noms, prénoms ayant des caractères accentés dans une
liste de plus de 500 noms.

Colonne B = Nom, Colonne C = Prénom

J'ai essayé =NB.SI(B2:B500;"é") mais sans succès.

Merci de vos suggestions


--
albertri-at-videotron.ca.invalid

6 réponses

1 2
Avatar
DanielCo
Bonjour,
J'en déduis donc qu'il faut enlevere les accents de la colonne A. La
fonction que je poste provient du site excelabo.net

Sub test2()
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A1], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub

Function Sans_accents$(Chaine$) ' R. Dezan + Michel Pierron
'Cette fonction enlève également les ¼, ½, Æ, æ qui posent un problème
sur les sytèmes anglais.
' remplacement des caractères accentués
a$ = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
b$ = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
Chaine = Replace(Replace(Replace(Replace(Chaine, "½", "oe"), "¼", _
"OE"), "æ", "ae"), "Æ", "AE")
For i% = 1 To Len(Chaine)
u% = InStr(1, a, Mid(Chaine, i, 1), 0)
If u Then Mid(Chaine, i, 1) = Mid(b, u, 1)
Next i
Sans_accents = Chaine
End Function

Daniel

Bonjour DanielCo

Notre organisation sans but lucratif, veut transmettre aux membres leur fiche
personnelle par publipostage pour mise à jour.
Les FAI ne permettent pas de faire du publipostage par courriel, nous
essayons via un serveur PHP. Malheureusement les fiches personnelles
contenant des accents sont reçues par les membres avec des erreurs. Nous
voulons faire le compte des fiches de membre contenant un accent ou plus, une
fiche par ligne. Les colonnes B,C,D,E et F peuvent contenir des accents, la
colonne A doit obligatoirement contenir le Email. Tout cela en attendant de
trouver la solution avec le serveur PHP.

Merci de votre attention
Albert




"DanielCo" a écrit dans le message de
news:ivm52f$bq2$
Non, je traite une colonne (A dans l'exemple), cellule par cellule. Mais
qu'est-ce que tu entends par "traiter" ?
Daniel

Albert a écrit
Ma description du but recherché a changer depuis ma première demande,
Au début je voulais compter les noms avec accents par colonne, en
regardant votre Macro je vois que vous y allez par ligne (ROW), en effet
il faut traiter différement les adresses avec mot accentué, un seul mot
accentué ou plusieurs dans la ligne compte pour un, donc à la recontre
d'un accent on passe à la ligne suivante,.

Je ne suis pas pressé
merci
Albert



Avatar
Albert
REbonjour Daniel

Remplacer les accents est simple avec "Rechercher et Remplacer" de Excel, il
y a 330 "é", 82 "è" et 24 "ô" le tout a pris moins de 30 secondes.

Au début on voulait avoir une idée du nombre de membres avec accents, ce que
j'ai essayé sans succès avec NB.SI(), c'est alors que je me suis adressé au
forum.

Votre macro actuelle "Sub Test3()" modifiée pour lire la colonne D (nom,
prenom),
*For Each c In Range([D1], Cells(Rows.Count, 1).End(xlUp))*
Donne un compte 1804 alors que le fichier ne compte que 543 lignes.

Si je supprime les colonnes A, B et C, (Nom, prenom) se trouve en colonne A
et avec la macro originale le compte est 542,
Si j'enlève la vigule entre le nom et prénom le compte baisse à 476, est-ce
le total des caractères accentués?

Je vous remercie même si une solution simple n'a pas été trouvée.
merci
albert




"DanielCo" a écrit dans le message de
news:ivmprg$v5u$
Bonjour,
J'en déduis donc qu'il faut enlevere les accents de la colonne A. La
fonction que je poste provient du site excelabo.net

Sub test2()
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A1], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub

Function Sans_accents$(Chaine$) ' R. Dezan + Michel Pierron
'Cette fonction enlève également les ¼, ½, Æ, æ qui posent un problème sur
les sytèmes anglais.
' remplacement des caractères accentués
a$ = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
b$ = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
Chaine = Replace(Replace(Replace(Replace(Chaine, "½", "oe"), "¼", _
"OE"), "æ", "ae"), "Æ", "AE")
For i% = 1 To Len(Chaine)
u% = InStr(1, a, Mid(Chaine, i, 1), 0)
If u Then Mid(Chaine, i, 1) = Mid(b, u, 1)
Next i
Sans_accents = Chaine
End Function

Daniel

Bonjour DanielCo

Notre organisation sans but lucratif, veut transmettre aux membres leur
fiche personnelle par publipostage pour mise à jour.
Les FAI ne permettent pas de faire du publipostage par courriel, nous
essayons via un serveur PHP. Malheureusement les fiches personnelles
contenant des accents sont reçues par les membres avec des erreurs. Nous
voulons faire le compte des fiches de membre contenant un accent ou plus,
une fiche par ligne. Les colonnes B,C,D,E et F peuvent contenir des
accents, la colonne A doit obligatoirement contenir le Email. Tout cela
en attendant de trouver la solution avec le serveur PHP.

Merci de votre attention
Albert


Avatar
DanielCo
Ma description du but recherché a changer depuis ma première demande,
Au début je voulais compter les noms avec accents par colonne



Quel est AU JUSTE ton besoin ?

Mon précédent post contient une macro et une fonction qui enlèvent les
accents de la colonne A. Pourquoi est-ce que tu me parles de nouveau de
comptage ?

Daniel

REbonjour Daniel

Remplacer les accents est simple avec "Rechercher et Remplacer" de Excel, il
y a 330 "é", 82 "è" et 24 "ô" le tout a pris moins de 30 secondes.

Au début on voulait avoir une idée du nombre de membres avec accents, ce que
j'ai essayé sans succès avec NB.SI(), c'est alors que je me suis adressé au
forum.

Votre macro actuelle "Sub Test3()" modifiée pour lire la colonne D (nom,
prenom),
*For Each c In Range([D1], Cells(Rows.Count, 1).End(xlUp))*
Donne un compte 1804 alors que le fichier ne compte que 543 lignes.

Si je supprime les colonnes A, B et C, (Nom, prenom) se trouve en colonne A
et avec la macro originale le compte est 542,
Si j'enlève la vigule entre le nom et prénom le compte baisse à 476, est-ce
le total des caractères accentués?

Je vous remercie même si une solution simple n'a pas été trouvée.
merci
albert
Avatar
michel ou sam
Bonjour,
en reprenant la macro de Daniel (je suis quand même culloté ;-) )
et en prenant en compte
- les colonnes A à F
- les chiffres contenus dans le texte,
(en espérant qu'il ne faille pas traiter les caractères : ; < = > ? )

Sub Macro1()
Dim c As Range, Ctr As Long, i As Integer
Dim Derlig As Long, Flag As Byte
Derlig = Range("A65536").End(xlUp).Row

For n = 1 To Derlig
Flag = 0
For Each c In Range(Cells(n, 1), Cells(n, 6))
For i = 1 To Len(c.Value)
If (UCase(Mid(c.Value, i, 1)) < "0" Or UCase(Mid(c.Value, i, 1)) >
"Z") Then
If Mid(c.Value, i, 1) <> "-" And Mid(c.Value, i, 1) <> "'" _
And Mid(c.Value, i, 1) <> " " And Mid(c.Value, i, 1) <> "." Then
Flag = 1
c.Interior.ColorIndex = 43
End If
End If
Next i
Next c
If Flag = 1 Then Ctr = Ctr + 1
Next n
MsgBox Ctr, , "nombre de lignes"
End Sub

( J'ai laissé une mise en couleur des cellules fautives )

Michel



"Albert" a écrit dans le message de news:
ivmtpr$9p8$
REbonjour Daniel

Remplacer les accents est simple avec "Rechercher et Remplacer" de Excel,
il y a 330 "é", 82 "è" et 24 "ô" le tout a pris moins de 30 secondes.

Au début on voulait avoir une idée du nombre de membres avec accents, ce
que j'ai essayé sans succès avec NB.SI(), c'est alors que je me suis
adressé au forum.

Votre macro actuelle "Sub Test3()" modifiée pour lire la colonne D (nom,
prenom),
*For Each c In Range([D1], Cells(Rows.Count, 1).End(xlUp))*
Donne un compte 1804 alors que le fichier ne compte que 543 lignes.

Si je supprime les colonnes A, B et C, (Nom, prenom) se trouve en colonne
A et avec la macro originale le compte est 542,
Si j'enlève la vigule entre le nom et prénom le compte baisse à 476,
est-ce le total des caractères accentués?

Je vous remercie même si une solution simple n'a pas été trouvée.
merci
albert




"DanielCo" a écrit dans le message de
news:ivmprg$v5u$
Bonjour,
J'en déduis donc qu'il faut enlevere les accents de la colonne A. La
fonction que je poste provient du site excelabo.net

Sub test2()
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A1], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub

Function Sans_accents$(Chaine$) ' R. Dezan + Michel Pierron
'Cette fonction enlève également les ¼, ½, Æ, æ qui posent un problème
sur les sytèmes anglais.
' remplacement des caractères accentués
a$ = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
b$ = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
Chaine = Replace(Replace(Replace(Replace(Chaine, "½", "oe"), "¼", _
"OE"), "æ", "ae"), "Æ", "AE")
For i% = 1 To Len(Chaine)
u% = InStr(1, a, Mid(Chaine, i, 1), 0)
If u Then Mid(Chaine, i, 1) = Mid(b, u, 1)
Next i
Sans_accents = Chaine
End Function

Daniel

Bonjour DanielCo

Notre organisation sans but lucratif, veut transmettre aux membres leur
fiche personnelle par publipostage pour mise à jour.
Les FAI ne permettent pas de faire du publipostage par courriel, nous
essayons via un serveur PHP. Malheureusement les fiches personnelles
contenant des accents sont reçues par les membres avec des erreurs. Nous
voulons faire le compte des fiches de membre contenant un accent ou
plus, une fiche par ligne. Les colonnes B,C,D,E et F peuvent contenir
des accents, la colonne A doit obligatoirement contenir le Email. Tout
cela en attendant de trouver la solution avec le serveur PHP.

Merci de votre attention
Albert







Avatar
DanielCo
(je suis quand même culloté ;-) )



Surtout aujoud'hui, le jour des "Sans-Culottes" ;-)))
Cordialement.
Daniel
Avatar
Albert
Pardonnez le retard
Mais bonne fête Nationale à tous les culottés.

Merci Daniel et Michel cela me permet d'approndir le peu de VBA appris.

Michel vous avez bien compris mon besoin d'avoir un aperçu et avec les
couleurs c'est génial.
Vous voir un aperçu à
http://www.cijoint.fr/cjlink.php?file=cj201107/cijLasbu6k.jpg

Les colonnes sont A=Email, B=Nom, C=Prénom, D=(Nom, Prenom), E­resse,
F-Ville, G-Téléphone, H=sexe, I= date de renouvellement
|| Richard || André || Richard, André || 44 DÉSIRÉ ||
SAINT-BRUNO QC J3V 1E1

J'ai modifié votre macro pour le range comme suit :
"For Each c In Range(Cells(n, 4), Cells(n, 6))" (voir note plus bas)
pour scanner seulement les colonnes 4, 5 et 6,
La colonne A c'est les Email il n'y pas d'accent, mais des "_"
Les colonnes B et C ce sont les nom et prenom qui se répète dans le
nomcomplet de la colonne D.

J'ai aussi modifier un critère en ajoutant * And Mid(c.Value, i, 1) <> "," *
pour exclure la virgule qu'il y a à chaque nom dans la colonne D,

Le MsgBox indique 210 lignes avec ces trois colonnes sélectionnées, je
croyais que c'était le nombre de cellules coloriées, mais j'étais dans
l'erreur, c'est bien 210 lignes, nous avions très sous-estimé le nombre de
fiches avec accents, c'est presque la moitié des membres.

(Si je remet les colonnes B et C le compte reste à 210, donc c'est bien les
lignes que le MsgBox affiche.)

Merci à DanielCo et Michel ou Sam pour ces macros, je les garde
précieusement et cela m'aidera dans ma formation VBA.

Albert



"michel ou sam" a écrit dans le message de
news:4e1f173f$0$30765$

Bonjour,
en reprenant la macro de Daniel (je suis quand même culloté ;-) )
et en prenant en compte
- les colonnes A à F
- les chiffres contenus dans le texte,
(en espérant qu'il ne faille pas traiter les caractères : ; < = > ? )

Sub Macro1()
Dim c As Range, Ctr As Long, i As Integer
Dim Derlig As Long, Flag As Byte
Derlig = Range("A65536").End(xlUp).Row

For n = 1 To Derlig
Flag = 0
For Each c In Range(Cells(n, 1), Cells(n, 6))
For i = 1 To Len(c.Value)
If (UCase(Mid(c.Value, i, 1)) < "0" Or UCase(Mid(c.Value, i, 1)) >
"Z") Then
If Mid(c.Value, i, 1) <> "-" And Mid(c.Value, i, 1) <> "'" _
And Mid(c.Value, i, 1) <> " " And Mid(c.Value, i, 1) <> "." Then
Flag = 1
c.Interior.ColorIndex = 43
End If
End If
Next i
Next c
If Flag = 1 Then Ctr = Ctr + 1
Next n
MsgBox Ctr, , "nombre de lignes"
End Sub

( J'ai laissé une mise en couleur des cellules fautives )

Michel



"Albert" a écrit dans le message de news:
ivmtpr$9p8$
REbonjour Daniel

Remplacer les accents est simple avec "Rechercher et Remplacer" de Excel,
il y a 330 "é", 82 "è" et 24 "ô" le tout a pris moins de 30 secondes.

Au début on voulait avoir une idée du nombre de membres avec accents, ce
que j'ai essayé sans succès avec NB.SI(), c'est alors que je me suis
adressé au forum.

Votre macro actuelle "Sub Test3()" modifiée pour lire la colonne D (nom,
prenom),
*For Each c In Range([D1], Cells(Rows.Count, 1).End(xlUp))*
Donne un compte 1804 alors que le fichier ne compte que 543 lignes.

Si je supprime les colonnes A, B et C, (Nom, prenom) se trouve en
colonne A et avec la macro originale le compte est 542,
Si j'enlève la vigule entre le nom et prénom le compte baisse à 476,
est-ce le total des caractères accentués?

Je vous remercie même si une solution simple n'a pas été trouvée.
merci
albert




"DanielCo" a écrit dans le message de
news:ivmprg$v5u$
Bonjour,
J'en déduis donc qu'il faut enlevere les accents de la colonne A. La
fonction que je poste provient du site excelabo.net

Sub test2()
Dim c As Range, Ctr As Long, i As Integer
For Each c In Range([A1], Cells(Rows.Count, 1).End(xlUp))
c.Value = Sans_accents$(c.Value)
Next c
End Sub

Function Sans_accents$(Chaine$) ' R. Dezan + Michel Pierron
'Cette fonction enlève également les ¼, ½, Æ, æ qui posent un problème
sur les sytèmes anglais.
' remplacement des caractères accentués
a$ = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿ"
b$ = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyy"
Chaine = Replace(Replace(Replace(Replace(Chaine, "½", "oe"), "¼", _
"OE"), "æ", "ae"), "Æ", "AE")
For i% = 1 To Len(Chaine)
u% = InStr(1, a, Mid(Chaine, i, 1), 0)
If u Then Mid(Chaine, i, 1) = Mid(b, u, 1)
Next i
Sans_accents = Chaine
End Function

Daniel

Bonjour DanielCo

Notre organisation sans but lucratif, veut transmettre aux membres leur
fiche personnelle par publipostage pour mise à jour.
Les FAI ne permettent pas de faire du publipostage par courriel, nous
essayons via un serveur PHP. Malheureusement les fiches personnelles
contenant des accents sont reçues par les membres avec des erreurs.
Nous voulons faire le compte des fiches de membre contenant un accent
ou plus, une fiche par ligne. Les colonnes B,C,D,E et F peuvent
contenir des accents, la colonne A doit obligatoirement contenir le
Email. Tout cela en attendant de trouver la solution avec le serveur
PHP.

Merci de votre attention
Albert











1 2