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 SubL'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
Comme quoi...
Merci de votre aide en tout cas,
Lucas