Bonjour le forum
Suite à quelques modifications nécessaires d'un code dans workbook de mon classeur la macro 1 de ma feuille ne foctionne plus à 100%.La voici:
Macro 1
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
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
Dim flag As Boolean
If Not Intersect(Target, Range("D8:E54")) Is Nothing Then 'on regarde si la modification a lieu sur la plage D8:E54
    flag = False
    For Each cel In Intersect(Target, Range("D8:E54"))
        If Cells(cel.Row, 7) > Cells(cel.Row, 6) Then 'si la cellule meme ligne colonne G > a celle colonne F
            Cells(cel.Row, 7).ClearContents 'on efface la cellule colonne G
            flag = True 'il faudra un message pour signaler la modif
        End If
    Next cel
    If flag Then
        MsgBox "Une valeur de la colonne (vendus) a été effacée suite à cette modification"
    End If
End If
End Sub
Ce code ne fonctionne pas à 100% certainement à cause de ce code situé dans Workbook
Macro 2
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim wb As Workbook, wshn As Worksheet, wsha As Worksheet, i%, d As Date
    On Error GoTo fin
    Set wb = ThisWorkbook
    'On vérifie l'existence d'une feuille nommée 'EnCours' dans le classeur.
    'Si elle existe, on affecte cette feuille à la variable feuille wsha
    'et le contenu de la cellule D5 de cette feuille à la variable d
    'puis on renomme la feuille selon d
    With wb
        For i = 1 To .Worksheets.Count
            If .Worksheets(i).Name = "EnCours" Then
                Set wsha = .Worksheets(i)
                d = wsha.Range("D5").Value
                wsha.Name = Format(d, "dd-mm-yy")
                Exit For
            End If
        Next i
    End With
 
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    'Ici (on est dans le code préexistant) la création de feuille étant effectuée selon la procédure normale
    'd'Excel, on utilise une procédure évènementielle (celle-ci !) déclenchée par l'évènement ajout de feuille
    'dans le classeur: on supprime la feuille ainsi créée pour lui substituer une copie de la feuille 'Modèle'
    'conservée masquée dans le classeur.
    Sh.Delete
    With Feuil1
        .Visible = True
        .Copy After:=wb.Worksheets(wb.Worksheets.Count)
        .Visible = xlSheetVeryHidden
    End With
    'On affecte l'objet feuille (copie de la feuille 'Modèle' à la variable feuille wshn
    'et on renomme cette feuille pour la retrouver plus facilement par la suite
    Set wshn = ActiveSheet
    wshn.Name = "EnCours"
    'On insère dans la nouvelle feuille une formule dans la plage D8:D54.
    'La formule: ='NomFeuillePrécédente'!J8
    'est celle insérée dans la cellule D8 de la nouvelle feuille, elle sera copiée sur l'ensemble de la plage
    'avec la ligne correspondante (9 à 54), la référence de ligne étant une référence relative.
    'NB: noter les apostrophes encadrant le nom de feuille dans la formule (formé à partir de d),
    'ces apostrophes sont inidspensables pour que la formule soit fonctionnelle.
    If d > 0 Then
        wshn.Range("D8:D54").FormulaLocal = "='" & Format(d, "dd-mm-yy") & "'!J8"
    End If
fin:
    With Application
        .CutCopyMode = False
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
    wshn.Protect "motdepasse"
End Sub
Lorsque je modifie les valeurs des cellules Source ,via macro 2 ,les cellules Cible prennent les valeurs des cellules auquelles elles sont liées .Jusque là c'est bon .Le problème c'est que la macro 1 est là pour surveiller si les cellules F sont supérieures ou égales aux cellules G. Si cette condition n'est pas satisfaite,le contenu des celules G sera effacé.Justement la macro 1 ne fonctionne plus( puisq'elle n'efface pas les cellules G) sauf si on recommence la saisie manuellement.
Que faut-il modifier dans ces codes?
Merci d'avance

Est-ce que quelqu'un peut jeter un coup d'oeuil svp....
Après l'avoir lu ,je crois que mon post n'est pas très clair
Merci de me le signaler si c'est vraiment le cas