Erreur d'exécution 1004 : la méthode pastespecial de la classe Range échoue

Bonjour tout le monde, j'espère que vous allez bien :)

Je suis encore novice en Vba sous Excel et je rencontre une difficulté qui me bloque sur des heures maintenant. En effet, je reçois cette notification d'erreur lors de l'exécution de mon code : Erreur d'exécution 1004 : la méthode pastespecial de la classe Range a échoué

Voici mon code :

Private Sub CommandButton1_Click()

Dim i As Integer, Verif As Boolean

With Sheets("UTILITAIRE")
For i = 4 To .Range("AM4").End(xlDown).Row
If ComboBox1 = .Cells(i, 39) Then Verif = True: Exit For
Next i

If Not Verif Then
i = Sheets("UTILITAIRE").Range("AM4").End(xlDown).Row + 1
ComboBox1.Copy
Sheets("UTILITAIRE").Cells(i, 39).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False

End If
End With
End Sub

s'il vous plait dépannez moi :)

Merci

Bonjour,

si toutes les cellules en dessous de AM4 sont vide, l' end(xldown) vous amènera à la derniere cellule = ligne +1.048.000.

Si vous ajoutez encore 1, cela depasse la feuille.

Bon c'est vrai qu'il se peut que toute la colonne soit vide au départ... quoique maintenant ce n'est pas la cas, faudrait-il mieux faire le xlup ? pouvez vous me corriger le code dans ce sens ?

Si l'erreur concerne le xldown alors pourquoi il me colorie en jaune la ligne PasteSpecial pour indiquer d'où vient l'erreur ?

Private Sub CommandButton1_Click()

Dim i As Integer, Verif As Boolean, r As Long

With Sheets("UTILITAIRE")

r = Application.Max(3, .Range("AM" & Rows.Count).End(xlUp).Row) 'je suppose que l'entête est la ligne 3 et les données commencent à la ligne 4

For i = 4 To r

If ComboBox1 = .Cells(i, 39) Then Verif = True: Exit For

Next i

If Not Verif Then

ComboBox1.Copy

.Cells(r + 1, 39).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False

End If

End With

End Sub

2 possibilités

1. -32,768 <= integer <= 32,767 : votre i, il avait quel valeur ? i est peut-être mieux un "long"

2. si i = derniere ligne (+1.048.000, donc déjà problème précédent), excel essaie à coller à la ligne suivante et se bloque.

lequel des 2 ??? Ajouter un msgbox ou en mode direct

If Not Verif Then
i = Sheets("UTILITAIRE").Range("AM4").End(xlDown).Row + 1
msgbox i 'msgbox
debug.print i 'mode direct
ComboBox1.Copy
Sheets("UTILITAI...

Re bonjour BsAlv,

J'ai appliqué votre code et il me remet toujours la même erreur en me pointant en jaune cette ligne du code :

.Cells(r + 1, 39).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False

?

Peut-être que le problème vient du ComboBox1 que je copie ? Non ?

la prochaine fois, c'est mieux d'ajouter un fichier representatif.

La cellule où vous copiez est vide, à quoi sert ce "Operation:=xlMultiply" ?

C'est quoi le contenu de combobox1 ? un chiffre ?

Si vous n'utilisez que ceci ".Cells(r + 1, 39).PasteSpecial Paste:=xlPasteValues", ça passe ?

en fait si j'utilise seulement Cells(r + 1, 39).PasteSpecial Paste:=xlPasteValues ça ne passe pas non plus.

Le combo box1 est une liste déroulante du user userform sur lequel se trouve le bouton qui le renvoi cette erreur. Normalement c'est du type "standard". Je lui ai affecté une rowsource à partir d'une plage de données de type standard.

et ceci ?
If Not Verif Then Sheets("UTILITAIRE").Cells(r + 1, 39).value=combobox1.value

Bah voilà c ça :)

Pourquoi chercher midi à quatorze heures quand on peut donner la valeur du combobox1 directement via = au lieu de copier/coller.

Merci beaucoup BsAlv :)

Rechercher des sujets similaires à "erreur execution 1004 methode pastespecial classe range echoue"