macro majus/minuscule automatique

  • Initiateur de la discussion Initiateur de la discussion Cafrine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Cafrine

Guest
bonsoir à tous et à toutes!

après des recherches, je nai pas trouvé de macros qui puissent modifier des noms propres. Exemple : pape hervé en 'PAPE Hervé' et cela automatiquement (sans bouton de commande)
merci de vos remarques
 
Bonsoir


Code:
Sub nompropre()
Dim pos As Integer
Dim nom, prenom As String

For Each cel In Selection
    pos = InStr(1, cel, ' ', 1)

    nom = Left$(cel, pos)
    prenomMaj = Right$(cel, Len(cel) - pos)
    prenomMin = Right$(cel, Len(cel) - pos - 1)
    
    
    cel.Value = UCase(nom) & ' ' & UCase(Left$(prenomMaj, 1)) & prenomMin
    
Next cel

End Sub

Comment ça marche, il faut copier la macro dans un module
pour la faire fonctionner, selectionner les données et lancer la macro.

Message édité par: dg62, à: 02/04/2005 23:09
 
Salut,
scrogneugneu, dg62 m'a encore pris de vitesse

Private Sub Worksheet_Change(ByVal Target As Range)
nom = Trim(Range('B3').Value)
L = Len(nom)
For x = 1 To L
If Mid(nom, x, 1) = ' ' Then
pos = x - 1
GoTo suite
End If
Next
suite:
prem = UCase(Left(nom, pos))
prenom = LCase(Right(nom, (L - pos)))
modif = prem & ' ' & prenom
Application.EnableEvents = False
Range('C3').Value = modif
Application.EnableEvents = True
End Sub


tapes ton nom en B3 et in sera tout beau en C3 😉

A+
Philippe
 
bonsoir à tous

Merci à DG62 et à Philippe de leur réponse...
si je peux me permettre, la réponse de philippe me serait plus utile
dans la mesure où :
1) c'est automatique
2) La cellule de départ est la même à l'arrivée : B3 >> B3

mais comment l'adapter pour une plage de celulles ?
Encore merci à vous
cafrine
 
Re

Relis ta première intervention.

Cafrine écrit:
bonsoir à tous et à toutes!

après des recherches, je nai pas trouvé de macros qui puissent modifier des noms propres. Exemple : pape hervé en 'PAPE Hervé' et cela automatiquement (sans bouton de commande)
merci de vos remarques

pour la pièce jointe, il ne faut pas d'accent dans le nom.

A plus
 
Bonjour Cafrine


Une petite précision sur ma procédure.

Son avantage est quelle fonctionne n'importe ou sur une feuille.
elle s'applique sur une cellule comme sur une plage contigue ou non.
Il suffit de sélectionner les données.

le retour se fait dans la même cellule.
 
bnsoir tout le monde

Dg62 serait-il possible que ta macro soit automatique ? et si je tape les prénoms en majuscule au depart : ne peuvent-il passer en minuscules...
Ignorante et exigeante je sais ...lol
Merci à vous
cafrine
 
Bonsoir à tous,

alors voilà: c'est automatique dans la plage définie, ça met les noms en majuscule et les prénoms en minuscule et en prime,ça adapte la taille du texte à la longueur du nom pour qu'il tienne dans la cellule
Ca fait pas le café... 🙂

Private Sub Worksheet_Change(ByVal Target As Range)
Range('A1:J30').Select
For Each vcel In Selection
nom = Trim(vcel.Value)
pos = InStr(1, nom, ' ') - 1
L = Len(nom)
If nom = '' Or pos < 1 Then GoTo suite
prem = UCase(Left(nom, pos))
prenom = LCase(Right(nom, (L - pos)))
modif = prem & ' ' & prenom
Application.EnableEvents = False
vcel.Value = modif
vcel.ShrinkToFit = True
modif = ''
Application.EnableEvents = True
suite:
Next
End Sub



Grosse bise à tous et bonne nuit

A+
Philippe
 
Bonjour Cafrine, Philippe, le Forum
procédure automatique de A3 à A20
Facile à modifier dans le code.
Avec l'aimable participation de Pascal 76 et Hervé

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' Nom en majuscule et première lettre du prénom en maj le reste en min
Dim pos As Integer
Dim nom, prenom As String
    
If Not Intersect(Range('A3:A20'), Target) Is Nothing Then

    cel = Target.Value
    If cel > '' Then
        pos = InStr(1, cel, ' ', 1)
        nom = Left$(cel, pos)
        prenomMaj = Right$(cel, Len(cel) - pos)
        prenomMin = Right$(cel, Len(cel) - pos - 1)
        cel = UCase(nom) & UCase(Left$(prenomMaj, 1)) & prenomMin
        Application.EnableEvents = False
        Target = cel
        Application.EnableEvents = True
        
    End If
End If
       
End Sub

Message édité par: dg62, à: 05/04/2005 11:22
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 Macro
Réponses
6
Affichages
300
Réponses
6
Affichages
290
Réponses
5
Affichages
645
Deleted member 453598
D
Réponses
4
Affichages
324
Retour