Modifier une cellule format date avec Macro (affichage)
Bonjour le forum,
J'ai créé une macro avec UserForm me permettant de modifier un horaire de fin en fonction d'un horaire de début et du type de contrat de l'employé.
Le UserForm est appelé par un double clic dans la cellule de l'horaire de début.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Ok As Boolean
Ok = False
If Not Intersect(Target, Range("E5:E66")) Is Nothing Then
Ok = True
End If
If Ok = True Then
shift.Show
End If
End SubMon "problème" est que le double clic à pour conséquence d'afficher le contenu de la cellule (car celui ci n'affiche que l'heure et pas la date complète). J'ai ajouté des SendKey "ENTER" dans mon code pour automatiser l'action de "validation" mais le résultat n'est pas très propre. Une fois validé avec le bouton on voit la valeur "complète" de la cellule puis elle disparait (malgré le ScreenUpdating sur False).
Une image pour avoir une idée visuelle du "problème" :
Le code de mon UserForm (certainement pas très propre, je débute soyez indulgent
Private Sub OptionButton_35ha_Click()
Label3.Visible = True
TextBox_fh.Visible = True
Label4.Visible = True
TextBox_fm.Visible = True
TextBox_fh.SetFocus
End Sub
Private Sub UserForm_Initialize()
TextBox1.Text = ActiveCell.Offset(0, -1)
End Sub
Private Sub valider_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Valeur de shift d?but en fonction des valeurs rentr?es dans le userform
ActiveCell.Value = "01/01/2000 " & TextBox_dh & ":" & TextBox_dm
If TextBox1 = "" Then
Else
ActiveCell.Offset(0, -1).Value = TextBox1.Value
'Valeur de shift de fin en fonction du contrat CM
End If
If OptionButton_35h = True Then
ActiveCell.Offset(0, 1).Value = ActiveCell.Value + TimeValue("07:44:00")
ActiveCell.Offset(0, 2).Value = "01:00:00"
SendKeys "{ENTER}"
ElseIf OptionButton_16h = True Then
ActiveCell.Offset(0, 1).Value = ActiveCell.Value + TimeValue("08:44:00")
ActiveCell.Offset(0, 2).Value = "01:00:00"
SendKeys "{ENTER}"
ElseIf OptionButton_35ha = True And TextBox_fh <> "" And TextBox_fm <> "" Then
ActiveCell.Offset(0, 1).Value = "01/01/2000 " & TextBox_fh & ":" & TextBox_fm
Dim duree As Date
Dim deb As Date
Dim fin As Date
deb = "01/01/2000 " & TextBox_dh & ":" & TextBox_dm
fin = "01/01/2000 " & TextBox_fh & ":" & TextBox_fm
duree = fin - deb
'MsgBox duree
Select Case duree
Case Is < "06:28"
ActiveCell.Offset(0, 2).Value = "00:15:00"
Case "06:29" To "07:00"
ActiveCell.Offset(0, 2).Value = "00:45:00"
Case "07:01" To "08:45"
ActiveCell.Offset(0, 2).Value = "01:00:00"
Case Is > "08:46"
ActiveCell.Offset(0, 2).Value = "01:15:00"
End Select
SendKeys "{ENTER}"
ElseIf OptionButton_MT = True Then
ActiveCell.Offset(0, 1).Value = ActiveCell.Value + TimeValue("03:14:00")
ActiveCell.Offset(0, 2).Value = "00:00:00"
SendKeys "{ENTER}"
Else: MsgBox "Veuillez entrer une fin de shift"
TextBox_fh.SetFocus
Exit Sub
End If
Unload Me
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End SubLe fichier (double cliquer sur un horaire de la colonne "E" pour afficher le UserForm) :
Merci d'avance pour votre précieuse aide
M'enfin, OncleSid !?
Ne me dis-pas que tu n'arrives pas à exécuter la manip' ??
De plus, ici, je n'ai que l'heure... mais sans la MàJ de l'affichage de l'horaire...
A+
Je suis toujours dessus mais j'y arrive pas
Soit j'ai mal intégré ton code soit je comprends vraiment rien
Mais je n'ai pas abandonné t'inquiète