suppression automatique d'accent sous vba

  • Initiateur de la discussion Initiateur de la discussion web59matth
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

W

web59matth

Guest
Bonjour,
Je rencontre un problème sous vba.
J'ai deux feuilles d'un même classeur, l'un comporte des référence avec accent et l'autres sans accent en majuscule.

Je voudrais supprimer les accents de manière automatique" prendre le contenue d'une cellule comportant un accent et remplacer cette cellule avec le même texte sans accents".

J'ai trouver ce programme que j'ai unclus dans un module.

Private Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç"
Private Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc"

' La fonction :
Public Function sansAccents(ByRef s As String) As String
Dim i As Integer
Dim lettre As String * 1
sansAccents = s
For i = 1 To Len(accent)
lettre = Mid$(accent, i, 1)
If InStr(sansAccents, lettre) > 0 Then
sansAccents = Replace(sansAccents, lettre, Mid$(noAccent, i, 1))
End If
Next i
End Function

Le problème est que celui ci ne fonctionne pas de manière automatique.
 
Re : suppression automatique d'accent sous vba

Salut web59matth et le forum
Déjà, quand tu utilises du code, utilises les balises prévues à cet effet (#)
J'ai trouver ce programme que j'ai inclus dans un module.
...
Le problème est que celui ci ne fonctionne pas de manière automatique.
??? C'est pas un programme, mais une function : ça s'utilise comme une fonction, avec pour paramètre un texte et dont le résultat est le même texte, débarrassé de ses accents. Penser à mettre Application.volatile jsute après les déclarations.
A+
 
Re : suppression automatique d'accent sous vba

Bonjour,
Merci pour votre aide.
La fonction marche nickel, seul petit problème.
Mes feuilles comporte déjà des données, pour supprimer les accents je suis obligé de sélectionner la cellules cliquer "comme pour modifier le contenue" et appuyer sur entrer.
Ne serais t'il pas possible de faire cette manipulation automatiquement?

Merci pour votre aide.
 
Re : suppression automatique d'accent sous vba

Bonjour,

En fonction de ton besoin, je pense qu'une bonne solution consisterait à :
1° A l'ouverture du classeur, un message demande si il faut virer les accents de toutes les feuilles.

2° Si la réponse est oui, il le fait

3° Il suffit alors de coller ce code dans le module ThisWorkbook :
VB:
Private Sub Workbook_Open()
    If MsgBox("Virer les accents de toutes les feuilles du classeur ?", vbYesNo) = vbYes Then
        For Each sh In ThisWorkbook.Worksheets
            sh.Activate
            virerlesaccentsdelafeuille
        Next sh
    End If
End Sub
 
Dernière édition:
Re : suppression automatique d'accent sous vba

Merci beaucoup pour votre aide.
Je pense que je vais creer un sub qui va activer les deux première feuilles dans lesquels je veux supprimer les accents. Un fois les feuilles activée je vais appeler la procedure"VireMoiLesAccentsDelaFeuille" pour supprimer les accents.
Maintenant je ne sais pas comment faire mais je vais chercher.
 
Re : suppression automatique d'accent sous vba

Ok ok le truc c'est que je fais un ptit programme destiné à d'autres personnes.
Si une personne oublis de faire cette manipulation, le reste du programme va me sortir des erreurs car celui-ci ne va pas trouver les mêmes références dans la feuille 1 et 2 à cause des accents.
Il faut que cette suppression d'accents ce lance de manière automatique.
Je vais farfouiller sur le net, je vais bien finir par trouver.

Merci pour ton aide.
 
Re : suppression automatique d'accent sous vba

njour,

En fonction de ton besoin, je pense qu'une bonne solution consisterait à :
1° A l'ouverture du classeur, un message demande si il faut virer les accents de toutes les feuilles.

2° Si la réponse est oui, il le fait

3° Il suffit alors de coller ce code dans le module ThisWorkbook :

VB:
Private Sub Workbook_Open()
    If MsgBox("Virer les accents de toutes les feuilles du classeur ?", vbYesNo) = vbYes Then
        For Each sh In ThisWorkbook.Worksheets
            sh.Activate
            virerlesaccentsdelafeuille
        Next sh
    End If
End Sub
 
Re : suppression automatique d'accent sous vba

Je pense que je vais retirer le #If MsgBox("Virer les accents de toutes les feuilles du classeur ?", vbYesNo)#
De cette maniere, je vais supprimer les erreurs d'accent et de plus j'ai ajouter un Ucase 'mon texte' dans mon code pour les erreurs maj/min.
Je recherche un code le plus rigoureux possible mais ce n'est vraiment pas simple surtout sous VBA.
 
Re : suppression automatique d'accent sous vba

Bonjour le forum,

catte discussion m'intéresse, mais je cherche la macro virerlesaccentsdelafeuille

pour moi ce serait un truc du style :

for each cellule in selection
txt = c.Value
For i = 1 To Len(txt)
Select Case Mid(txt, i, 1)
Case Chr(192) To Chr(197), Chr(224) To Chr(229)
char = "A"
Case Chr(232) To Chr(235), Chr(200) To Chr(203)
char = "E"
Case "í", "ì", "î", "ï", "Í", "Ì", "Î", "Ï"
char = "I"
Case "ó", "ò", "ô", "ö", "õ", "Ó", "Ò", "Ô", "Ö", "Õ", Chr(248)
char = "O"
Case "ú", "ù", "û", "ü", "Ú", "Ù", "Û", "Ü"
char = "U"
Case "ÿ", "ý", Chr(221), Chr(159)
char = "Y"
Case "ñ", "Ñ"
char = "N"
Case "ç", Chr(199)
char = "C"
Case Chr(230), Chr(198)
char = "AE"
Case Chr(138)
char = "S"
Case Chr(140), Chr(156)
char = "OE"
Case Else
char = UCase(Mid(txt, i, 1))
End Select
laChaine = laChaine & char
Next i
Next cellule

mais ça marche pô

en fait, il faut supprimer les accents de la plage sélectionnée et mettre en majuscules (voire toute la feuille mais le problème c'est que j'ai une colonne avec des adresses e-mail et qu'elle ne doit pas être mise en majuscules, mais cette colonne n'est pas toujours au même endroit... ) il y a aussi des colonnes avec des chiffres uniquement
bref, je sèche.

Auriez-vous une idée?

Merci et bonne soirée

C@thy
 
Dernière édition:
Re : suppression automatique d'accent sous vba

Hello Cathy🙂🙂🙂


à mettre dans un module, fera la différence entre les emails et autres chaines de caractères. Le test est fait sur la présence de l'arobase, si c'est pas suffisant on peut ajouter un test sur le format du contenu (bleu souligné) voir si c'est bien un email.

Code:
Option Explicit
' Définition de la conversion
Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç"
Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc"
' La fonction :
Private Function sansAccents(ByRef s As String) As String
Dim i As Integer
Dim lettre As String * 1
  sansAccents = s
  For i = 1 To Len(accent)
    lettre = Mid$(accent, i, 1)
    If InStr(sansAccents, lettre) > 0 Then
       sansAccents = Replace(sansAccents, lettre, Mid$(noAccent, i, 1))
    End If
  Next i
End Function
Public Sub JaiDitPasDaccent()
    Dim c As Range
    If TypeName(Selection) <> "Range" Then
        MsgBox "Vous ne pouvez utiliser cette macro que sur une sélection de cellule!", vbExclamation, "JaiDitPasDaccent"
    Else
        For Each c In Selection
            If TypeName(c.Value) = "String" Then
                If InStr(1, c.Text, "@") > 0 Then
                    'Adresse Mail en minuscule sans accent
                    c = LCase(sansAccents(c.Text))
                Else
                    'Le reste en majuscule sans accent
                    c = UCase(sansAccents(c.Text))
                End If
            End If
        Next
    End If
End Sub

A++

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour