Appel de macro mystérieux ??

Bonjour,

J'ai un petit bout de macro dans une feuille, la feuille103.

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("k9") <> 0 Then
    MsgBox "Je crée le fichier de l'année prochaine."
Call Créer_fichier_nouvelle_année
End If
End Sub

If Worksheets(103).Range("k9") <> 0 Then

MsgBox "Je crée le fichier de l'année prochaine."

Call Créer_fichier_nouvelle_année

End If

End Sub[/code]

Voici le code de la macro Créer.... ainsi que toutes les procédures nécessaires, elles sont dans le même module.

Sub Créer_fichier_nouvelle_année()

Dim an As String, chemin As String
Dim Excel_App As Excel.Application

an = Year(Date)

chemin = "C:\Opr\Claire\Relevé quotidien\RELEVÉ QUOTIDIEN "

Effacer_fichier

ActiveWorkbook.SaveAs (chemin & an & "-" & an + 1 & ".xlsm")

Application.DisplayAlerts = False

Enlever_la_protection

    ActiveWorkbook.ChangeLink _
        chemin & an - 2 & "-" & an - 1 & ".xlsm", _
        chemin & an - 1 & "-" & an & ".xlsm", xlExcelLinks

ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources

Effacer_R
Effacer_V

aa = Application.InputBox("Format de la date ex.: 25/01/2015", "Date du samedi de la période 1-1", Type:=1)
Worksheets("1-1R").Activate
Range("J1").Value = aa

Calculate
Protéger_feuille

ActiveWorkbook.Save
Worksheets("Vérification").Activate
ActiveSheet.Unprotect

Range("L1").Value = "Relevé quotidien " & an & "-" & an + 1

ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
Range("a1").Value = "Relevé quotidien " & an - 1 & "-" & an
ActiveWorkbook.ChangeLink _
        chemin & an - 2 & "-" & an - 1 & ".xlsm", chemin & an - 1 & "-" & an & ".xlsm", xlExcelLinks

ComparePlages
ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub

Private Sub Effacer_fichier()
    Dim Pat As String, Fichier As String

    Pat = "C:\Opr\Claire\Relevé quotidien\"

    Fichier = "RELEVÉ QUOTIDIEN 2014-2015.xlsm"

    If Dir(Pat & Fichier) <> "" Then   'le fichier existe déjà

        Kill Pat & Fichier
    Else
        Exit Sub

    End If

End Sub

Private Sub ComparePlages()  'Jean-Eric

Dim Arr1, _
    Arr2, _
    Flag As Boolean, _
    i As Long, j As Long, _
    cpt As Long, x As Integer

    Cells.Interior.Color = xlNone
    Application.ScreenUpdating = False
    Arr1 = Range("A2:J54").Value
    Arr2 = Range("L2:U54").Value
    Flag = True

    For i = LBound(Arr1, 2) To UBound(Arr1, 2)
        For j = LBound(Arr1, 1) To UBound(Arr1, 1)
            Debug.Print Cells(j + 1, i).Address & "-" & Cells(j + 1, i + 11).Address
            If Not CCur(Arr1(j, i)) = CCur(Arr2(j, i)) Then
                Flag = False
                Cells(j + 1, i).Interior.Color = RGB(255, 204, 0)
                Cells(j + 1, i + 11).Interior.Color = RGB(255, 204, 0)
                cpt = cpt + 1
            End If

        Next j
    Next i

    If cpt > 0 Then
        MsgBox "Vous avez " & cpt & " anomalies(s)." _
            & Chr(10) & "Les cellules sont mises en évidence." & Chr(10) & "Corriger les données sur les feuilles des périodes identifiés dans la colonne K.", 16
    Else
        MsgBox "Les 2 plages sont identiques.Le fichier va fermer,", 64
    Choisir_Toutes_les_feuilles
    Sheets(1).Select

    End If

End Sub

Private Sub Choisir_Toutes_les_feuilles()
Sheets(Array("1-1R", "1-2R", "1-3R", "1-4R", "2-1R", "2-2R", "2-3R", "2-4R", "3-1R", _
        "3-2R", "3-3R", "3-4R", "4-1R", "4-2R", "4-3R", "4-4R", "5-1R", "5-2R", "5-3R", "5-4R", _
        "6-1R", "6-2R", "6-3R", "6-4R", "7-1R", "7-2R", "7-3R", "7-4R", "8-1R", "8-2R", "8-3R", "8-4R", "9-1R", "9-2R", _
        "9-3R", "9-4R", "10-1R", "10-2R", "10-3R", "10-4R", "11-1R", "11-2R", "11-3R", "11-4R", _
        "12-1R", "12-2R", "12-3R", "12-4R", "13-1R", "13-2R", "13-3R", "13-4R", "13-5R", "1-1V", "1-2V", "1-3V", "1-4V", "2-1V", "2-2V", "2-3V", "2-4V", "3-1V", _
        "3-2V", "3-3V", "3-4V", "4-1V", "4-2V", "4-3V", "4-4V", "5-1V", "5-2V", "5-3V", "5-4V", _
        "6-1V", "6-2V", "6-3V", "6-4V", "7-1V", "7-2V", "7-3V", "7-4V", "8-1V", "8-2V", "8-3V", "8-4V", "9-1V", "9-2V", _
        "9-3V", "9-4V", "10-1V", "10-2V", "10-3V", "10-4V", "11-1V", "11-2V", "11-3V", "11-4V", _
        "12-1V", "12-2V", "12-3V", "12-4V", "13-1V", "13-2V", "13-3V", "13-4V", "13-5V")).Select

Range("a1").Select
End Sub

Private Sub Effacer_R()
'
' Effacer_R Macro
' Macro enregistrée le 2006/07/18 par Claire
    Choisir_R
    Range("C4:J10,C30:D30,C32:D32,C34:D35,F30:G35,I30:J35,B40:I40,B45:I45").Select
    Selection.ClearContents
End Sub

Private Sub Effacer_V()
'
' Effacer_V Macro
' Macro enregistrée le 2006/07/18 par Claire
    Choisir_V
    Range("B5:C8,G5:J8,B12:C15,G12:J15,B18:C22,B26:C29,h20:n33,B33:C36,f42:l42,c9,c16,c23,c30,c37,i9,i16,O20:O33").Select
    Selection.ClearContents
End Sub
Private Sub Choisir_R()

    Sheets(Array("1-1R", "1-2R", "1-3R", "1-4R", "2-1R", "2-2R", "2-3R", "2-4R", "3-1R", _
            "3-2R", "3-3R", "3-4R", "4-1R", "4-2R", "4-3R", "4-4R", "5-1R", "5-2R", "5-3R", "5-4R", _
            "6-1R", "6-2R", "6-3R", "6-4R", "7-1R", "7-2R", "7-3R", "7-4R", "8-1R", "8-2R", "8-3R", "8-4R", "9-1R", "9-2R", _
            "9-3R", "9-4R", "10-1R", "10-2R", "10-3R", "10-4R", "11-1R", "11-2R", "11-3R", "11-4R", _
            "12-1R", "12-2R", "12-3R", "12-4R", "13-1R", "13-2R", "13-3R", "13-4R", "13-5R")).Select
End Sub
Private Sub Choisir_V()

    Sheets(Array("1-1V", "1-2V", "1-3V", "1-4V", "2-1V", "2-2V", "2-3V", "2-4V", "3-1V", _
            "3-2V", "3-3V", "3-4V", "4-1V", "4-2V", "4-3V", "4-4V", "5-1V", "5-2V", "5-3V", "5-4V", _
            "6-1V", "6-2V", "6-3V", "6-4V", "7-1V", "7-2V", "7-3V", "7-4V", "8-1V", "8-2V", "8-3V", "8-4V", "9-1V", "9-2V", _
            "9-3V", "9-4V", "10-1V", "10-2V", "10-3V", "10-4V", "11-1V", "11-2V", "11-3V", "11-4V", _
            "12-1V", "12-2V", "12-3V", "12-4V", "13-1V", "13-2V", "13-3V", "13-4V", "13-5V")).Select
End Sub

Private Sub Enlever_la_protection()
Dim i As Integer
    Application.ScreenUpdating = False
    Sheets(1).Select
    For i = 1 To 105
        ActiveSheet.Unprotect
        ActiveSheet.Next.Select
    Next i
    ActiveSheet.Unprotect
    Application.ScreenUpdating = True
End Sub

'---------------------------------------------------------------------------------------
' Procedure : Protéger_feuille
' Auteur    : Claire
' Date      : 20/avril/2003
' But       : Protéger toutes les feuilles dans le but d'empècher des modifications sur les cellules avec formule.
'---------------------------------------------------------------------------------------

Private Sub Protéger_feuille()
Dim i As Integer

    Application.ScreenUpdating = False

    Sheets(1).Select
    For i = 1 To 105
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveSheet.EnableSelection = xlNoRestrictions

        ActiveSheet.Next.Select
    Next i
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _

            Application.ScreenUpdating = True
End Sub

Dès que je mets un chiffre dans la case K9, la macro de la feuille103 démarre, appelle Créer.... et plante juste après mon changelink, elle veut redémarrer la macro de la feuille 103 laquelle a encore une valeur puisque, à partir de Effacer, rien ne s'est fait.

Je présume que c'est dans ma façon d'appeler la macro Effacer. J'ai aussi essayer avec Call Effacer_R, même chose.

Si j'exécute la Macro Créer... sans passer par la macro de la feuille103, elle fonctionne très bien.

Je n'y comprends plus rien, à mon secours

Claire

Bonsoir,

Essaie ce bout de code.

Si K9 est liée à d'autres cellules, cela peut expliquer tes bugs.

A te relire.

Public flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
    If flag Then Exit Sub
    If Range("K9") <> 0 Then
        flag = True
        MsgBox "Je crée le fichier de l'année prochaine."
        Call Créer_fichier_nouvelle_année
    End If
    flag = False
End Sub

Bonsoir Jean-Eric,

Cela marche à merveille. Il n'était pas lié à d'autres cellules.

Un gros merci,

Claire

Rechercher des sujets similaires à "appel macro mysterieux"