Améliorer l'affichage d'une action macro

Bonjour,

Grâce à h2s04 j'ai réussi à coder en plus du code permettant d'afficher "A INITIER" dans chaque cellule C d'une ligne nouvellement insérée, un code permettant de confirmer la suppression d'une ligne (pour éviter les fausses manip), le code est le suivant:

If nombredelignes < ActiveSheet.ListObjects("Tableau1").ListRows.Count Then
nombredelignes = ActiveSheet.ListObjects("Tableau1").ListRows.Count
For Each r In Target.Rows
Cells(r.Row, "C") = "A INITIER"
Next
Else
If nombredelignes > ActiveSheet.ListObjects("Tableau1").ListRows.Count Then
nombredelignes = ActiveSheet.ListObjects("Tableau1").ListRows.Count
If MsgBox("Etes-vous sûr de vouloir supprimer la ligne ?" & vbCrLf & "Attention toute validation est définitive, aucune re-modification de la ligne ne sera possible !", vbInformation + vbYesNo) = vbYes Then
Else
Application.ScreenUpdating = True
Application.Undo
Application.ScreenUpdating = False
End If
End If
End If

Il fonctionne tel que je l'attends, mais je voudrais améliorer deux choses :

1) Lorsque je fais un cliquer ligne, supprimer, parfois la ligne disparaît avant le message de confirmation (j'aimerais qu'elle reste et qu'elle ne disparaisse qu'une fois le message validé)

2) Lorsque je clique sur "non", la ligne à supprimer, disparaît et réapparaît directement (1 clignotement), ce qui n'est pas très propre.

Peut-être que la syntaxe de mon code n'est pas appropriée pour ces évènements.

Merci d'avance pour votre aide !

Cordialement !

bonjour,

à tester

Application.ScreenUpdating = False
    If nombredelignes < ActiveSheet.ListObjects("Tableau1").ListRows.Count Then
        nombredelignes = ActiveSheet.ListObjects("Tableau1").ListRows.Count
        For Each r In Target.Rows
            Cells(r.Row, "C") = "A INITIER"
        Next
    Else
        If nombredelignes > ActiveSheet.ListObjects("Tableau1").ListRows.Count Then
            nombredelignes = ActiveSheet.ListObjects("Tableau1").ListRows.Count
            If MsgBox("Etes-vous sûr de vouloir supprimer la ligne ?" & vbCrLf & "Attention toute validation est définitive, aucune re-modification de la ligne ne sera possible !", vbInformation + vbYesNo) = vbYes Then
            Else
                Application.Undo
            End If
        End If
    End If
    Application.ScreenUpdating = True

Hello !

Nickel, tout est ok merci :)

Cordialement !

Bonjour,

En fait après plusieurs essais, j'ai un problème quand je supprime, la ligne disparaît et le message apparaît, comment faire pour ne pas effectuer l'action avant l'affichage du message ? Avec le code ci-dessus stp. :)

Merci !

Cordialement !

bonjour,

je n'ai pas de solution. La macro événementielle est déclenchée par un changement (ici suppression d'une ligne), donc la ligne est supprimée avant que la macro ne soit exécutée. il y a des solutions possibles en réinventant l'interface excel, mais cela me parait encore pire comme solution.

Merci pour ta rep rapide :)

Ok je vois !

J'ai peut-être un élément de réponse, je viens juste de remarquer que si je sélectionne deux fois la ligne (colonne des ligne pour suppr/ajouter), l'affichage est ok. Alors que si je fais direct un clic droit sur la ligne suppr --> la ligne disparaît avant le message ^^'. Est-ce qu'il ne s'agirait pas du Worksheet_SelectionChange qui fait ça (on attend une vraie sélection pour que la macro s'exécute comme attendu?). Bizarre tout ça !

Rechercher des sujets similaires à "ameliorer affichage action macro"