Erreur d'exécution '1004'

micie1509

XLDnaute Junior
Bonjour à tous,

J'ai cette petite macro qui insère des lignes et qui fonctionne très bien si on ne touche pas au bouton Annuler. Si j'appuie sur le bouton Annuler j'ai cette erreur:

Erreur d'exécution '1004':
Erreur définie par l'application ou par l'objet

J'imagine, que nulle part dans mon code il n'est indiqué que faire si j'appuie sur Annuler. J'aurais cru qu'en choisissant InputBox, cela allait de soi puisque les boutons sont générés automatiquement. Mais on dirait bien que non. J'ai essayé plusieurs options trouvées ici et là et soit la macro ne fonctionne plus, soit j'ai quand même cette erreur.

Voici le code:
Code:
Sub Ligne_insérer_si_emplacement_ok()

    Sheets("Feuille de calculs").Select
    
    Dim n, L As Range
    Set L = ActiveCell.EntireRow
    Dim u As String
    
   
    
    ActiveSheet.Unprotect
    If Selection.Row < 18 Then
        MsgBox "NON, NON Tu peux pas faire ça !"
        
    
     Else
        
        n = InputBox("Combien de ligne voulez-vous insérer ?", "Choix", 1)   'nombre de lignes à insérer
        Rows("14:1058").Select
        Selection.EntireRow.Hidden = False

        ActiveSheet.Outline.ShowLevels RowLevels:=2
        Selection.AutoFilter
        Rows("1:1").Select
        Selection.EntireRow.Hidden = True

        L(2).Resize(n).Insert
        Rows(1).EntireRow.Hidden = False
        Rows(1).Copy L(2).Resize(n)
        L(2).Resize(n).RowHeight = L(n - 1).RowHeight
        Rows(1).EntireRow.Hidden = True

        Selection.AutoFilter
          
   
    End If
     
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True

End Sub

Est-ce que quelqu'un aurait une idée de ce que je dois rajouter pour que le bouton Annuler fonctionne?

Merci beaucoup !
 

Pièces jointes

  • Classeur1.xlsm
    21.7 KB · Affichages: 32
  • Classeur1.xlsm
    21.7 KB · Affichages: 40
  • Classeur1.xlsm
    21.7 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Erreur d'exécution '1004'

Bonsoir.

Ajoutez derrière le n = InputBox(… :
VB:
If IsNumeric(n) Then
et mettez un autre End If derrière celui qu'il y a déjà.

Ou plutôt
VB:
If Not IsNumeric(n) Then Exit Sub
Mais alors mettez la ActiveSheet.Unprotect seulement juste après et la ActiveSheet.Protect avant le End If

Enfin corrigez ça au mieux mais en tout cas vérifiez si votre Variant n peut être converti en nombre avant d'essayer de l'utiliser en tant que tel, parce que l'InputBox renvoie un texte vide, qui ne le peut pas, sur Annuler.
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
396

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG