piga25
XLDnaute Barbatruc
Bonjour,
Cela doit être assez simple, mais là je n'y arrive pas.
Comment faire pour associer 2procédures (doubleclic) en une seule.
Procédure 1
Lorsque je fais undouble clic en colonne A (Nom : ClicA), cela insert une ligne.
Procédure2
Lorsque je fais un double clic en colonne J (Nom: ClicJ), cela affiche "FAIT"et si de nouveau double clic cela efface "Fait".
Merci
Cela doit être assez simple, mais là je n'y arrive pas.
Comment faire pour associer 2procédures (doubleclic) en une seule.
Procédure 1
Lorsque je fais undouble clic en colonne A (Nom : ClicA), cela insert une ligne.
Procédure2
Lorsque je fais un double clic en colonne J (Nom: ClicJ), cela affiche "FAIT"et si de nouveau double clic cela efface "Fait".
Merci
VB:
Private test As Boolean 'déclare la variable test
Option Explicit
------------------------------------------------------------------------------------------------------------------------------
'Code écrit et commenté par Robert
Private Sub Worksheet_BeforeDoubleClick1(ByVal Target As Range, Cancel As Boolean)
Dim pl As Range 'déclare la variable pl (PLage)
Dim col As Byte 'déclare la variable col (COLonne)
Dim tc As Byte 'déclare la variable tc (Target Colonne)
Set pl = Range("ClicJ") 'définit la plage pl
'si la sélection est multiple ou si test est vrai, sort de la procédure
If Selection.Cells.Count > 1 Or test = True Then Exit Sub
'si le double-clic a lieu ailleurs que dans la plage pl, sort de la procédure
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub
Cancel = True 'annule le mode édition lié au double-clic
test = True 'définit la variable test
Target.Value = IIf(Target.Value = "Fait", "", "Fait") 'de'finit la valeur de la cellule double-cliquée ("x" si vide, vide si "x")
If Target.Value = "" Then 'condition : si la valeur de la cellule double-cliquée est vide
test = False 'redéfinit la variable test
Exit Sub 'soret de la procédure
End If 'fin de la condition
test = False 'redéfinit la variable test
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------
' A partir d'un code écrit par JPN
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim I As Integer, Ligne As Long
If Target.Column <> 1 Then Exit Sub 'Si en dehors colonne 1 on sort de la procédure
I = MsgBox("Voulez-vous insérer une ligne ?", vbOKCancel, "Insertion") ' Affichage d'une boite de dialogue
If I = vbCancel Then Exit Sub ' si clique sur non on sort de la procédure
Ligne = Target.Row + 1
Rows(Ligne).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'Inscription texte et formule dans cellules spécifiées.
Cells(Ligne, 2) = "Ajout donnée"
Cells(Ligne, 3) = Now
Cells(Ligne, 8).Formula = "=IF(ISNUMBER(R[-1]C),R[-1]C&CHAR(97),SUBSTITUTE(R[-1]C,RIGHT(R[-1]C,1),CHAR(CODE(RIGHT(R[-1]C,1))+1)))"
Cells(Ligne, 9).Formula = "=IF(AND(RC[-3]="""",RC[-2]=""""),"""",IF(AND(RC[-3]+RC[-2]>0,RC[1]=""Fait""),""EFFECTUE"",IF(AND(RC[-3]+RC[-2]>NOW(),RC[-3]+RC[-2]<=NOW()+15/1440),""ALERTE"",IF(RC[-3]+RC[-2]>NOW()+15/1440,""CREE"",""""))))"
' Effacement des éventuelles données dans les cellules spécifiées.
Union(Cells(Ligne, 4), Cells(Ligne, 5), Cells(Ligne, 6), Cells(Ligne, 7)).ClearContents
Cancel = True
Target.Offset(1, 4).Select
End Sub
Pièces jointes
Dernière édition: