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:
	
| 12
 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:
	
| 12
 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 |