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

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 !

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 !
 
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
 
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:
- 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

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
318
Réponses
4
Affichages
224
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Retour