Bonjour à tous,

Jeune débutant en VBA, je profite, il est vrai de codes existants que j'adapte à mes besoins...Jusque là en cherchant parfois bien des heures, je trouvais comment les modifier à mes besoins....
Là, depuis 48h je sèche !

J'essaie d'adapter 2 codes VBA, un que j'ai déjà modifié et qui fonctionne et l'autre que j'essaie d’intégrer.... Le probleme, c'est que les 2 utilisent la fonction "private" et qu'aprés bien des lectures, j'ai vu que l'on ne pouvais en avoir qu'une seule par feuille (logique d'ailleurs)

Or je n'arrive pas à mélanger les 2....

Quelqu'un aurais-t-il 5 min pour m'aiguiller ?

Ce serait vraiment sympa....

Milles mercis à ceux qui vont y passer un moment.
Bon Week-end

'Le premier code qui fonctionne lui !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub ToggleButton1_Click()
ToggleButton1.Caption = IIf(ToggleButton1, "AM=PM", "AM<>PM")
ToggleButton1.BackColor = IIf(ToggleButton1, vbGreen, vbRed)
 
 
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
 
     If Target.Count > 1 Then Exit Sub
 
     If Not Intersect(Target, Range("D5:NE5,D11:NE11,D17:NE17,D23:NE23,D29:NE29,D35:NE35,D41:NE41,D52:NE52,D58:NE58")) Is Nothing Then
        Debug.Print Target.Address
        If ToggleButton1 Then
            Target.Offset(2, 0) = Target
            Else
            Exit Sub
        End If
     End If
 
     If Not Intersect(Target, Range("D7:NE7,D13:NE13,D19:NE19,D25:NE25,D31:NE31,D37:NE37,D43:NE43,D54:NE54,D60:NE60")) Is Nothing Then
        Debug.Print Target.Address
        If ToggleButton1 Then
            Target.Offset(3, 0) = Target
            Else
            Exit Sub
        End If
     End If
 
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------------------
'Le second qui ne fonctionne pas avec le précédent mais qui fonctionne seul sur un autre projet


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private av As Variant 'déclare la varaible av (Ancienne Valeur)
Private test As Boolean 'déclare la varaible test
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection dans l'onglet
If Application.Intersect(Target, Range("A1:AZ100")) Is Nothing Then Exit Sub 'si la cellule active ne fait pas partie de la plage A1:AZ100, sort de la procédure
If Selection.Cells.Count > 1 Then ActiveCell.Select 'si plusieurs cellules sélectionnées, ne sélectionne que la cellule active
av = Target.Value 'définit la variable av
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub 'si le changement se fait ailleurs que dans la plage A1:A100 (à adapter), sort de la procédure
If test = True Then Exit Sub 'si test est vrai, sort de la procédure
If Target.Value = "" And av <> "" Then 'condition 1 :si la cellule est effacée et l'ancienne valeur n'est pas vide
    If MsgBox("Êtes-vous sûr(e) de vouloir effacer cette cellule ?", vbYesNo, "ATTENTION !") = vbNo Then 'condition 2 : si non au message
        test = True 'définit la variable test
        Target.Value = av 'remet l'ancienne valeur effacée
        test = False 'redéfinit la variable test
    End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub