Retenir le moment de validation a l'aide d'une checkbox activex control en vba

MickDos

XLDnaute Nouveau
Bonjour,

je suis débutant en vba et je suis en train de travailler sur une liste de taches pour notre departement. Des que une tache est accomplie elle est validéé a l'aide d'unce checkbox (j'ai utilisé activex)

En cochant la case la date et l'heure de l'action, qui est senséé correspondre au moment ou la tache a été faite, doit etre automatiquement retenue.

J'ai réussi a faire un code qui fait ca plus ou moins mais poour ca il faut etre a un endroit bien précis, en occurence la cellule avec le nom de la tache.

Private Sub Fait_Click()

If Fait.Value = True Then
Application.EnableEvents = False
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Date + Time
ActiveCell.Offset(0, -2).Select
Application.EnableEvents = True

ElseIf Fait.Value = False Then
Application.EnableEvents = False
ActiveCell.Offset(0, 2).Select
ActiveCell = ""
ActiveCell.Offset(0, -2).Select
Application.EnableEvents = True

End If

End Sub

Je voudrais arriver au résultat que dés que l'on coche la case la date est mise dans la cellule deux cases a droite du nom de la tache et ceci en etant sur n'importe qu'elle cellule du classeur

Je pense que ca doit etre possible en reliant une cellule a la case activex (linked cell) mais je sais pas comment faire le code

quelqu'un saurait m'aider? J'ai attaché un fichier avec mon code
 

Pièces jointes

  • ExcelDownloads.xlsm
    27.7 KB · Affichages: 55
  • ExcelDownloads.xlsm
    27.7 KB · Affichages: 46
  • ExcelDownloads.xlsm
    27.7 KB · Affichages: 47

Robert

XLDnaute Barbatruc
Repose en paix
Re : Retenir le moment de validation a l'aide d'une checkbox activex control en vba

Bonjour MickDos, bonjour le forum,

En pièce jointe une proposition sans checkboxes (qui vont considérablement alourdir ton fichier) mais juste en tapant x ou X dans la colonne E.
Le code :
Code:
Option Explicit 'oblige à déclarer toutes les variables
 
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim pl As Range 'déclare la variable pl (PLage)
 
Set pl = Range("E2:E" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub 'si l'édition a lieu ailleurs que dans la plage pl, sort de la procédure
If Selection.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sont sélectionnées, sort de la procédure
Select Case UCase(Target.Value) 'agit en fonction du texte édité dans la cellule (converti en majuscule)
    Case "X" 'cas "X"
        Target.Offset(0, 2).Value = Now 'place la date et l'heure en colonne G
    Case "" 'cas où la cellule est effacée
        Target.Offset(0, 2).Value = "" 'vide la cellule de la colonne G
    Case Else 'tous les autres cas
        Target.ClearContents 'efface le contenu de la cellule
        Target.Select 'sélectionne la cellule (revient dessus)
End Select 'fin de l'action en fonction de...
End Sub
Le fichier :
 

Pièces jointes

  • MickDos_v1.xls
    27 KB · Affichages: 41

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 878
Membres
103 403
dernier inscrit
Kesb75