Code suppression de ligne bizarre

Salut le forum

J'ai un code qui me permet normalement lorsque je saisis "ok" en minisucle dans la colonne H, j'obtiens la suppression de la ligne.

Souvent ca marche, souvent pas.

N.B : je rappel que le classueur et la feuille ne sont pas protègé.

Qu'est ce qui cloche dans le code?

merci de m'aider svp!

Bonsoir

zombe a écrit :

Qu'est ce qui cloche dans le code?

La ligne numéro 5 ...

Plaisanterie mise à part, comment veux-tu que l'on sache sans voir le code ?

Amicalement

Nad

Toutes mes excuses pour cet oubli.

Le voici

29cont.xlsm (45.07 Ko)

Salut Zombe,

Chez moi le code fonctionne à chaque fois.

Peux-tu nous fournir un fichier avec une situtation où ça ne fonctionne pas ?

Cordialement.

Salut Yvouille

Merci pour votre réaction.

Comme je l'ai dis, souvent ca fonctionne et souvent pas.

Lorsque la feuille est protégée et que j'ôte la protection, ca ne marche pas.

Vous pouvez tester ce que je vins de dire pour voir.

Bonjour,

ça ne fonctionne pas à chaque fois que tu es sur une sélection multiple. En effet tu ne peux pas faire un For each Cel pour des suppressions multiples. Dans ce cas Excel supprime une ligne sur 2

En résumé, les suppressions doivent se gérer ligne par ligne de préférence de la dernière ligne à la première ou (à la rigueur) en incrémentant un compteur de ligne.

A+

Salut,

Je présume que tu lances parfois la macro avec le mot de passe en place et que ton code bloque sur le passage ci-dessous.

18 06

Si tu quittes Visual Basic à ce moment (ou si tu as simplement cliqué sur "Quitter" ou un mot comme ça lorsqu'il y a un message d'erreur), sans que le code soit passé par Application.EnableEvents = True, plus aucune macro ne fonctionne jusqu’à ce que tu aies quitté puis réouvert Excel (j’ai essayé de refermer uniquement le fichier puis de l’ouvrir à nouveau, mais ça ne suffit pas) ; les macros sont alors comme figées.

Afin d’éviter que ton code bloque et que tu interrompes le code en cours de route, je te conseille d’inclure à ton code l’enlèvement du mot de passe avant l’effacement de la ligne, mot de passe que tu peux remettre en place - toujours par l'intermédiaire du code - immédiatement après.

Dans ton code modifié ci-dessous, le mot de passe est eeee

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, Plage As Range
Set Plage = Intersect(Target, Columns(8))
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
If Cel = "ok" Or Cel = "OK" Then
Application.EnableEvents = False
ActiveSheet.Unprotect ("eeee") ' ENLEVEMENT DU MOT DE PASSE
Rows(Cel.Row).Delete
' Insérer avant la dernière ligne pour garder la bonne zone nommée
Rows(398).Insert Shift:=xlDown
ActiveSheet.Protect ("eeee") 'REMISE EN PLACE DU MOT DE PASSE
Application.EnableEvents = True
End If
Next Cel
End Sub

A te relire.

Salut Yvouille et galopin01

Merci pour vos propositions.

Ca marche à merveille.

Satisfait.

Rechercher des sujets similaires à "code suppression ligne bizarre"