[Résolu] VBA - mise en majuscule/nom propre

maxx-lamenace

XLDnaute Nouveau
Bonjour à tous,
Je cherche à forcer la majuscule dans une colonne et le format "nom propre" dans une autre colonne (première lettre en majuscule, le reste en minuscule) sous l'événement worksheet_change.

Voici ce que j'utilise pour l'instant pour la majuscule :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("A3:A103"))
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Target In Target
If Application.IsText(Target) Then Target = UCase(Target)
Next
Application.EnableEvents = True
End Sub

Donc le texte est forcé en majuscule sur A3:A103.
Je voudrais forcer la première lettre en majuscule et le reste en minuscule sur la plage B3:B103.

J'ai essayé de réécrire le code pas mal de fois mais sans succès, je suis pas super calé en VBA...
Merci d'avance pour votre aide !
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour à tous,
Je cherche à forcer la majuscule dans une colonne et le format "nom propre" dans une autre colonne (première lettre en majuscule, le reste en minuscule) sous l'événement worksheet_change.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not intersect(Target,Range"A3:B103") Is Nothing Then
              Application.EnableEvents = False
              select case target.column
                     Case 1
                             target=UCASE(Target)
                     Case 2
                             target=Application.Proper(Target)
                     case Else
                             Target=Lcase(Target)
              end select
              Application.EnableEvents = True
    else
             exit sub
    end if
End Sub
 

maxx-lamenace

XLDnaute Nouveau
Bonsour®
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not intersect(Target,Range("A3:B103")) Is Nothing Then
              Application.EnableEvents = False
              select case target.column
                     Case 1
                             target=UCASE(Target)
                     Case 2
                             target=Application.Proper(Target)
                     case Else
                             Target=Lcase(Target)
              end select
              Application.EnableEvents = True
    else
             exit sub
    end if
End Sub

Hello, ton code fait exactement ce que je souhaite, merci beaucoup. Seul problème : si les cellules sont effacées, cela provoque une erreur de type 13 (à partir de la ligne "target=UCASE(Target)").

EDIT : résolu en rajoutant un petit If Target.Cells.Count > 1 Then Exit Sub en début de code.

Merci à tous pour votre aide.
 
Dernière édition:

Discussions similaires

  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
463

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista