Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro se déclenchant lors insertion ligne

4 réponses
Avatar
gilles
bonjour à tous,
Je cherche une macro évènement qui ne se déclenche qu'à l'insertion d'une
ligne.
je ne peux pas utiliser Private Sub Worksheet_Change(ByVal Target As
Excel.Range)
Je ne sais pas si mon truc est possible
Si kekun peut m'aider la dessus, il aura droit à ma toute ma gratitude...!!!
merci
gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...

4 réponses

Avatar
ThierryP
Bonjour Gilles,

Tu peux, à l'ouverture du classeur, connaitre le nombre de lignes
utilisées par : TaVariable=UsedRange.Rows.Count
Dans ta proc worksheet_change, tu compares le nombre de lignes à
TaVariable. si différence, tu lances ta macro

bonjour à tous,
Je cherche une macro évènement qui ne se déclenche qu'à l'insertion d'une
ligne.
je ne peux pas utiliser Private Sub Worksheet_Change(ByVal Target As
Excel.Range)
Je ne sais pas si mon truc est possible
Si kekun peut m'aider la dessus, il aura droit à ma toute ma gratitude...!!!
merci
gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline

Avatar
gilles
Merci THIERRY de ton aide
OK pour ton idée sauf que:
je peux insérer plusieurs fois de suite une ligne, et à chaque fois, je
souhaite que ma macro recopie les formules de la ligne située au dessus
Sur la base de ta suggestion j'ai écrit le code ci dessous, mais , tu vas
voir tout de suite qu'il manque kekchose

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MaVariable = UsedRange.Rows.Count
If Application.Rows.Count <> MaVariable Then
Rows("48:48").Select
Selection.Copy
Rows("49:49").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Application.WindowState = xlMinimized
Application.CutCopyMode = False
End If
End Sub

si tu vois une soluce....
Merci encore
gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...



Bonjour Gilles,

Tu peux, à l'ouverture du classeur, connaitre le nombre de lignes
utilisées par : TaVariable=UsedRange.Rows.Count
Dans ta proc worksheet_change, tu compares le nombre de lignes à
TaVariable. si différence, tu lances ta macro

bonjour à tous,
Je cherche une macro évènement qui ne se déclenche qu'à l'insertion d'une
ligne.
je ne peux pas utiliser Private Sub Worksheet_Change(ByVal Target As
Excel.Range)
Je ne sais pas si mon truc est possible
Si kekun peut m'aider la dessus, il aura droit à ma toute ma gratitude...!!!
merci
gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline




Avatar
ThierryP
Re gilles,

Un peu tardif....mais ce truc fonctionne :
-il faut déclarer MaVariable dans un module standard (public MaVariable
as Integer
- Dans l'évènement WorkBook_Open, tu l'initialises :
MaVariable = Sheets("Feuil1").UsedRange.Rows.Count (Nom de la feuille à
adapter)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
If UsedRange.Rows.Count > MaVariable Then
ActiveCell.Offset(-1, 0).EntireRow.Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
' Application.WindowState = xlMinimized
Application.CutCopyMode = False
End If
MaVariable = UsedRange.Rows.Count
Application.EnableEvents = True
End Sub


Merci THIERRY de ton aide
OK pour ton idée sauf que:
je peux insérer plusieurs fois de suite une ligne, et à chaque fois, je
souhaite que ma macro recopie les formules de la ligne située au dessus
Sur la base de ta suggestion j'ai écrit le code ci dessous, mais , tu vas
voir tout de suite qu'il manque kekchose



@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline

Avatar
gilles
merci thierry,
je regarde ça et j'essaie de me mettre au diapason de tes connaissances!!
gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...



Re gilles,

Un peu tardif....mais ce truc fonctionne :
-il faut déclarer MaVariable dans un module standard (public MaVariable
as Integer
- Dans l'évènement WorkBook_Open, tu l'initialises :
MaVariable = Sheets("Feuil1").UsedRange.Rows.Count (Nom de la feuille à
adapter)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
If UsedRange.Rows.Count > MaVariable Then
ActiveCell.Offset(-1, 0).EntireRow.Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
' Application.WindowState = xlMinimized
Application.CutCopyMode = False
End If
MaVariable = UsedRange.Rows.Count
Application.EnableEvents = True
End Sub


Merci THIERRY de ton aide
OK pour ton idée sauf que:
je peux insérer plusieurs fois de suite une ligne, et à chaque fois, je
souhaite que ma macro recopie les formules de la ligne située au dessus
Sur la base de ta suggestion j'ai écrit le code ci dessous, mais , tu vas
voir tout de suite qu'il manque kekchose



@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline