Erreur 424

Fermé
flahut08 Messages postés 2 Date d'inscription mercredi 2 janvier 2013 Statut Membre Dernière intervention 2 janvier 2013 - 2 janv. 2013 à 15:53
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 5 janv. 2013 à 14:43
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
2 janv. 2013 à 16:40
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 mercredi 2 janvier 2013 Statut Membre Dernière intervention 2 janvier 2013
2 janv. 2013 à 17:12
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 vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
2 janv. 2013 à 20:38
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 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
3 janv. 2013 à 16:24
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 3/01/2013 à 17:24
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
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 janv. 2013 à 14:43
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