bambi
XLDnaute Occasionnel
Bonjour à tous 🙂
Mon probleme est dans le titre.
Je voudrais mettre sur une feuille, deux Macros Worksheet_Change
Une me permet de transformer des saisies au clavier numérique au format heure 00:00
L'autre de transformer automatiquement des minuscules en majuscules après saisie
Ces deux macros fonctionnent parfaitement pris une à une.
Problème: J'ai lu ici même qu'on ne pouvait pas avoir en même temps 2 Macros Worksheet_Change
Et j'ai beau tenter toutes les combinaisons, je ne parviens pas à les fusionner.
Donc un petit coup de main serait le bienvenu
Merci d'avance 😉
Voici les deux codes en question
Mon probleme est dans le titre.
Je voudrais mettre sur une feuille, deux Macros Worksheet_Change
Une me permet de transformer des saisies au clavier numérique au format heure 00:00
L'autre de transformer automatiquement des minuscules en majuscules après saisie
Ces deux macros fonctionnent parfaitement pris une à une.
Problème: J'ai lu ici même qu'on ne pouvait pas avoir en même temps 2 Macros Worksheet_Change
Et j'ai beau tenter toutes les combinaisons, je ne parviens pas à les fusionner.
Donc un petit coup de main serait le bienvenu
Merci d'avance 😉
Voici les deux codes en question
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D4,D5,D17,D18,D30,D31,D43,D44,D56,D57,M4,M5,M17,M18,M30,M31,M43,M44,M56,M57]) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End Sub
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String
On Error GoTo EndMacro
If Application.Intersect(Target, Range("D3, F3, D16, F16, D29, F29, D42, F42, D55, F55, M3, O3, M16, O16, M29, O29, M42, O42, M55, O55")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If
Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Value)
Case 1 ' e.g., 1 = 00:01 AM
TimeStr = "00:0" & .Value
Case 2 ' e.g., 12 = 00:12 AM
TimeStr = "00:" & .Value
Case 3 ' e.g., 735 = 7:35 AM
TimeStr = Left(.Value, 1) & ":" & _
Right(.Value, 2)
Case 4 ' e.g., 1234 = 12:34
TimeStr = Left(.Value, 2) & ":" & _
Right(.Value, 2)
Case 5 ' e.g., 12345 = 1:23:45 NOT 12:03:45
TimeStr = Left(.Value, 1) & ":" & _
Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
Case 6 ' e.g., 123456 = 12:34:56
TimeStr = Left(.Value, 2) & ":" & _
Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
Case Else
Err.Raise 0
End Select
.Value = TimeValue(TimeStr)
End If
End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "You did not enter a valid time"
Application.EnableEvents = True
End Sub