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
Partager