séparer une chaîne de caractère avec une Majuscule comme séparateur

taito

XLDnaute Nouveau
Bonjour :)

je voulais savoir si c'est possible de séparer une chaîne de caractère avec une Majuscule comme séparateur
Exemple: JosephKeller -> Joseph Keller

Voila exactement le type de donnée que j'ai dans mon Excel

George PapanicolaouNew York University
Joseph HarrisHarvard University
Steven KleimanHarvard University
Boris GnedenkoLomonosov Moscow State University

Prenom NomUniversité

Merci pour votre assistance.
 

job75

XLDnaute Barbatruc
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Bonsoir taito, bienvenue sur XLD,

Voyez le fichier joint avec cette fonction VBA placée dans un module standard (Alt+F11) :

Code:
Function SepareMajuscule$(t$) '$ => As String
Dim s, i%, j% '% => As Integer
s = Split(t)
For i = 0 To UBound(s)
  t = s(i)
  For j = 2 To Len(t)
    If Mid(t, j, 1) = UCase(Mid(t, j, 1)) Then
      t = Left(t, j - 1) & " " & Mid(t, j)
      j = j + 1
    End If
  Next j
  s(i) = t
Next i
SepareMajuscule = Join(s)
End Function
A+
 

Pièces jointes

  • SepareMajuscule(1).xlsm
    15.7 KB · Affichages: 47
Dernière édition:

job75

XLDnaute Barbatruc
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Bonjour gilbert_RGI,

Ton idée est bonne mais pourquoi ne pas utiliser la matrice-vecteur créée par Split :

Code:
Function SepareMajuscule(t$)
Dim s, i%, j%
s = Split(t)
For i = 0 To UBound(s)
  t = s(i)
  For j = 2 To Len(t)
    If Mid(t, j, 1) = UCase(Mid(t, j, 1)) Then
      t = Left(t, j - 1) & " " & Mid(t, j)
      j = j + 1
    End If
  Next j
  s(i) = t
Next i
SepareMajuscule = Split(Join(s)) 'matrice-vecteur horizontal
End Function
Fichier (2).

Evidemment il ne faut pas de prénoms ou noms composés...

A+
 

Pièces jointes

  • SepareMajuscule(2).xlsm
    16.1 KB · Affichages: 28

gilbert_RGI

XLDnaute Barbatruc
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Juste pour montrer une autre façon de faire :eek:

je ne conteste pas ta façon ( + compliquée pour celui qui ne maitrise pas les tableaux) ce qui peut être le cas pour un nouvel arrivant.

Cordialement
 

job75

XLDnaute Barbatruc
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Re,

Il y a juste à connaître la fonction Split, très utilisée en VBA, sinon c'est l'occasion de s'y mettre.

Si la majuscule qui sépare le nom de l'université est toujours unique dans le texte c'est simple :

Code:
Function SepareMajuscule(t$)
Dim s, i%, j%
s = Split(t)
For i = 0 To UBound(s)
  t = s(i)
  For j = 2 To Len(t)
    If Mid(t, j, 1) = UCase(Mid(t, j, 1)) Then _
      t = Left(t, j - 1) & Chr(1) & Mid(t, j): Exit For
  Next j
  s(i) = t
Next i
SepareMajuscule = Split(Join(s), Chr(1)) 'matrice-vecteur horizontal
End Function
Fichier (3).

Plus de problème avec les prénoms ou noms composés.

A+
 

Pièces jointes

  • SepareMajuscule(3).xlsm
    15.9 KB · Affichages: 37
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 222
Messages
2 107 469
Membres
109 836
dernier inscrit
SophieL16