Code bloqué
Bonjour j'ai un petit problème avec le code suivant :
Private Sub Worksheet_Change(ByVal Target As Range)
'Quand les cellules de la colonne B change.
'Que le texte de la cellule contient "rifier" alors :
'On met la numérotation de la colonne A à jour et
'On formate les cellule avec bordures.
Dern_numero = Range("B" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
Application.ScreenUpdating = False
Set Page = Worksheets("Page2")
Numero = 1
With Page
For i = 2 To Dern_numero
If .Cells(i, 2).Value Like "*rifie*" Or .Cells(i, 2).Value Like "*rifié*" Then
.Cells(i, 1) = Numero
Numero = Numero + 1
.Cells(i, 1).Borders.Weight = 2
.Cells(i, 1).Borders.Color = 1
.Cells(i, 1).Font.Name = "Arial"
.Cells(i, 1).Font.Size = 9
.Cells(i, 1).Font.Bold = True
.Cells(i, 2).Borders.Weight = 2
.Cells(i, 2).Borders.Color = 1
.Cells(i, 2).Font.Name = "Arial"
.Cells(i, 2).Font.Size = 9
.Cells(i, 2).Font.Bold = False
End If
Next
End With
End If
End SubEn effet tout se passe bien quand je complète la cellule
par contre quand je supprime une ligne la page reste figée et je ne peux plus rien faire.
N'y a t-il pas un moyen pour faire en sorte que quand j'efface le contenu d'une cellule en B la ligne soit supprimée ?
Merci pour votre aide.
Bonjour,
pour se protéger des Targets qui provoque des erreurs il faut les tester afin de sortir de la Sub avant que l'erreur n'arrive.
Dans votre cas, lorsque que vous sélectionnez une ligne et que vous la supprimez, je pense que le target prend en compte qu'une cellule de la colonne B est changée, mais du coup elle n'existe plus... Bub, non ?
La solution est :
If Target.Count > 1 Then Exit Sub ' a mettre au tout début de la sub afin de ne pas perdre de temps avec des calculs inutiles un peu comme votre calcul de dernier numéro qui n'a d'intérêts que si la condition suivante dans le code est vrai...
si le nombre de cellule de Target est supérieur à 1 cela veut dire que c'est une sélection multiple, notre sub "s'en fiche" alors on sort.
Résultat, la suppression se fait mais la sub n'est pas déroulée, il n'y a plus de bug.
@ bientôt
LouReeD
LouReeD a écrit :La solution est :
If Target.Count > 1 Then Exit Sub ' a mettre au tout début de la sub afin de ne pas perdre de temps avec des calculs inutiles un peu comme votre calcul de dernier numéro qui n'a d'intérêts que si la condition suivante dans le code est vrai...
Merci beaucoup ça fonctionne super.
content pour vous
@ bientôt
LouReeD