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 Sub

En 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

Rechercher des sujets similaires à "code bloque"