transformer nom majuscules, noms propres, ou l'inverse ?

Le
jipeache
bonjour,
Dans un tableau de 10000 lignes environ, j'ai une colonne qui indexe
les noms d'auteur(s) d'ouvrages.
La saisie s'est faite sous 2 formes, par exemple :
Blondel-Loisel, Annie Litalien, Raymonde Canada. Ambassade
(France). Services culturels Centre havrais de recherche historique
- Les amis du vieux Havre
ou :
DELISLE, Léopold PASSY, Louis LE PREVOST, Auguste BORDEAUX,
Raymond CHASSANT, Alfred
par exemple.
Comment harmoniser de façon automatique : transformer soit tous les
noms en majuscule en nom propre, soit l'inverse ?
Sachant que le " " est un séparateur de nom d'auteur, qu'il peut y
avoir (ex 1) des noms d'organismes écrits sous forme classique donc à
ne pas modifier, que le nom et le prénom (parfois une initiale et un
point seulement) sont toujours séparés par une virgule, qu'il n'y a
parfois qu'un nom d'auteur (mais la majorité d'ouvrages collectifs).
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Brunos
Le #5290921
Bonjour jipeache
Je te propose une fonction personnalisée qui te renvoie le texte avec
les noms de famille d'auteurs mis en majuscule.
J'ai considéré que le nom de famille de l'auteur est toujours suivi
d'une virgule,
les noms d'organismes n'ayant jamais de virgule.

Function NomAuteurEnMaj(Texte)
'max 50 auteurs par texte
'séparateur auteur = ""
'nom famille auteur suivi de ","
Dim Position, n, Auteur(50)
Position = InStr(1, Texte, "", vbTextCompare)
n = 1
' découpe par auteur
Do While Position > 0
Auteur(n) = Left(Texte, Position - 1)
Texte = Right(Texte, Len(Texte) - Position)
Position = InStr(1, Texte, "", vbTextCompare)
n = n + 1
Loop
Auteur(n) = Texte
' met le nom de famille en majuscule
For i = 1 To n
Position = InStr(1, Auteur(i), ",", vbTextCompare)
If Position > 0 Then 's'il y a une virgule
Auteur(i) = UCase(Left(Auteur(i), Position - 1)) _
& Right(Auteur(i), Len(Auteur(i)) - Position + 1)
End If
Next
' recompose le texte
For i = 1 To n
NomAuteurEnMaj = NomAuteurEnMaj & Auteur(i)
If i < n Then NomAuteurEnMaj = NomAuteurEnMaj & ""
Next
End Function

http://cjoint.com/?bvltq4VSCV

Brunos


"jipeache" a écrit dans le message de news:
Comment harmoniser de façon automatique : transformer soit tous les
noms en majuscule en nom propre, soit l'inverse ?
Sachant que le " " est un séparateur de nom d'auteur, qu'il peut y
avoir (ex 1) des noms d'organismes écrits sous forme classique donc à
ne pas modifier, que le nom et le prénom (parfois une initiale et un
point seulement) sont toujours séparés par une virgule, qu'il n'y a
parfois qu'un nom d'auteur (mais la majorité d'ouvrages collectifs).
Merci


francois.forcet
Le #5290911
On 21 jan, 09:14, jipeache
bonjour,
Dans un tableau de 10000 lignes environ, j'ai une colonne qui indexe
les noms d'auteur(s) d'ouvrages.
La saisie s'est faite sous 2 formes, par exemple :
Blondel-Loisel, Annie Litalien, Raymonde Canada. Ambassade
(France). Services culturels Centre havrais de recherche historique
- Les amis du vieux Havre
ou :
DELISLE, Léopold PASSY, Louis LE PREVOST, Auguste BORDEAUX,
Raymond CHASSANT, Alfred
par exemple.
Comment harmoniser de façon automatique : transformer soit tous les
noms en majuscule en nom propre, soit l'inverse ?
Sachant que le " " est un séparateur de nom d'auteur, qu'il peut y
avoir (ex 1) des noms d'organismes écrits sous forme classique donc à
ne pas modifier, que le nom et le prénom (parfois une initiale et un
point seulement) sont toujours séparés par une virgule, qu'il n'y a
parfois qu'un nom d'auteur (mais la majorité d'ouvrages collectifs).
Merci


Salut à toi

Onglet Feuil1 colonne A à traiter

Ce code :

Sheets("Feuil1").Activate
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
Départ = 1
Nom = ""
For i = 1 To Len(c)
Car = Mid(c, i, 1)
If Car <> "," Then
Nom = Nom & Car
Else
If Départ = 1 Then
c.Value = UCase(Nom) & Mid(c, i)
Else
c.Value = Left(c, Départ) & UCase(Nom) & Mid(c, i)
End If
Nom = ""
Départ = i
End If
If Car = "" Then
Nom = ""
Départ = i
End If
Next
Next

Tous les noms se terminant par une virgule sont traités

Dans ce code les lignes

c.Value = UCase(Nom) & Mid(c, i)

c.Value = Left(c, Départ) & UCase(Nom) & Mid(c, i)

mettent ces noms en majuscule

Pour les mettre en minuscules modifier ces lignes ainsi :

c.Value = LCase(Nom) & Mid(c, i)

c.Value = Left(c, Départ) & LCase(Nom) & Mid(c, i)

Pour les mettre en nom propre modifier ces lignes ainsi :

c.Value = UCase(Nom) & Mid(c, i)
c.Value = Application.WorksheetFunction.Proper(c.Value)

c.Value = Left(c, Départ) & UCase(Nom) & Mid(c, i)
c.Value = Application.WorksheetFunction.Proper(c.Value)


Celà devrait te convenir

Dis moi !!!!

JB
Le #5290861
Bonjour,

Function transforme(texte)
a = Split(texte, "")
For i = LBound(a) To UBound(a)
p = InStr(a(i), ",")
If p <> 0 Then
temp = temp & UCase(Left(a(i), p - 1)) & "," & Mid(a(i), p + 1)
& ""
Else
temp = temp & a(i) & ""
End If
Next i
transforme = Left(temp, Len(temp) - 1)
End Function

JB

On 21 jan, 09:14, jipeache
bonjour,
Dans un tableau de 10000 lignes environ, j'ai une colonne qui indexe
les noms d'auteur(s) d'ouvrages.
La saisie s'est faite sous 2 formes, par exemple :
Blondel-Loisel, Annie Litalien, Raymonde Canada. Ambassade
(France). Services culturels Centre havrais de recherche historique
- Les amis du vieux Havre
ou :
DELISLE, Léopold PASSY, Louis LE PREVOST, Auguste BORDEAUX,
Raymond CHASSANT, Alfred
par exemple.
Comment harmoniser de façon automatique : transformer soit tous les
noms en majuscule en nom propre, soit l'inverse ?
Sachant que le " " est un séparateur de nom d'auteur, qu'il peut y
avoir (ex 1) des noms d'organismes écrits sous forme classique donc à
ne pas modifier, que le nom et le prénom (parfois une initiale et un
point seulement) sont toujours séparés par une virgule, qu'il n'y a
parfois qu'un nom d'auteur (mais la majorité d'ouvrages collectifs).
Merci


Brunos
Le #5290831
C'est beaucoup plus court avec Split, évidemment ! Merci JB.
Mais on peut faire un peu + court :
temp = temp & UCase(Left(a(i), p - 1)) & Mid(a(i), p) & ""
Brunos
:o)

"JB"
Bonjour,

Function transforme(texte)
a = Split(texte, "")
For i = LBound(a) To UBound(a)
p = InStr(a(i), ",")
If p <> 0 Then
temp = temp & UCase(Left(a(i), p - 1)) & "," & Mid(a(i), p + 1)
& ""
Else
temp = temp & a(i) & ""
End If
Next i
transforme = Left(temp, Len(temp) - 1)
End Function

JB

On 21 jan, 09:14, jipeache
bonjour,
Dans un tableau de 10000 lignes environ, j'ai une colonne qui indexe
les noms d'auteur(s) d'ouvrages.
La saisie s'est faite sous 2 formes, par exemple :
Blondel-Loisel, Annie Litalien, Raymonde Canada. Ambassade
(France). Services culturels Centre havrais de recherche historique
- Les amis du vieux Havre
ou :
DELISLE, Léopold PASSY, Louis LE PREVOST, Auguste BORDEAUX,
Raymond CHASSANT, Alfred
par exemple.
Comment harmoniser de façon automatique : transformer soit tous les
noms en majuscule en nom propre, soit l'inverse ?
Sachant que le " " est un séparateur de nom d'auteur, qu'il peut y
avoir (ex 1) des noms d'organismes écrits sous forme classique donc à
ne pas modifier, que le nom et le prénom (parfois une initiale et un
point seulement) sont toujours séparés par une virgule, qu'il n'y a
parfois qu'un nom d'auteur (mais la majorité d'ouvrages collectifs).
Merci


jipeache
Le #5289321
On 21 jan, 12:58, "Brunos"
C'est beaucoup plus court avec Split, évidemment ! Merci JB.
Mais on peut faire un peu + court :
temp = temp & UCase(Left(a(i), p - 1)) & Mid(a(i), p) & ""
Brunos
:o)

"JB"
Bonjour,

Function transforme(texte)
a = Split(texte, "")
For i = LBound(a) To UBound(a)
p = InStr(a(i), ",")
If p <> 0 Then
temp = temp & UCase(Left(a(i), p - 1)) & "," & Mid(a(i), p + 1)
& ""
Else
temp = temp & a(i) & ""
End If
Next i
transforme = Left(temp, Len(temp) - 1)
End Function

JB



Merci à tous.
Je n'ai pas encore pu tester, un autre boulot m'est tombé dessus...
Je regarde la semaine prochaine.
Merci encore
JP

Publicité
Poster une réponse
Anonyme