OVH Cloud OVH Cloud

Dernière ligne vierge (suite)

4 réponses
Avatar
michel-hirard
Re-bonjour à tous,

Merci à J.P Sabatier et Patrick,
Afin de mieux me faire comprendre, je joins un petit fichier.
Je souhaiterais que, lorsque je saisis une donnée en dernière ligne 9 par
exemple, une procédure
événementielle m'ouvre une ligne 10 vierge (en recopiant les formules).
La solution de J.P n'est pas événementielle et doit être activée à chaque
saisie:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A3").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A3").Select
End Sub

Merci,

4 réponses

Avatar
sabatier
désolé, michel, mais mes pauvres connaissances ne me permettent pas de
te dire comment faire pour rendre évenemtielle la proc que je t'ai
proposée ; mon sentiment est que si tu saisis à la mimine plusieurs
données sur une ligne quelconque, il n'est pas extravagant de créer un
bouton quelque part que tu cliqueras pour exécuter la proc en
question...pour ma part, j'ai dans ma BO en haut de ma feuille un bouton
qui exécute une proc du nom de NouvelleLigneEnDessus et quel que soit le
classeur dans lequel je me trouve, je le clique allègrement à tel point
qu'on commence à y voir des traces d'usure, un peu comme dans la pierre
du seuil de la porte des lions de mycènes où passa tant de fois le char
d'Agamemnon avant que Clytemnestre ne le trucide...
jps

michel-hirard a écrit:
Re-bonjour à tous,

Merci à J.P Sabatier et Patrick,
Afin de mieux me faire comprendre, je joins un petit fichier.
Je souhaiterais que, lorsque je saisis une donnée en dernière ligne 9 par
exemple, une procédure
événementielle m'ouvre une ligne 10 vierge (en recopiant les formules).
La solution de J.P n'est pas événementielle et doit être activée à chaque
saisie:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A3").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A3").Select
End Sub

Merci,





Avatar
FxM
Bonsoir,

Ami Jean-Paul, tu pourrais utiliser le worksheet_calculate pour
vérifier si la ligne A contient une donnée de plus (et un seule) que
les autres. Si c'est le cas, copie bla-bla. Le problème étant de ne
pas 'looper' les calculs :o)

@+
FxM



sabatier wrote:
désolé, michel, mais mes pauvres connaissances ne me permettent pas de
te dire comment faire pour rendre évenemtielle la proc que je t'ai
proposée ; mon sentiment est que si tu saisis à la mimine plusieurs
données sur une ligne quelconque, il n'est pas extravagant de créer un
bouton quelque part que tu cliqueras pour exécuter la proc en
question...pour ma part, j'ai dans ma BO en haut de ma feuille un bouton
qui exécute une proc du nom de NouvelleLigneEnDessus et quel que soit le
classeur dans lequel je me trouve, je le clique allègrement à tel point
qu'on commence à y voir des traces d'usure, un peu comme dans la pierre
du seuil de la porte des lions de mycènes où passa tant de fois le char
d'Agamemnon avant que Clytemnestre ne le trucide...
jps

michel-hirard a écrit:

Re-bonjour à tous,

Merci à J.P Sabatier et Patrick,
Afin de mieux me faire comprendre, je joins un petit fichier.
Je souhaiterais que, lorsque je saisis une donnée en dernière ligne 9 par
exemple, une procédure
événementielle m'ouvre une ligne 10 vierge (en recopiant les formules).
La solution de J.P n'est pas événementielle et doit être activée à chaque
saisie:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A3").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A3").Select
End Sub

Merci,








Avatar
sabatier
merci FxM pour ce conseil mais je crois comprendre que la saisie dans la
ligne concernera plusieurs cellules...
jps

FxM a écrit:
Bonsoir,

Ami Jean-Paul, tu pourrais utiliser le worksheet_calculate pour vérifier
si la ligne A contient une donnée de plus (et un seule) que les autres.
Si c'est le cas, copie bla-bla. Le problème étant de ne pas 'looper' les
calculs :o)

@+
FxM



sabatier wrote:

désolé, michel, mais mes pauvres connaissances ne me permettent pas de
te dire comment faire pour rendre évenemtielle la proc que je t'ai
proposée ; mon sentiment est que si tu saisis à la mimine plusieurs
données sur une ligne quelconque, il n'est pas extravagant de créer un
bouton quelque part que tu cliqueras pour exécuter la proc en
question...pour ma part, j'ai dans ma BO en haut de ma feuille un
bouton qui exécute une proc du nom de NouvelleLigneEnDessus et quel
que soit le classeur dans lequel je me trouve, je le clique
allègrement à tel point qu'on commence à y voir des traces d'usure, un
peu comme dans la pierre du seuil de la porte des lions de mycènes où
passa tant de fois le char d'Agamemnon avant que Clytemnestre ne le
trucide...
jps

michel-hirard a écrit:

Re-bonjour à tous,

Merci à J.P Sabatier et Patrick,
Afin de mieux me faire comprendre, je joins un petit fichier.
Je souhaiterais que, lorsque je saisis une donnée en dernière ligne 9
par
exemple, une procédure
événementielle m'ouvre une ligne 10 vierge (en recopiant les formules).
La solution de J.P n'est pas événementielle et doit être activée à
chaque
saisie:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A3").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A3").Select
End Sub

Merci,










Avatar
FxM
Bonsoir Jean-Paul,

Si je reprend la question originale :
Je souhaiterais que, lorsque je saisis une donnée en dernière ligne
9 par exemple, une procédure événementielle m'ouvre une ligne 10 vierge

(en recopiant les formules).

Lorsque l'on saisit UNE donnée, une colonne est plus longue que les
autres de 1 ligne. A cette seule condition, la copie peut s'effectuer.
Une fois la copie faite, peu importe le nombre de données remplies.
Au-delà, ça fait appel à une validation matricielle, etc..
Enfin, c'est comme cela que je le comprends.

@+
FxM





sabatier wrote:

merci FxM pour ce conseil mais je crois comprendre que la saisie dans la
ligne concernera plusieurs cellules...
jps

FxM a écrit:

Bonsoir,

Ami Jean-Paul, tu pourrais utiliser le worksheet_calculate pour
vérifier si la ligne A contient une donnée de plus (et un seule) que
les autres. Si c'est le cas, copie bla-bla. Le problème étant de ne
pas 'looper' les calculs :o)

@+
FxM



sabatier wrote:

désolé, michel, mais mes pauvres connaissances ne me permettent pas
de te dire comment faire pour rendre évenemtielle la proc que je t'ai
proposée ; mon sentiment est que si tu saisis à la mimine plusieurs
données sur une ligne quelconque, il n'est pas extravagant de créer
un bouton quelque part que tu cliqueras pour exécuter la proc en
question...pour ma part, j'ai dans ma BO en haut de ma feuille un
bouton qui exécute une proc du nom de NouvelleLigneEnDessus et quel
que soit le classeur dans lequel je me trouve, je le clique
allègrement à tel point qu'on commence à y voir des traces d'usure,
un peu comme dans la pierre du seuil de la porte des lions de mycènes
où passa tant de fois le char d'Agamemnon avant que Clytemnestre ne
le trucide...
jps

michel-hirard a écrit:

Re-bonjour à tous,

Merci à J.P Sabatier et Patrick,
Afin de mieux me faire comprendre, je joins un petit fichier.
Je souhaiterais que, lorsque je saisis une donnée en dernière ligne
9 par
exemple, une procédure
événementielle m'ouvre une ligne 10 vierge (en recopiant les formules).
La solution de J.P n'est pas événementielle et doit être activée à
chaque
saisie:

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Integer
Dim ZtDerCol As Integer
Dim i
ActiveCell.Range("A3").EntireRow.Insert
ZtNumLig = ActiveCell.Row
ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
Application.ScreenUpdating = False
For i = 1 To ZtDerCol
If Not Cells(ZtNumLig + 1, i).HasFormula Then
Cells(ZtNumLig + 1, i).ClearContents
End If
Next i
ActiveCell.Range("A3").Select
End Sub

Merci,