Gestion erreur avant collage

SSP34

XLDnaute Junior
Bonjour les XLnautes,

J'ai écrit une petite macro qui, après avoir effacé une plage, doit faire un collage "valeurs".

Sub coller_Atig()
'
'Efface puis collage spécial valeurs
'
Range("A8:A2000").Select
Selection.ClearContents
Range("A8").Select
ActiveSheet.PasteSpecial Format:="Biff4", Link:=False, DisplayAsIcon:= _
False
Range("C1").Select
End Sub

Si auparavant j'ai copié la plage source et que les données sont dans le presse papier tout se passe bien.

MAIS

Si je n'ai pas fait copier le code plante avec une erreur :

Erreur d'execution 1004
la Méthode PasteSpecial de la classe WorkSheet a échoué

Que faut-il ajouter pour gérer l'erreur, quelque chose comme :

"Si rien dans le presse-papier"
alors MsgBox "Vous n'avez pas copié auparavant!"

Par avance merci pour votre aide.

Pablo.
 

mromain

XLDnaute Barbatruc
Re : Gestion erreur avant collage

bonjour SSP34,

je te propose ce code (pas testé) :
Code:
Sub coller_Atig()
'
'Efface puis collage spécial valeurs
'
Range("A8:A2000").Select
Selection.ClearContents
Range("A8").Select
[B]On Error Resume Next 'continuer même en cas d'erreur
[/B]ActiveSheet.PasteSpecial Format:="Biff4", Link:=False, DisplayAsIcon:= _
False
[B]If Err.Number <> 0 Then 'si il y a eu une erreur,
        MsgBox "pas de sélection à coller"  'afficher le message d'erreur
End If
On Error GoTo 0 'continuer la macro normalement (plante si il y a une erreur)
[/B]Range("C1").Select
End Sub
a+


edit: salut pierrejean, ce plaisir est partagé ;)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Gestion erreur avant collage

bonjour SSP34

A tester

Code:
Sub coller_Atig()
'
'Efface puis collage spécial valeurs
'
Range("A8:A2000").Select
Selection.ClearContents
Range("A8").Select
On error resume next
ActiveSheet.PasteSpecial Format:="Biff4", Link:=False, DisplayAsIcon:= _
False
If err.number<>0 then
  msgbox("il faut d'abord Copier ")
  exit sub
end if
on error goto 0
Range("C1").Select
End Sub

Edit : Salut mromain
Toujours un plaisir de te croiser
 

SSP34

XLDnaute Junior
Re : Gestion erreur avant collage

Merci Pierre-Jean,

J'ai fait un deuxième post car je ne voyais pas mon premier.

Ton code fonctionne ... à moitié.

C'est à dire : il détecte bien l'erreur mais après avoir effacé.
Autrement dit :
1°) Efface
2°) Si erreur arrêt du code
3°) Une fois les anciennes données effacées je les perds alors que j'en ai besoin par défaut.

Il faudrait pouvoir vérifier avant d'effacer. J'espère être clair.

Pablo.
 

mromain

XLDnaute Barbatruc
Re : Gestion erreur avant collage

re bonjour,
pierrejean :)


voici le code modifié : si rien n'est sélectionné, on demande à l'utilisateur de sélectionner la zone à copier.
Code:
Sub coller_Atig()
'
'Efface puis collage spécial valeurs
'

Range("A8:A2000").ClearContents 'effacer la zone

On Error Resume Next 'continuer même en cas d'erreur
Range("A8").PasteSpecial Format:="Biff4", Link:=False, DisplayAsIcon:=False 'collage spécial

If Err.Number <> 0 Then 'si il y a eu une erreur,
    zoneCopie = Application.InputBox("Sélectionnez la zone à copier", , , , , , , 8) 'afficher le message d'erreur
    zoneCopie.Copy 'copier la zone
    Range("A8").PasteSpecial Format:="Biff4", Link:=False, DisplayAsIcon:=False 'collage spécial
End If
On Error GoTo 0 'continuer la macro normalement (plante si il y a une erreur)
Range("C1").Select
End Sub

a+
 

Statistiques des forums

Discussions
312 440
Messages
2 088 452
Membres
103 854
dernier inscrit
linzei