separer n° et nom des rue

Anonyme
2020-09-02T08:44:42+00:00

Bonjour a toutes et tous,

merci de lire mon post

je tente de séparer le numéro et la rue d'une adresse dans 2 cellules.

j ai un fichier excel avec ce type d'adresse

1 Place Roger Salengro

Espace du foot Des 4 Chemins 7 Route Varton

24 Rue Egalité

Entrée C 1 Rue Four

j'utilise cette macro

' Extraire N° et adresse

Application.ScreenUpdating = False

[D2].FormulaR1C1 = _

"=LEFT(RC[1],SUMPRODUCT(ISNUMBER(MID(RC[1],ROW(OFFSET(    R1C1,,,LEN(RC[1]))),1)*1)*1))"

[D2].AutoFill Destination:=Range("D2:D" & Fin)

Range("E2").EntireColumn.Insert

[E2].FormulaR1C1 = "=TRIM(RIGHT(RC[1],LEN(RC[1])-LEN(RC[-1])))"

Range("E2").AutoFill Destination:=Range("E2:E" & Fin)

Range("D2:F" & Fin).Value = Range("D2:F" & Fin).Value

Columns("F:F").Delete

Application.CutCopyMode = False

Application.ScreenUpdating = True

j'ai un problème, sur certaines lignes, ça fonctionne parfaitement et de temps en temps, j ai ce type de resultats

colonne D                          colonne E

Espace                                du foot Des 4 Chemins 7 Route Varton

24 R                                    ue Egalité

Avez vous une idée sur ce qui cause cette erreur ?

en vous remerciant par avance

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2020-09-03T14:30:41+00:00

C'est une ânerie de VBA. Il transforme le "1 A" en heure (1 AM = 1 heure du matin). Pour éviter ça mets une apostrophe en tête de la cellule ; ça transforme "1 A" en chaîne de texte et VBA n'y touche pas :

C.Offset(, 1) = "'" & C.Offset(, 1) & " " & Split(C.Offset(, 2).Value, " ")(0)

au lieu de :

C.Offset(, 1) = C.Offset(, 1) & " " & Split(C.Offset(, 2).Value, " ")(0)

Daniel

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

14 réponses supplémentaires

  1. Anonyme
    2020-09-03T14:41:58+00:00

    Merci Daniel

    ça fonctionne parfaitement, je vais gagner pas mal de temps.

    Encore un énorme merci

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2020-09-03T14:06:11+00:00

    Merci Daniel, tu es exceptionnel

    Je pense avoir compris comment cela fonctionne, j ai rajouter les lignes qu'il me manquait

    Sub test()

      Dim C As Range

      [E:F].EntireColumn.Insert

      For Each C In Range("D1", Cells(Rows.Count, 4).End(xlUp))

        If IsNumeric(Split(C.Value, " ")(0)) Then

          C.Offset(, 1) = Split(C.Value, " ")(0)

          C.Offset(, 2) = Mid(C.Value, InStr(1, C.Value, " ") + 1, 9 ^ 9)

          If UCase(Split(C.Offset(, 2).Value, " ")(0)) = "BIS" Or _

            UCase(Split(C.Offset(, 2).Value, " ")(0)) = "B" Or _

            UCase(Split(C.Offset(, 2).Value, " ")(0)) = "A" Or _

            UCase(Split(C.Offset(, 2).Value, " ")(0)) = "D" Or _

            UCase(Split(C.Offset(, 2).Value, " ")(0)) = " QUINQUIES" Or _

            UCase(Split(C.Offset(, 2).Value, " ")(0)) = "TER" Then

            C.Offset(, 1) = C.Offset(, 1) & " " & Split(C.Offset(, 2).Value, " ")(0)

            C.Offset(, 2) = Mid(C.Offset(, 2).Value, InStr(1, C.Offset(, 2).Value, " ") + 1, 9 ^ 9)

          End If

        Else

          C.Offset(, 2) = C.Value

        End If

      Next C

    Columns("C").Select

    Selection.Delete Shift:=xlToLeft

    Columns(3).Delete

      [C1] = "Numéro"

      [D1] = "Rue"

      [C:D].EntireColumn.AutoFit

    End Sub

    J'ai encore une question, pourquoi lorsque je passe cette macro , dans le colonne C (numero de l'adresse) quand il y a un numero 1 A, il m affiche "1:00 AM"

    encore un grand merci

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire