Evénement suppression de ligne sous conditions

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pedrohacastro

XLDnaute Nouveau
Bonjour à tous !!

Je suis nouveau sur le forum mais je suis déjà vos discussions depuis un moment, merci beaucoup !!

Mon problème donc, c'est que je veux insérer dans un évènement Worksheet_Change la condition suivante :

. Si l'utilisateur supprime une ligne, la routine vérifie si cette ligne comporte un texte en gras dans la colonne "opération". Si oui, il vérifie si la ligne juste au-dessous a un fond blanc et si elle n'a pas un texte en gras. Si ces conditions sont vraies, l'utilisateur n'a pas le droit de supprimer la ligne. Le problème, c'est qu'avec mon code je n'arrive pas à analyser la ligne avant qu'elle soit supprimée. Lorsque j'analyse la ligne range(colonne_operation & target.row), la case analysée est celle qui a pris la place de celle qui a été supprimée, tant que c'est celle qui a été supprimée qui m'intéresse. Mon code est le suivant :

Code:
    If Target.Columns.Count = Columns.Count Then
        ' Si sous-titre supprimé
        If Range(colonne_operation & Target.Row).Font.Bold = True Then
            If Range(colonne_operation & Target.Row).Offset(1, 0).Font.Bold = False And _
            Range(colonne_operation & Target.Row).Offset(1, 0).Interior.Color = RGB(255, 255, 255) Then
                MsgBox "Vous ne pouvez pas supprimer un titre sans avoir supprimé les opérations correspondantes."
                Application.Undo
            End If
        End If
    End If

Merci beaucoup en avance !!
 
Re : Evénement suppression de ligne sous conditions

Bonjour pedrohacastro et bienvenue (pour ton premier message, en tout cas! 😀)

Si tu as compris que l'événement n'était pas le bon (ou que ça risquait de te compliquer la vie)... tu ne peux pas en utiliser un autre (soit un double-clic, soit un clic droit dans une cellule "dédiée" pour chaque ligne)?
 
Re : Evénement suppression de ligne sous conditions

Merci, Modeste !

En fait non, il faudrait vraiment que ça déclenche si l'utilisateur essaie de supprimer la ligne, et jamais dans d'autre situations. J'ai réussi à trouver quelque chose qui me dépanne bien :

- Je fais un "Undo" de suite, sans savoir si la ligne peut ou non être supprimée. Après je l'analyse, si effectivement elle peut être supprimée, je fais encore un "Undo" (et celui-ci annule donc le dernier, ce n'est pas possible de faire "Application.Redo", mais ce serait le même principe !). Voici mon code :
Code:
If Target.Columns.Count = Columns.Count Then
        i = Target.Row
        Application.Undo
        ' Si sous-titre supprimé
        If Range(colonne_operation & i).Font.Bold = True Then
            ' Si case juste au-dessous est une opération, on ne peut pas supprimer
            If Range(colonne_operation & i).Offset(1, 0).Font.Bold = False And _
            Range(colonne_operation & i).Offset(1, 0).Interior.Color = RGB(255, 255, 255) Then
                MsgBox "Vous ne pouvez pas supprimer un sous-titre sans avoir supprimé les opérations correspondantes."
            ' Si ce n'est pas une opération juste au-dessous, on peut supprimer
            Else
                Application.Undo
            End If
       End If
End If

Merci !
 
Re : Evénement suppression de ligne sous conditions

En fait non !

La condition :

"If Target.Columns.Count = Columns.Count Then"

Ne permet que les changements de ligne entière (insertion ou suppression) soit considérés. Pour un changement de valeur quelconque, Target.Columns.Count <> Columns.Count
 
Re : Evénement suppression de ligne sous conditions

Bonjour, tototiti2008 !

Je me souvenais plus où j'avais vu ça mais oui, effectivement je me suis inspiré de là, merci mercatog !

Pour l'instant le code que j'utilise marche bien, sauf dans un cas (mais je pense que je laisserai comme ça, je vois pas vraiment un moyen de résoudre ce problème) :

- Si l'utilisateur essaie de supprimer plusieurs lignes, c'est la première ligne qui est considérée par la routine comme la ligne supprimée, et je n'arrive vraiment pas à trouver quelque chose qui analyse toutes les lignes supprimées, mais bon, ce n'est pas non plus une fatalité...

Bonne journée !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
243
Réponses
2
Affichages
154
Réponses
14
Affichages
249
Réponses
6
Affichages
416
Retour