Microsoft 365 remplacer caractères

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à toutes,
Je vous souhaite un bon et beau WE :)

Je bute encore une fois sur un codage que je n'arrive pas à faire.
Et je me permets de vous solliciter à nouveau.
Contexte
Nos Clients ou nvx Clients nous envoient par mail des listes de communes à prospecter.
Afin de ne pas prospecter les communes pour trop de Clients, je vérifie les communes que nous avons déjà en prospection.
Pour cela j'ai un classeur, avec un code fait avec l'enregistreur de macro, pour remplacer le maximum de cas rencontrés, qui va pas trop mal lol

Les Clients m'envoient leurs communes en écritures diverses et variées LOL
Pour que je puisse vérifier dans mon classeur, il est impératif que les communes comparées soient "rigoureusement" nommées à l'identique.

Toutefois, c'est incomplet, je gère plus de 4000 communes et je suis trop souvent obligé de passer bcp de temps pour vérifier manuellement.

J'ai obtenu de je ne sais plus qui du forum un code (mes excuses pour l'avoir oublié et mes remerciements à nouveau) qui fonctionne très bien pour certains remplacements de caractères :
VB:
Function Sans_accents(chaine As Range)
   Dim T As String, A As String, B As String
   Dim i As Integer, U As String
   If chaine.Value = "" Then Exit Function
   T = chaine.Value
   'remplacement des caractères accentués
   A = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿçÇ"
   B = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyycC"
   For i = 1 To Len(T)
      U = InStr(1, A, Mid(T, i, 1), 0)
      If U Then Mid(T, i, 1) = Mid(B, U, 1)
   Next i
   Sans_accents = T
End Function
Malheureusement, j'ai d'autres remplacements à faire et je n'arrive pas à trouver comment faire le code
exemple :
8400 ardeuil-a-montfauxelles
8400 ardeuil_a_montfauxelles

Résultats attendus
8400 ardeuil a montfauxelles
8400 ardeuil a montfauxelles

etc...

J'ai fait un fichier test dans lequel :
- en colonne A (a4 à a38) j'ai listé les noms de communes à modifier,
- en colonne D j'ai listé les résultats attendus,

Auriez-vous la solution ?
Cela me ferait gagner un temps considérable.
Je joins le fichier test,
Avec mes remerciements,
lionel,
 

Pièces jointes

  • forum_test.xlsm
    18.3 KB · Affichages: 9
Dernière édition:
Solution
C
Re,

Non le nombre de chiffres du code postal ne me pose pas de problème

Voici la dernière version avec d'autres exemples, j'ai également pensé à traiter le cas
8400 l' Espace après l'apostrophe :p

@+

Pounet95

XLDnaute Occasionnel
Bonsoir,
Ne sois pas désolé, j'étais demandeur d'une telle intervention ! (post #6 )
Il y a un espace entre le début du nom et l'apostrophe : ' je figure avec underscore en bleu)
au lieu d'avoir mordeuil d'amont par exemple, le résultat est mordeuil d'_amont
 

Usine à gaz

XLDnaute Barbatruc
Re(s) (désolé, j'étais sorti),
@BrunoM45 : la version du post #14 est nickel et c'est magique tous les cas sont traités et la partie du code :
Avant = "st ,ste ,s/ ,s/,d' ,l' "
Après = "saint ,sainte ,sur ,sur ,d',l'"
Me permet d'ajouter de nouvelles modifications.

@Pounet95 : la liste des communes n'est pas nécessaire dans le fichier car il s'agit uniquement de comparer une liste de communes à une autre.
La version du post #14 de BrunoM45 a résolu les besoins (sauf erreur de ma part lol).

Merci à vous 2 d'avoir pris du temps pour m'aider :)
Bonne fin de dimanche,
lionel,
 

Pounet95

XLDnaute Occasionnel
Re,
Pour que ça fonctionne; et c'est le cas de la macro de Bruno, il reste une vérification à faire : comparer les résultats attendus et là, voir image !
Il faut donc modifier la source en colonne A ( enlever un espace derrière l'apostrophe car il y en a 2 )
Problème des caractères non visibles :)

Bon courage
Bonsoir à tous
Claude

Capture.PNG
 
C

Compte Supprimé 979

Guest
Lionel,

Une autre version,

Il restait un petit bémol tout de même, j'ai changé la fonction et ajouté des communes de France pour te montrer

Edit : Tout à fait Pounet95, c'est pour cette raison et d'autres (gestion des majuscules) que j'ai modifié la fonction ;)

@+
 

Pièces jointes

  • UsineAGaz_forum_test v3.xlsm
    20.9 KB · Affichages: 7

Usine à gaz

XLDnaute Barbatruc
Bonjour BrunoM45, Bonjour Pounet95, Bonjour à toutes et à tous,
Je vous souhaite un beau dimanche :)

@BrunoM45 : Génial ton code et même si je suis loin de tout comprendre, il est facile à modifier et je peux facilement ajouter d'autres modifications en fonction des nouvelles bizarreries d'écritures des noms de communes que je rencontrerai.
Vraiment génial ... Merci à toi :)
lionel,
 

Usine à gaz

XLDnaute Barbatruc
Re-Bonjour,

Toujours super ton code et en test :p
Je dispose d'un code qui permet de transformer une chaine de caractères en minuscules :
VB:
Sub Lowercase()
   ' Loop to cycle through each cell in the specified range.
   For Each x In Range("A2", Range("A2").End(xlDown))
      x.Value = LCase(x.Value)
   Next
End Sub
Utiliser ce code permet d'éviter la gestion des majuscules/minuscules.
Je l'ai intégré dans le classeur et cela me permet de mettre "tout en minuscule"
Actuellement, je clique sur mon bouton avant de remplacer les caractères.

S'il est possible d'intégrer cette fonction dans ton code, ce sera "Perfect" lol.
Mais pas important si pas possible ... j'ai encore, malgré mon grand âge, assez d'énergie pour cliquer sur un bouton ;)
@+
lionel,
 
C

Compte Supprimé 979

Guest
Lionel,

C'est ultra simplissime, tu vas pouvoir le faire toi même :p

A la fin de ma fonction dans le module1, tu remplaces la dernière ligne par
VB:
  ' Retourner la valeur de la fonction tout en minuscule
  Sans_Accent = LCase(Chaine)

@+
 

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,

@BrunoM45 : ton code fonctionne super bien après de nombreuses utilisations ... Encore Merci.
Toutefois, je m'aperçois que j'ai oublié 4 cas que je n'arrive pas à traiter :
c'est quand : l' la le les se trouvent en tête du nom des communes
8400 l'ardeuil_vers_montfauxelles..........= 8400 ardeuil vers montfauxelles
8400 la rochelle_vers_montfauxelles.....= 8400 rochelle vers montfauxelles
8400 le rochelle_vers_montfauxelles.....= 8400 rochelle vers montfauxelles
8400 les rochelle_vers_montfauxelles...= 8400 rochelle vers montfauxelles

Veux tu m'apporter ton aide encore une fois ?
En cas je joins le fichier test (j'ai mis les communes en fin de feuille),
Encore un grand merci :)
Je continue à chercher
Bonne et belle journée à toutes et à tous,
lionel,
 

Pièces jointes

  • UsineAGaz_forum_test v3.xlsm
    19.6 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 190
Membres
112 679
dernier inscrit
Yupanki