Erreur 424

flahut08 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un petit problème avec ma macro car lorsque je suis sur la boite de dialogue, l'erreur 424 arrive si je clique sur "annuler"

Pouvez-vous m'aider?
voici le code:

Dim cellule As Range
Dim Plage As Range

Set Plage = Application.InputBox("Sélectionner les cellules à supprimer", Type:=8)

For Each cellule In Plage
If cellule = "" Then
Exit Sub
Else
For w = 4 To 21
x = Cells(cellule.Row, w).Value
Cells(3, w) = Cells(3, w) + x
Cells(cellule.Row, 1).ClearContents
Next
End If

Next cellule

Plage.Select
Selection.ClearContents

7 réponses

Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Bonsoir flahut08,

C'est normal car vous faites mettez "RIEN" dans plage, et Excel n'aimes pas quand on ne met rien dans un range.

Avant De faire un Set, toujours être certain d'y ajouter quelque chose de correct.
0
flahut08 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de votre réponse

Mais en faite ma macro fonctionne très bien, par contre lorsque je suis sur la boite de dialogue si je clic sur "annuler", l'erreur 424 apparait.
0
Heliotte Messages postés 1491 Date d'inscription   Statut Membre Dernière intervention   92
 
Je viens de vous expliquer !

Quand vous faite Set Plage = Application.InputBox("Sélectionner les cellules à supprimer", Type:=8) ,
Vous obliger Excel à mettre la valeur retournée par la bôite de dialogue dans la variable Plage qui est une variable de type Range.
Le bouton Annuler ne renvoi pas une valeur de type Range mais une valeur de type String.

Il faut contourner l'erreur en testant si la valeur renvoyée par la boîte de dialogue est de type Range ou d'un autre type .. Si la valeur retournée est bien de type Range, alors et seulement à ce moment là, on peut mettre cette valeur dans la variable Plage en faisant Set Plage = ValeurRetournéeParLaBoiteDeDialogue
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

contrôle si ta plage est correcte avant de faire le traitement :
if not plage is nothing then
   ' traitement
   ...
else
   msgbox "vous n'avez rien sélectionné"
endif 

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
@Eric, l'erreur se produit sur le Input, impossible de tester. Seul solution le On Error.

@flahut08
En examinant ton code je pense que ce que tu veux faire c'est...
Sub Test()  
Dim Plage As Range, x  
    'pour le test x=20, ce que tu ne spécifie pas !  
    x = 20  
    On Error GoTo Sortie  
    Set Plage = Application.InputBox("Sélectionner les cellules à supprimer", Type:=8)  
    Plage.Copy Cells(Plage.Row, Plage.Column + x)  
    Plage.ClearContents  
Sortie:  
End Sub


A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
flahut08
 
Merci de vos réponses.

Mais c'est lermite222 qui a raison et votre solution fonctionne super bien, donc un grand merci.

Par contre j'ai du mal à comprendre pourquoi tu mets x=20, c'est pour ma culture personnelle.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Re,
D'après ce que j'ai pu comprendre, avant de supprimer tu copie la sélection plus loin dans la feuille. Le x c'est le nombre de colonnes de décalage pour la copie par rapport à la sélection.
A+
0