Melanger 2 codes VBA "private"
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:
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:
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 |