OVH Cloud OVH Cloud

Gestionnaire d’événement pour l'ajout de ligne

2 réponses
Avatar
Yattabi
Bonjour,

Je voudrais écrire du code qui s’exécutera à l’interception des évènements
d’ajout et/ou de suppression des lignes et/ou de colonnes par un utilisateur.
Existe-t-il un tel gestionnaire d’événement dans Microsoft Excel.

Merci pour toute suggestion.

2 réponses

Avatar
Starwing
Bonjour,

Une autre solution envisageable serait de retirer les lignes et les
colonnes.
Outils-Option-Affichage et décocher En-têtes de ligne et de colonne.

Starwing
Avatar
michdenis
Bonjour Yattabi,

Tu veux une bidouille ?

Suppose que tu as une feuille masquée, nommée "toto" et que dans la cellule A6536 de cette feuille masquée ,
la formule suivante : þuil1!A65536 . Afin que cette feuille "toto" soit accessible à l'usager, tu l'as masques avec
la ligne de commande suivante : Worksheets("Toto").Hidden = xlVeryHidden

à chaque fois que tu supprimeras une ligne, l'événement "Calculate" de la feuille "toto" s'exécutera et donc, tu as un
événement susceptible de te rendre service ... tu peux appliquer la même chose en ce qui concerne les colonnes !


Comme seconde alternative, disons qu'il est possible d'intercepter l'événement "Supprimer" lorsque cela est fait à
partir de la commande "Supprimer" du menu Édition. Les procédures qui suivent te permettent d'ajouter du code (des
actions) à chaque fois que cette commande est appelée. Lorsque l'on est pas content du travail d'une fonction.. on l'a
réécrit à sa manière ... ça aussi c'est possible dans Excel. !

La suite est là :

Ce qui suit est à copier dans un module Standard :
'-----------------------------------
Sub NouveauSupprimer()

Dim Cbar As CommandBarControl
For Each Cbar In Application.CommandBars.FindControls(ID:)2)
Cbar.OnAction = "Nouvelle_Action_Supprimer"
Next

For Each Cbar In Application.CommandBars.FindControls(ID:G8)
Cbar.OnAction = "Nouvelle_Action_Supprimer"
Next

End Sub
'-----------------------------------

'-----------------------------------
Sub SupprimerNormal()

Dim Cbar As CommandBarControl
For Each Cbar In Application.CommandBars.FindControls(ID:)2)
Cbar.OnAction = "Nouvelle_Action_Supprimer"
Next

For Each Cbar In Application.CommandBars.FindControls(ID:G8)
Cbar.OnAction = "Nouvelle_Action_Supprimer"
Next

End Sub
'-----------------------------------


Voici la nouvelle fonction "supprimer"
Tu peux ajouter au début ou à la fin des lignes de code
pour faire le boulot supplémentaire que tu désires.
Il est évidemment possible d'appeler tout simplement
d'autres macros.

'-------------------------------------
Sub Nouvelle_Action_Supprimer()

Dim Rg As Range, Nb As Long
Dim A As Long, B As Long
Dim C As Range, Are As Range

Set Rg = Selection

If Rg.Columns.Count = 256 Then
For Each Are In Rg.Areas
For Each C In Are.Rows
ss = Are.Rows.Count
B = B + 1
If C.Cells.Count = 256 Then
A = A + 1
End If
Next
Next
If A <> B And A = 0 Then
Application.Dialogs(xlDialogEditDelete).Show
ElseIf A = B Then
Range(Rg.Address).Delete
ElseIf A <> B And A <> 0 Then
MsgBox "Impossible de faire le boulot demandé sur ce type de sélection."
End If
Else
For Each C In Rg.Columns
B = B + 1
If C.Cells.Count = 65536 Then
A = A + 1
End If
Next
If A <> B And A = 0 Then
Application.Dialogs(xlDialogEditDelete).Show
ElseIf A = B Then
Range(Rg.Address).Delete
ElseIf A <> B And A <> 0 Then
MsgBox "Impossible de faire le boulot demandé sur ce type de sélection"
End If
End If

'Tu peux ajouter ce que tu veux à la macro!
MsgBox "Bonjour"

End Sub
'-------------------------------------


Tout ceci peut être géré en utilisant des événements du ThisWorkbook comme:
à copier dans Le ThisWorkbook de ton projet.
'-------------------
Private Sub Workbook_Activate()
NouveauSupprimer
End Sub
'-------------------
Private Sub Workbook_Deactivate()
SupprimerNormal
End Sub
'-------------------

Salutations!





"Yattabi" a écrit dans le message de
news:
Bonjour,

Je voudrais écrire du code qui s'exécutera à l'interception des évènements
d'ajout et/ou de suppression des lignes et/ou de colonnes par un utilisateur.
Existe-t-il un tel gestionnaire d'événement dans Microsoft Excel.

Merci pour toute suggestion.