VBA : Formater une adresse postale

Voici un petit code qui permet de formater une adresse postale. Il est à insérer en dessous des lignes d’options (Option Compare…) d’un module standard (pas dans un module de classe, formulaire ou état) :

Valeur saisie : 115, impasse de la petite reine
Valeur formatée : 115, Impasse de la Petite Reine

Const particules= " de ; du ; d'; des ; l'; la ; le ; les ; en " 
'rajouter les mots en minuscule à ne pas mettre en majuscule 

Public Function formatAdresse(strAdresse As Variant) As String 
   Dim strA As String Dim arrParticules() As String 
   Dim i As Long 

   If IsNull(strAdresse) Then Exit Function 
   'si c'est null on ne traite pas 

   If strAdresse = "" Then Exit Function 
   'si c'est vide on ne traite pas 

   arrParticules = Split(particules, ";") 
   strA = StrConv(strAdresse, vbProperCase)
   'toutes les premieres lettres en majuscule
 
   For i = 0 To UBound(arrParticules) 
      strA = Replace(strA, arrParticules(i), LCase(arrParticules(i))) 
      'supprime la majuscule 
   Next 
   formatAdresse = strA 
End Function

On renseigne la constante avec les mots que l’on ne veut pas mettre en majuscule.
1) le strconv() met toutes les 1ère lettre de chaque mot en majuscule.
2) la boucle For remplace les mots trouvés qui correspondent à ceux de la constante.

L’appel de la fonction

Sélectionner la zone de texte de l’adresse que j’ai nommé Adresse, l’évènement Après MAJ et mettre ceci :

Private Sub Adresse_AfterUpdate() 
     Me.Adresse.Value = formatAdresse(Me.Adresse.Value) 
End Sub

« Adresse » est le nom de la zone de texte. Elle doit être remplacée par le nom de celle que vous souhaitez traiter.

Bonne utilisation !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *