XL 2019 Scinder une cellule en plusieur cellules

Abby003

XLDnaute Nouveau
Bonjour à tous,

Je cherche à scinder une cellule comprenant différente informations en plusieurs cellules.

Voici mon problème :
J'ai une colonne Adresse sous cette forme : Petit Bateau 18943 FOUILLE
Je cherche à avoir :
- une colonne pour l'adresse : Petit Bateau
- une colonne pour le code postal : 18943
- une colonne pour la commune : FOUILLE



Je cherche à faire la même manipulation pour le nom.
Ma colonne Nom se présente sous cette forme : M Truc Patrick Yves Martin
Mme Chiffon Yvette Mélodie Coralie
Commune de Bandana
Société Forêt de la bas

Je voudrais :
Une colonne avec le genre : M ou Mme
Une colonne avec le Nom de famille
Une colonne avec les Prénoms ou la commune ou société.

Je vous remercie par avance pour votre aide.
 

GALOUGALOU

XLDnaute Accro
bonjour abby003 bonjour le forum
en la matière patricktoulon que vous pouvez croiser sur ce site, à fait un travail remarquable pour dissocier une adresse
civilitéNom et/ou PrenomAdresseCpVille
en pièce jointe un classeur qui présente son travail et qui à l'air très adapté à votre problématique
cordialement
galougalou
 

Pièces jointes

  • dissocier les adresses.22.xlsm
    20.7 KB · Affichages: 18

Abby003

XLDnaute Nouveau
bonjour abby003 bonjour le forum
en la matière patricktoulon que vous pouvez croiser sur ce site, à fait un travail remarquable pour dissocier une adresse
civilitéNom et/ou PrenomAdresseCpVille
en pièce jointe un classeur qui présente son travail et qui à l'air très adapté à votre problématique
cordialement
galougalou

Cela est parfait. Cependant, comment peut-on dissocier le Nom du Prénom. De plus, mes bases de données sont dotées de plusieurs prénoms et non d'un seul. (Exemple : TRUC Michelle Jacqueline Bernadette)
 

Fred0o

XLDnaute Barbatruc
Bonjour Abby03, le fil

micheldu52, JHA, GALOUGALOU & patrickcoulon t'ont propose des solutions a adapter a ton fichier réel.
Sans plus de données que celles que tu as fournies, difficile d'aller plus loin dans la proposition de solutions. En effet, il faut savoir a comment différencier le Nom du ou des Prénom(s) (que faire si la personne a un nom compose comme par exemple : Dupont de Nemours Jean Jacques Henri Marcel), la ville qui peut être composée d'un ou plusieurs mots.

Pourrais-tu fournir un fichier exemple avec quelques lignes représentatives de ce que tu as avec toute la diversité possible et ce que tu souhaites ?

Merci
 

jmfmarques

XLDnaute Accro
Bonjour à tous
Cette discussion ne sera jamais que la énième du genre à ne pouvoir recevoir une véritable (sans aucune faille, donc) solution.
Elle sera également la énième à conduire à la conclusion de la nécessité de modéliser les données de manière réfléchie, de sorte à ne pas avoir ensuite à perdre un temps fou (et souvent en vain) à tenter de réparer une modélisation aventureuse.

EDIT : tout ce qui n'apporte pas une résolution à 100% vaut pour moi 0%, que ce soit en mathématiques ou en informatique.
 

GALOUGALOU

XLDnaute Accro
bonjour le fil, bonjour le forum
je viens juste de voir le #7
pour répondre à cette question, sur le site de boisgontier une formule fait ça trés bien
voir le classeur joint avec l'exemple donnée par abby003 (Exemple : TRUC Michelle Jacqueline Bernadette)
Capture01.JPG

Enrichi (BBcode):
Function Nom(chaine)
   Application.Volatile
   chaine = Replace(Replace(Replace(chaine, "Mme", ""), "M. ", ""), "Mlle ", "")
   If UCase(chaine) = chaine Then
     temp = chaine
   Else
    If InStr(chaine, " ") > 0 Then
      a = Split(chaine, " ")
      i = UBound(a)
      Do While UCase(a(i)) = a(i) And i > LBound(a):  i = i - 1: Loop
      For k = i + 1 To UBound(a): temp = temp & a(k) & " ": Next
    Else
      temp = chaine
    End If
  End If
  Nom = Trim(temp)
End Function
Function PreNom(chaine)
   Application.Volatile
   chaine = Replace(Replace(Replace(chaine, "Mme", ""), "M. ", ""), "Mlle ", "")
   If UCase(chaine) = chaine Then
     temp = ""
   Else
    If InStr(chaine, " ") = 0 Then
      temp = ""
    Else
     a = Split(chaine, " ")
     i = UBound(a)
     Do While UCase(a(i)) = a(i) And i > LBound(a):  i = i - 1: Loop
     For k = LBound(a) To i: temp = temp & a(k) & " ": Next
    End If
   End If
   PreNom = Trim(temp)
End Function


Function civilité(chaine)
  civilité = ""
  civil = Array("M.", "Mme", "Mle")
  For i = 0 To UBound(civil)
    If InStr(chaine, civil(i)) > 0 Then civilité = civil(i)
  Next i
End Function
cordialement
galougalou
 

Pièces jointes

  • Copie de FonctionExtraitNomPrenom.xls
    78 KB · Affichages: 9

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado