Transférer une chaine de caractère dans une nouvelle cellule SI(...)

Bieffe

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord, merci à tous ceux qui s'impliquent pour ce forum, il m'a sauvé la mise maintes fois jusqu'à ce jour.

Pour mon problème, après plusieurs recherches sur différents sites, je n'ai toujours pas trouvé de solution. J'aimerais pouvoir créer soit une macro, soit simplement une formule qui me permettrait d'écrire le mot cherché (Il s'agit d'une série de mot) s'il se trouve quelque part dans la colonne...

Pas très clair tout ça, ça va être plus simple avec un exemple :
J'ai une colonne contenant PATATES RUE DES et je voudrais, dans une colonne vierge à sa gauche, écrire RUE DES et garder dans la colonne initiale PATATES. En gros, je veux séparer le nom de la rue et son déterminant. J'en ai plusieurs différents (Rue, Rue des, Rue de l', etc...), mais juste la première étape serait plaisante, je me débrouillerai pour la "pimper" un peu.

Merci énormément encore à tous ceux qui aident le forum à rester en vie.
 

MichD

XLDnaute Impliqué
Re : Transférer une chaine de caractère dans une nouvelle cellule SI(...)

Bonjour,

Tu copies cette fonction personnalisée dans un module STANDARD.

Et dans ta feuille de calcul, en supposant que le nom est dans A1,
tu inscris dans la cellule de ton choix : =NameOnly(A1)

Dans la fonction, tu dois compléter la liste de toutes les expressions qu'il y a dans
ta plage de cellule qui sont placées avant le nom que tu veux extraire.

Dans Arr = Array(Ta liste d'expressions entre guillemets et séparée par une virgule)

VB:
Function NameOnly(Rg As Range) As String
Dim Arr(), Elt As Variant
Arr = Array("Rue", "Rue des", "Rue de l'")
For Each Elt In Arr
    If InStr(1, Trim(Right(Rg, Len(Rg) - Len(Elt))), " ", vbTextCompare) = 0 Then
        NameOnly = Trim(Right(Rg, Len(Rg) - Len(Elt)))
        Exit For
    End If
Next
End Function
 

Bieffe

XLDnaute Nouveau
Re : Transférer une chaine de caractère dans une nouvelle cellule SI(...)

Bonjour,

Merci pour la réponse rapide! J'ai essayé, et cela donne un résultat bizarre. Comme je ne comprends pas très bien la fonction (Je suis plutôt débutant en VBA), je n'arrive pas à la déboguer.

Voir en PJ le résultat.

Merci
 

Pièces jointes

  • Exemple.xlsm
    15.7 KB · Affichages: 45
  • Exemple.xlsm
    15.7 KB · Affichages: 47
  • Exemple.xlsm
    15.7 KB · Affichages: 44

CISCO

XLDnaute Barbatruc
Re : Transférer une chaine de caractère dans une nouvelle cellule SI(...)

Bonsoir

Tu peux faire avec une formule mettant un point-virgule devant RUE, AVENUE... suivi d'un collage spéciale valeur, et d'une convertion (Données --> convertir -->délimité -->point virgule).

@ plus

Cisco
 

Pièces jointes

  • Exemple.xlsm
    15 KB · Affichages: 39
  • Exemple.xlsm
    15 KB · Affichages: 46
  • Exemple.xlsm
    15 KB · Affichages: 48

MichD

XLDnaute Impliqué
Re : Transférer une chaine de caractère dans une nouvelle cellule SI(...)

J'ai corrigé la fonction d'après ton fichier :


Comme tes noms semblent prendre toutes sortes de forme,
je n'ai pas le temps de pondre une procédure pour tous les cas de figure
que tu peux rencontrer.

La procédure suivante ne traite pas ces 2 cas par exemple : DE MONVIELLE RUE, DE NEVERS CARRÉ


VB:
Function NameOnly(Rg As Range) As String
 Dim Arr(), Elt As Variant, T As String
 Arr = Array("Rue", "Rue des", "Rue de l'", "ROUTE DE L'")
 T = Rg
 For Each Elt In Arr
    If IsNumeric(Split(T, " ")(0)) Then
        T = Trim(Replace(T, Split(T, " ")(0), ""))
        If UBound(Split(T, "")) = 0 Then
            NameOnly = T
            Exit For
        End If
    End If
     If InStr(1, Trim(Left(T, Len(T) - Len(Elt))), " ", vbTextCompare) = 0 Then
         NameOnly = Trim(Left(T, Len(T) - Len(Elt)))
         Exit For
     End If
 Next
 End Function
 

Bieffe

XLDnaute Nouveau
Re : Transférer une chaine de caractère dans une nouvelle cellule SI(...)

Merci beaucoup Cisco, ta solution marche très bien.

Merci aussi MichD, j'ai essayé ta fonction, et elle fonctionne plutôt bien. Il y a quelques erreurs, mais ça me permet de comprende un peu mieux le système de fonction dans Excel.

Je ne sais pas comment indiquer que mon problème est résolu, mon entreprise bloque tous les boutons... Je vais essayer de le faire chez moi ce soir.

Merci encore à tous ceux qui donnent du temps sur ce forum!
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 200
Membres
103 762
dernier inscrit
rouazali