Bonjour tout le monde,

Je cherche à automatiser une saisie sur un tableur excel en utilisant un code VBA. Dès qu'une cellule est modifiée, j'efface certaines données ou je fais apparaître des Userforms en fonction de certains choix.

Pour le moment, tout fonctionne. Mais en faisant quelques tests je me rends compte que quand je fais une sélection d'une plage de donnée n'importe ou dans la feuille excel et que je la supprime ou la modifie, le code plante.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Worksheet_Change(ByVal Target As Range)
 
'Efface la colonne profil d occupation si l usage change
For i = 14 To 42
    If Target.Column = 4 And Target.Row = i Then
        Cells(i, 5) = ""
    End If
Next
 
'Alerte sur l heure de fermeture du site
For j = 6 To 10
    If Target.Column = 6 And Target.Row = j And Cells(j, 6) < Cells(j, 5) Then
        MsgBox "L heure de fermeture est plus tot que l'heure d ouverture. êtes vous sur de votre choix ?"
    End If
Next
 
'Demande de veille des équipements ou pas
For Z = 14 To 42
    If Target.Column = 5 And Target.Row = Z And Target.Value = "Sanitaires" Then
 
        UserForm1.Show
        Cells(Z, 34).Value = Cells(2, 34).Value
 
        ElseIf Target.Column = 5 And Target.Row = Z Then
        Cells(Z, 34).Value = ""
 
    End If
Next
End Sub
Le code plante à la ligne 16.
Je pense qu'il n'aime pas le fait que je modifie plusieurs cellules en même temps.

Est ce que je peux modifier mon code pour pouvoir permettre une sélection de plusieurs cellule et faire une suppression des données ? Si oui, comment ?

Merci d'avance pour votre aide.

Bien cordialement,
Romain.