Erreur d'éxecution type 13

Bonjour à tous,

Je vous expose mon problème, quand je supprime une cellule, pas de problème. C'est lorsque je supprime une ligne que l'erreur apparaît puisqu'en effet Range("D6:D2000") et Range("F6:BXY2000") sont supprimés en même temps

alors la ligne ci dessous déclare une erreur, seulement je ne vois pas comment résoudre :

.Cells(MaLigne, 1).Resize(1, 8).Value = Array(Environ("USERNAME"), _
                                                              Cells(Target.Row, 2).Value, _
                                                              ValCell, Target.Value, _
                                                              IIf(Target.Column = 4, "Révision " & Target.Value & " du document " & Cells(Target.Row, 2).Value, _
                                                              "Prise en compte de la révision " & Target.Value & " du document " & Cells(2, Target.Column).Value), _
                                                              Date, _
                                                              Hour(Now) & ":" & Minute(Now), Pourquoi.TextBox1.Text)

Avec le code en entier

Option Explicit
Dim Continuer As Integer, MaLigne As Long
Dim ValCell As Variant
Dim PreviousValue As Variant

Private Sub Worksheet_Change(ByVal Target As Range)

' on vérifie qu'on est sur l'une des deux plages, et on demande de continuer ou non
If Not Application.Intersect(Target, Range("D6:D2000")) Is Nothing _
Or Not Application.Intersect(Target, Range("F6:BXY2000")) Is Nothing Then
    Continuer = MsgBox("Êtes-vous certain de modifier la révision ", vbYesNo + vbExclamation + vbDefaultButton2)
Else
    Exit Sub
End If

Application.EnableEvents = False
    With Worksheets("Modifications")
        ' calcul de la première ligne vide sur les 8 colonnes
        MaLigne = .UsedRange.Resize(, 8).Find("*", , , , xlRows, xlPrevious).Row + 1

        ' si on ne continue pas
        If Continuer = vbNo Then
            Target.Value = ValCell

        ' si on continue
        Else
             Pourquoi.Show
            ' on injecte les 8 valeurs directement en passant un tableau
            .Cells(MaLigne, 1).Resize(1, 8).Value = Array(Environ("USERNAME"), _
                                                              Cells(Target.Row, 2).Value, _
                                                              ValCell, Target.Value, _
                                                              IIf(Target.Column = 4, "Révision " & Target.Value & " du document " & Cells(Target.Row, 2).Value, _
                                                              "Prise en compte de la révision " & Target.Value & " du document " & Cells(2, Target.Column).Value), _
                                                              Date, _
                                                              Hour(Now) & ":" & Minute(Now), Pourquoi.TextBox1.Text)
            End If
        End With
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D6:D2000")) Is Nothing _
  Or Not Application.Intersect(Target, Range("F6:BXY2000")) Is Nothing Then
ValCell = Target
End If
End Sub

Merci d'avance pour votre aide

Bonjour,

Si l'objet de ta procédure Change est d'intervenir à la modification d'une cellule, il faut mettre en tête de la procédure :

If Target.Count > 1 Then Exit Sub

Ainsi elle ne se déclenchera plus lorsque plusieurs cellules sont concernées, et en particulier lorsque tu supprimes une ligne.

Cordialement.

Merci pour la solution serait-il possible d'automatiser :

Si j'ajoute un nouveau document à l'aide de mon userform alors soit je n'ai pas de msgbox soit le message box se déclanche automatiquement sur "oui" (chose que j'ai essayé de faire ici) et il renvoit directement le text "Nouveau document" au lieu de saisir un texte

merci d'avance

Ton code est douteux !

CommandButton n'a pas de propriété Value utilisable (elle renvoie systématiquement False !)

Et c'est quoi Continuer ?

je ne vois pas comment procéder pour illustrer mes propos

Continuer est le nom que j'ai donné à mon Msgbox

MsgBox est une fonction ! Pas un objet, ça n'a pas de nom !

Dim Continuer As Integer

Je ne rencontre pas de problème avec ma msgbox, et je sais que la formule précedente est fausse, c'est pourquoi j'aimerai savoir comment faire pour ne pas afficher la msgbox lorsque j'ajoute un document avec le userform ajoutdoc que j'ai créé.

J'avoue que j'ai du mal à décoder tes questions ! Déjà que pour lire ton code c'est pas vraiment une opération simple... je ne sais plus très bien de quoi on parle et quel est l'objectif !

J'ai résolu mon problème avec

Application.EnableEvents = False

et = True en fin de userform

Merci quand même !

Rechercher des sujets similaires à "erreur execution type"