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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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,
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
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,
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,
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
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,
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,
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 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,
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,
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
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