Aide sur procédure Worksheet Change

  • Initiateur de la discussion Initiateur de la discussion hypo78
  • 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 !

hypo78

XLDnaute Impliqué
Bonsoir à tous,

j'ai le code suivant qui me permet de masquer des lignes en fonction d'un choix en "K6", et de mettre en majuscule les saisies des cellules de la plage (D45😀54)

le code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$K$6" Then
ActiveSheet.Unprotect
    Rows("16:42").Hidden = False
    Select Case Target
    Case "1/2 Journée FO"
        Rows("16:23").Hidden = True
        Rows("32:42").Hidden = True
    Case "Journée FO / TDL"
        Rows("32:42").Hidden = True
    Case "1/2 Journée TDL"
        Rows("24:42").Hidden = True
    Case "1/2 Journée FF"
        Rows("16:31").Hidden = True
    End Select
ActiveSheet.Protect
End If

If Intersect(Target, [D45:D54]) Is Nothing Then Exit Sub
 Application.EnableEvents = False
 Target = UCase(Target)
 Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

Je voudrais ajouter la mise en Proper pour les cellules des plages (J45:J54) et (AG45:AG54)

Quand j'ajoute avant le End Sub

Code:
 If Intersect(Target, [J45:J54]) Is Nothing Then Exit Sub
 Application.EnableEvents = False
 Target = UCase(Target)
 Application.EnableEvents = True
Application.ScreenUpdating = True

pour tester avant même de me lancer dans le code Proper, çà ne fonctionne pas.

Pourquoi?
 
Re : Aide sur procédure Worksheet Change

Bonjour
Target = StrConv(Target.Text, vbUpperCase) ' tout en majuscule
Target = StrConv(Target.Text, vbProperCase) ' première lettre en majuscule

ou

Target = UCase(Target.Text)
Target = Application.WorksheetFunction.Proper(Target.Text)

ce qui te donne

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.ScreenUpdating = False
 If Target.Address = "$K$6" Then
 ActiveSheet.Unprotect
     Rows("16:42").Hidden = False
     Select Case Target
     Case "1/2 Journée FO"
         Rows("16:23").Hidden = True
         Rows("32:42").Hidden = True
     Case "Journée FO / TDL"
         Rows("32:42").Hidden = True
     Case "1/2 Journée TDL"
         Rows("24:42").Hidden = True
     Case "1/2 Journée FF"
         Rows("16:31").Hidden = True
     End Select
 ActiveSheet.Protect
 End If
  Application.EnableEvents = False
 If Not Intersect(Target, [D45:D54]) Is Nothing Then
  Target = StrConv(Target.Text, vbUpperCase)
   ElseIf Not Intersect(Target, [J45:J54,AG45:AG54]) Is Nothing Then
  Target = StrConv(Target.Text, vbProperCase)
End If
  Application.EnableEvents = True
 Application.ScreenUpdating = True
 End Sub

a+
 
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
589
Réponses
5
Affichages
914
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
0
Affichages
663
Retour