Erreur 1004 "La méthode 'Copy' de l'objet '_Worksheet' a échoué"

Bonjour à vous,

J'ai un souci de macro VBA avec mon tableur Excel que j'utilise pour le suivi de la glycémie.

Il fonctionnait très bien, mais quand j'ai voulu l'utiliser aujourd'hui en utilisant le bouton "Enregistrer basal", je me retrouve avec l'erreur 1004 "La méthode 'Copy' de l'objet '_Worksheet' a échoué". Je n'ai rien changé entre l'utilisation le mois dernier et aujourd'hui, je suis un peu surpris.

Le code du bouton :

Private Sub btnEnregistrerBasal_Click()
    Dim ws As Worksheet
    Dim newWs As Worksheet
    Dim obj As OLEObject

    Set ws = ActiveSheet

    Application.EnableEvents = False

    ws.Copy After:=ws
    Set newWs = ActiveSheet
    newWs.Name = Format(Date, "yyyymmdd")

    For Each obj In newWs.OLEObjects
        If obj.Name = "btnEnregistrerBasal" Then
            obj.Delete
            Exit For
        End If
    Next obj

    ws.Activate

    ws.Range("C3:C10").Value = ws.Range("I3:I10").Value

    ws.Range("M3").Value = ws.Range("D11").Value
    ws.Range("M4").Value = ws.Range("E11").Value
    ws.Range("M5").Value = ws.Range("F11").Value
    ws.Range("M6").Value = ws.Range("C11").Value ' ? modifié

    ws.Range("I3").Value = ws.Range("C3").Value
    ws.Range("I4").Value = ws.Range("C4").Value
    ws.Range("I5").Value = ws.Range("C5").Value
    ws.Range("I6").Value = ws.Range("C6").Value
    ws.Range("I7").Value = ws.Range("C7").Value
    ws.Range("I8").Value = ws.Range("C8").Value
    ws.Range("I9").Value = ws.Range("C9").Value
    ws.Range("I10").Value = ws.Range("C10").Value

    Dim seuil As Double
    Dim valM As Variant

    seuil = ws.Range("L3").Value
    valM = ws.Range("M3").Value

    If IsNumeric(valM) Then

        If valM >= (seuil + 20) Or valM <= (seuil - 20) Then
            ws.Range("M3").Interior.Color = RGB(255, 199, 206)
            ws.Range("M3").Font.Color = RGB(156, 0, 6)

        ElseIf (valM >= (seuil + 10) And valM < (seuil + 20)) _
            Or (valM > (seuil - 20) And valM <= (seuil - 10)) Then
            ws.Range("M3").Interior.Color = RGB(255, 235, 156)
            ws.Range("M3").Font.Color = RGB(156, 101, 0)

        Else
            ws.Range("M3").Interior.Color = RGB(198, 239, 206)
            ws.Range("M3").Font.Color = RGB(0, 97, 0)
        End If

    End If

    valM = ws.Range("M5").Value

    If IsNumeric(valM) Then

        If valM >= (seuil + 20) Or valM <= (seuil - 20) Then
            ws.Range("M5").Interior.Color = RGB(255, 199, 206)
            ws.Range("M5").Font.Color = RGB(156, 0, 6)

        ElseIf (valM >= (seuil + 10) And valM < (seuil + 20)) _
            Or (valM > (seuil - 20) And valM <= (seuil - 10)) Then
            ws.Range("M5").Interior.Color = RGB(255, 235, 156)
            ws.Range("M5").Font.Color = RGB(156, 101, 0)

        Else
            ws.Range("M5").Interior.Color = RGB(198, 239, 206)
            ws.Range("M5").Font.Color = RGB(0, 97, 0)
        End If

    End If

    ws.Range("M4").Interior.Pattern = xlNone
    ws.Range("M4").Font.Color = RGB(0, 0, 0)

    ws.Range("M6").Interior.Pattern = xlNone ' ? modifié
    ws.Range("M6").Font.Color = RGB(0, 0, 0) ' ? modifié

    ws.Range("D3:E10").ClearContents

    newWs.Activate

    Application.EnableEvents = True

    ws.Range("C3").Value = ws.Range("C3").Value
End Sub

L'idée de ce code est de dupliquer la page Excel où j'ai rentré les informations en la renommant à la date du jour, puis de copier certaines informations de la page fille à la page mère puis de supprimer certaines données de la page mère pour qu'elle soit de nouveau vierge.

En l’occurrence, quand j'appuie sur le bouton, la page se duplique sans se renommer et aucun des tableaux présent sur celle-ci n'a été copié.

Est ce que vous avez des idées ?

Si je me tourne vers vous ,c'est que j'ai déjà essayé plusieurs choses : le fichier Excel n'est pas protégé, j'ai retourné dans tous les sens la logique de mon code, et surtout, ça fait féjà depuis 6 mois que je l'utilisais sans problème.

En vous remerciant par avance

Bonjour LucasDLL,

Pour nous aider à décrypter ton problème, lorsque le message d'erreur apparait, clique sur le bouton DEBOGGAGE

Cela va t'emmener sur la ligne fautive, tu nous diras laquelle

A+

Bonjour,

Je parle justement du ".copy" de ws.Copy After:=ws comme expliqué avant les lignes de code envoyées.

Lucas

Re,

Effectivement, et malheureusement, il n'y a aucune raison à part ...

S'il vous manque une référence dans VBA Project (ALT+F11)
Menu "Outils" -> "Références"

Vérifier qu'il n'y en est pas une indiquée comme [MANQUANTE] sinon décochez là

A+

Re,

Merci de ta réponse. Aucune référence [MANQUANTE] dans la liste. Je constate que je n'en ai que 5 de cochés dans la liste, faut-il tous les cocher ?

Merci d'avance

Re,

Peu importe, ce n'est pas le souci

Vous pouvez déposer votre classeur ou en MP si données privées

A+

Re,

Vous trouverez ci-joint un exemple de fichier.

Merci à vous

Étant teigneux et n'aimant ne pas comprendre, j'ai fini par trouver : c'était lié au problème de la mise à jour Excel qui empéchait tout copier/coller. J'ai forcé le nouveau patch et tout fonctionne parfaitement bien.
Comme quoi...
Merci de votre aide en tout cas,

Lucas
Rechercher des sujets similaires à "erreur 1004 methode copy objet worksheet echoue"