Serait-il possible de m'aider à améliorer le code ci-dessous pour que je puisse coller les valeurs plutôt qu'un coller simple?
La range que je copie est à base de RechercheV sur la colonne D que je ne veux pas copier.
J'ai essayé de rajouter .PasteSpecial(xlPasteValues) un peu partout, mais j'ai toujours la même erreur. (unable to get the pastespecial property of the range class)
VB:
Sub DEL(ligne As Integer)
Application.EnableEvents = False 'on désactive les évènements
Application.ScreenUpdating = False 'on désactive le rafraichissement des feuilles
With ActiveSheet
Set BlocSuivant = .Range("A" & ligne & ":B65536").Find(.Name, lookat:=xlPart) 'recherche de la prochaine ligne de colonne B qui contient le nom de la feuille
If Not BlocSuivant Is Nothing Then 'si il y a quelque chose
If BlocSuivant.Row = ligne Then 'si on retrouve le bloc en cours (==on est sur le dernier bloc
fin = .UsedRange.Rows.Count + 5 'on met la dernière ligne de la feuille
Else
fin = BlocSuivant.Row - 2 'sinon on récupère la ligne -2 pour remonter dans le bloc en cours
End If
.Range("F" & ligne & ":I" & fin).COPY Destination:=Sheets("DELETE").Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) 'on copie colle
Application.CutCopyMode = False
.Range("U" & ligne) = "Supprimé"
End If
End With
Application.EnableEvents = True 'on réactive
Application.ScreenUpdating = True
End Sub
Serait-il possible de m'aider à améliorer le code ci-dessous pour que je puisse coller les valeurs plutôt qu'un coller simple?
La range que je copie est à base de RechercheV sur la colonne D que je ne veux pas copier.
J'ai essayé de rajouter .PasteSpecial(xlPasteValues) un peu partout, mais j'ai toujours la même erreur. (unable to get the pastespecial property of the range class)
VB:
Sub DEL(ligne As Integer)
Application.EnableEvents = False 'on désactive les évènements
Application.ScreenUpdating = False 'on désactive le rafraichissement des feuilles
With ActiveSheet
Set BlocSuivant = .Range("A" & ligne & ":B65536").Find(.Name, lookat:=xlPart) 'recherche de la prochaine ligne de colonne B qui contient le nom de la feuille
If Not BlocSuivant Is Nothing Then 'si il y a quelque chose
If BlocSuivant.Row = ligne Then 'si on retrouve le bloc en cours (==on est sur le dernier bloc
fin = .UsedRange.Rows.Count + 5 'on met la dernière ligne de la feuille
Else
fin = BlocSuivant.Row - 2 'sinon on récupère la ligne -2 pour remonter dans le bloc en cours
End If
.Range("F" & ligne & ":I" & fin).COPY Destination:=Sheets("DELETE").Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) 'on copie colle
Application.CutCopyMode = False
.Range("U" & ligne) = "Supprimé"
End If
End With
Application.EnableEvents = True 'on réactive
Application.ScreenUpdating = True
End Sub
Merci beaucoup Jacky, c'est nickel !!
Du coup j'ai une autre question... j'aimerais pouvoir faire un copier coller supplémentaire.
Dans le classeur joint, lorsque l'utilisateur clique sur supprimer, j'aimerais que pour le bloc concerné, les prix de la colonne K soient copiés vers la colonne O.
Je pars du principe que l'utilisateur va d'abord cliquer sur le copier de la colonne Y pour avoir une vue d'ensemble et ensuite choisira ce qu'il veut supprimer.