Extraire des informations spécifiques comme l’adresse, le code postal ou le nom de la ville d’une cellule Excel peut sembler complexe, mais il existe plusieurs méthodes pour y parvenir. Cet article détaille trois approches : l’utilisation de formules, de fonctions VBA et de macros. Voici un guide étape par étape.

1. Extraire l’adresse (n° et rue)

Avec une formule Excel

Entrez la formule suivante dans la cellule B2 (en supposant que vos données sont en A2) :

=GAUCHE(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)-5)

Appuyez sur Ctrl + Maj + Entrée pour valider la formule.

Résultat attendu : La partie contenant le numéro et le nom de la rue sera extraite.

Avec une fonction VBA

Vous pouvez utiliser la fonction personnalisée suivante pour extraire l’adresse :

Function ExtraireAdresse(cellule As Range) As String
    Dim chaine As String
    chaine = cellule.Value
    Dim positionPremierChiffre As Integer
    positionPremierChiffre = 0
    Dim i As Integer
    For i = 1 To Len(chaine)
        If IsNumeric(Mid(chaine, i, 1)) And _
           IsNumeric(Mid(chaine, i + 1, 1)) And _
           IsNumeric(Mid(chaine, i + 2, 1)) And _
           IsNumeric(Mid(chaine, i + 3, 1)) And _
           IsNumeric(Mid(chaine, i + 4, 1)) Then
            positionPremierChiffre = i
            Exit For
        End If
    Next i
    If positionPremierChiffre = 0 Then
        ExtraireAdresse = chaine
    Else
        ExtraireAdresse = Trim(Left(chaine, positionPremierChiffre - 1))
    End If
End Function

Avec une macro

Pour appliquer cette extraction à toutes les cellules d’une colonne :

Sub AppliquerExtraireAdresse()
    Dim cellule As Range
    Dim derniereLigne As Long
    derniereLigne = Cells(Rows.Count, "A").End(xlUp).Row
    For Each cellule In Range("A1:A" & derniereLigne)
        cellule.Offset(0, 1).Value = ExtraireAdresse(cellule)
    Next cellule
End Sub

2. Extraire le code postal

Avec une formule Excel

Dans la cellule C2, utilisez cette formule :

=STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)-4;5)

Appuyez sur Ctrl + Maj + Entrée.

Résultat attendu : Les 5 chiffres du code postal seront extraits.

Avec une fonction VBA

Pour extraire uniquement le code postal :

Function ExtraireCodePostal(cellule As Range) As String
    Dim chaine As String
    chaine = cellule.Value
    Dim positionPremierChiffre As Integer
    positionPremierChiffre = 0
    Dim i As Integer
    For i = 1 To Len(chaine)
        If IsNumeric(Mid(chaine, i, 1)) And _
           IsNumeric(Mid(chaine, i + 1, 1)) And _
           IsNumeric(Mid(chaine, i + 2, 1)) And _
           IsNumeric(Mid(chaine, i + 3, 1)) And _
           IsNumeric(Mid(chaine, i + 4, 1)) Then
            positionPremierChiffre = i
            Exit For
        End If
    Next i
    If positionPremierChiffre = 0 Then
        ExtraireCodePostal = ""
    Else
        ExtraireCodePostal = Mid(chaine, positionPremierChiffre, 5)
    End If
End Function

Avec une macro

Pour appliquer cette extraction à une colonne entière :

Sub AppliquerExtraireCodePostal()
    Dim cellule As Range
    Dim derniereLigne As Long
    derniereLigne = Cells(Rows.Count, "A").End(xlUp).Row
    For Each cellule In Range("A1:A" & derniereLigne)
        cellule.Offset(0, 2).Value = ExtraireCodePostal(cellule)
    Next cellule
End Sub

3. Extraire le nom de la ville

Avec une formule Excel

Pour extraire le nom de la ville dans D2 :

=STXT(A2;NBCAR(A2)-EQUIV(VRAI;ESTNUM(--(STXT(A2;NBCAR(A2)-LIGNE($1:$255);1)));0)+2;99)

Appuyez sur Ctrl + Maj + Entrée.

Résultat attendu : La partie après le code postal sera extraite.

Avec une fonction VBA

Voici le code pour extraire le nom de la ville :

Function ExtraireVille(cellule As Range) As String
    Dim chaine As String
    chaine = cellule.Value
    Dim positionPremierChiffre As Integer
    positionPremierChiffre = 0
    Dim i As Integer
    For i = 1 To Len(chaine)
        If IsNumeric(Mid(chaine, i, 1)) And _
           IsNumeric(Mid(chaine, i + 1, 1)) And _
           IsNumeric(Mid(chaine, i + 2, 1)) And _
           IsNumeric(Mid(chaine, i + 3, 1)) And _
           IsNumeric(Mid(chaine, i + 4, 1)) Then
            positionPremierChiffre = i
            Exit For
        End If
    Next i
    If positionPremierChiffre = 0 Then
        ExtraireVille = ""
    Else
        ExtraireVille = Trim(Mid(chaine, positionPremierChiffre + 6))
    End If
End Function

Avec une macro

Pour extraire le nom de la ville en parcourant une colonne entière :

Sub AppliquerExtraireVille()
    Dim cellule As Range
    Dim derniereLigne As Long
    derniereLigne = Cells(Rows.Count, "A").End(xlUp).Row
    For Each cellule In Range("A1:A" & derniereLigne)
        cellule.Offset(0, 3).Value = ExtraireVille(cellule)
    Next cellule
End Sub

Ces solutions permettent d’extraire facilement des informations d’adresse structurées dans Excel. Que vous soyez un utilisateur occasionnel ou avancé, vous pouvez choisir entre les formules classiques et les scripts VBA pour automatiser vos tâches. Les macros sont particulièrement utiles pour traiter des grands volumes de données rapidement et efficacement.

Si vous souhaitez en savoir plus sur les scripts VBA ou d’autres astuces Excel, n’hésitez pas à explorer davantage ou à poser vos questions !