Déclencher macro par événement : insertion ligne

lyna

XLDnaute Junior
Bonjour à tout le forum;
Merci pour toute personne pouvant m'aider pour sésoudre mon pb :
Comment peut-on déclencher une macro après insertion d'une ligne ?
Plus précisément, comment peut-t-on intercepter l'évenement insertion de ligne?
Merci d'avance.
 

lyna

XLDnaute Junior
Re : Déclencher macro par événement : insertion ligne

bonjour dixit
Le but est de copier un certain nombre de formule par macro à chaque insertion de ligne .
je sais que je peux faire ça par un bouton, mais je ne veux pas que les utilisateurs insère des lignes à partir d'uhn bouton, car ils ont le reflexe d'utiliser les fonctionalité basique d'excel : insertion ligne et du coup les formule que je souhaite copier elles seront pas copier.
 

Lord Nelson

XLDnaute Occasionnel
Re : Déclencher macro par événement : insertion ligne

Salut,

Tu peux détecter l'insertion de ligne avec l'évènement Worksheet_Change.
Par exemple :

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Row
End Sub

Là, Target.Row donne le numéro de la ligne insérée. Tu peux donc te baser sur lui pour définir les cellules que tu veux dans cette ligne.

A+
Horatio
 

dixit

XLDnaute Impliqué
Re : Déclencher macro par événement : insertion ligne

re
sans connaître le contexte, c'est difficile de donner un avis mais je vais le faire :
pourquoi insérer une ligne "à la main" alors qu'on peut insérer cela dans la macro ?
en plus, si les utilisateurs peuvent insérer une ligne c'est qu'ils travaillent sur une feuille non protégée ou qu'ils peuvent déprotéger : à proscrire absolument à mon avis : c'est le meilleur moyen de se retrouver avec des formules disparues ou modifiées par erreur.
donc je verrais bien un bouton qui insère la ligne là où est la cellule active (ou sur autre critère) et qui copie les formules dans la foulée.
 

Pier3d

XLDnaute Nouveau
Re : Déclencher macro par événement : insertion ligne

Salut,

Tu peux détecter l'insertion de ligne avec l'évènement Worksheet_Change.
Par exemple :

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Row
End Sub

Là, Target.Row donne le numéro de la ligne insérée. Tu peux donc te baser sur lui pour définir les cellules que tu veux dans cette ligne.

A+
Horatio

Bonjour monsieur Horatio,

Est-ce que je réponds à un message de 2007 ? Ouf, c'est Google qui m'a amené ici parce que, en 2017, je me pose de semblables questions.

J'ai essayé votre méthode et ça marche. Ça marche pour les insertions et les suppressions (c'est ce qui m'intéresse) mais ça marche aussi pour un millier d'autres événements. Ce qui me cause problème, bien sûr.

Mon besoin serait de surveiller uniquement les insertions et suppressions de ligne afin de renuméroter une colonne.

Y a-t-il moyen d'isoler ces deux événements ?

Merci de votre attention,

Pierre Cloutier

---
 
C

Compte Supprimé 979

Guest
Bonjour Pierre,

Effectivement... ça c'est du gros déterrage de post :p

Pour isoler l'insertion ou la suppression de ligne ou colonne entière, voici ce qu'il te faut
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Rows.Count = Application.Rows.Count Then
    MsgBox "Colonne entière"
  End If
  If Target.Columns.Count = Application.Columns.Count Then
    MsgBox "Ligne entière"
  End If
End Sub

Perso, je préfère utiliser des boutons prévus à cet effet ;)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata