Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer la
commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc comme
l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
ChrisV
"J@@"ton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <J'ai un tableau Excel dans lequel je compte insérer régulièrement des
nouvelles lignes. Est-il possible que les formules contenues dans les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer la
commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc comme
l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
ChrisV
"J@@"
ton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <
Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"
Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <
J'ai un tableau Excel dans lequel je compte insérer régulièrement des
nouvelles lignes. Est-il possible que les formules contenues dans les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer la
commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc comme
l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
ChrisV
"J@@"ton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <J'ai un tableau Excel dans lequel je compte insérer régulièrement des
nouvelles lignes. Est-il possible que les formules contenues dans les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
...ne devrait-on pas plutôt écrire :
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer la
commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc comme
l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
ChrisV
"J@@" <jipivertton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <J'ai un tableau Excel dans lequel je compte insérer régulièrement des
nouvelles lignes. Est-il possible que les formules contenues dans les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Merci d'avance
Natacha
...ne devrait-on pas plutôt écrire :
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer la
commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc comme
l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
ChrisV
"J@@" <jipivert
ton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <
Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"
Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <
J'ai un tableau Excel dans lequel je compte insérer régulièrement des
nouvelles lignes. Est-il possible que les formules contenues dans les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Merci d'avance
Natacha
...ne devrait-on pas plutôt écrire :
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer la
commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc comme
l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage de
données...
ChrisV
"J@@" <jipivertton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <J'ai un tableau Excel dans lequel je compte insérer régulièrement des
nouvelles lignes. Est-il possible que les formules contenues dans les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Merci d'avance
Natacha
En fait, les lignes que je vais insérer dans mon tableau ne sont pas à
la fin, mais un peu de partout
je veux que dans les autres colonnes de cette ligne les formules se
recopient automatiquement à partir des colonnes correspondantes de la
ligne précédente.
Merci pour ta proposition, ChrisV !
En fait, les lignes que je vais insérer dans mon tableau ne sont pas à
la fin, mais un peu de partout. Si tu veux, ça ressemble à une liste
de pièces d'une maison (de 1 à 40) (enfin, c'est peut être un peu
beaucoup pour une maison mais on s'en fout) et je rajoute manuellement
des objets dans certaines pièces. P.ex. aujourd'hui je vais rajouter
l'objet X dans la pièce 4. Donc, j'insère une ligne manuellement parmi
les lignes de la pièce 4 et je marque le nom de l'objet inséré (X). Et
je veux que dans les autres colonnes de cette ligne les formules se
recopient automatiquement à partir des colonnes correspondantes de la
ligne précédente.
J'ai essayé moi-même de faire une petite macro, un peu comme ça:
Sub Ma_macro()
'
' ' Pour recopier les formules
For i = 6 To 384 'c'est les lignes concernées du tableau actuel
If Range("Expo!G" & i) = "" Then
Range("Expo!G" & i - 1).Select
Selection.AutoFill Destination:=Range("Expo!G" & i-1: i),
Type:=xlFillDefault
i = i + 1
End If
Next
End Sub
mais ça fait juste 2 jour que j'utilise les macros, donc celle-ci ne
marche pas, erreur de syntaxe avec Autofill
En fait, les lignes que je vais insérer dans mon tableau ne sont pas à
la fin, mais un peu de partout
je veux que dans les autres colonnes de cette ligne les formules se
recopient automatiquement à partir des colonnes correspondantes de la
ligne précédente.
Merci pour ta proposition, ChrisV !
En fait, les lignes que je vais insérer dans mon tableau ne sont pas à
la fin, mais un peu de partout. Si tu veux, ça ressemble à une liste
de pièces d'une maison (de 1 à 40) (enfin, c'est peut être un peu
beaucoup pour une maison mais on s'en fout) et je rajoute manuellement
des objets dans certaines pièces. P.ex. aujourd'hui je vais rajouter
l'objet X dans la pièce 4. Donc, j'insère une ligne manuellement parmi
les lignes de la pièce 4 et je marque le nom de l'objet inséré (X). Et
je veux que dans les autres colonnes de cette ligne les formules se
recopient automatiquement à partir des colonnes correspondantes de la
ligne précédente.
J'ai essayé moi-même de faire une petite macro, un peu comme ça:
Sub Ma_macro()
'
' ' Pour recopier les formules
For i = 6 To 384 'c'est les lignes concernées du tableau actuel
If Range("Expo!G" & i) = "" Then
Range("Expo!G" & i - 1).Select
Selection.AutoFill Destination:=Range("Expo!G" & i-1: i),
Type:=xlFillDefault
i = i + 1
End If
Next
End Sub
mais ça fait juste 2 jour que j'utilise les macros, donc celle-ci ne
marche pas, erreur de syntaxe avec Autofill
En fait, les lignes que je vais insérer dans mon tableau ne sont pas à
la fin, mais un peu de partout
je veux que dans les autres colonnes de cette ligne les formules se
recopient automatiquement à partir des colonnes correspondantes de la
ligne précédente.
Merci pour ta proposition, ChrisV !
En fait, les lignes que je vais insérer dans mon tableau ne sont pas à
la fin, mais un peu de partout. Si tu veux, ça ressemble à une liste
de pièces d'une maison (de 1 à 40) (enfin, c'est peut être un peu
beaucoup pour une maison mais on s'en fout) et je rajoute manuellement
des objets dans certaines pièces. P.ex. aujourd'hui je vais rajouter
l'objet X dans la pièce 4. Donc, j'insère une ligne manuellement parmi
les lignes de la pièce 4 et je marque le nom de l'objet inséré (X). Et
je veux que dans les autres colonnes de cette ligne les formules se
recopient automatiquement à partir des colonnes correspondantes de la
ligne précédente.
J'ai essayé moi-même de faire une petite macro, un peu comme ça:
Sub Ma_macro()
'
' ' Pour recopier les formules
For i = 6 To 384 'c'est les lignes concernées du tableau actuel
If Range("Expo!G" & i) = "" Then
Range("Expo!G" & i - 1).Select
Selection.AutoFill Destination:=Range("Expo!G" & i-1: i),
Type:=xlFillDefault
i = i + 1
End If
Next
End Sub
mais ça fait juste 2 jour que j'utilise les macros, donc celle-ci ne
marche pas, erreur de syntaxe avec Autofill
Re bonjour ChrisV
Ben je viens de regarder : "option etc" est coché mais ne joue pas le rôle
auquel je pensais qui est de toujours avoir une ligne pour continuer à
saisir.
C'est pour cela que j'avais bricoler ta proc, et que je souhaitais la
glisser dans une proc événementielle :
If Range("A65536").End(xlUp) <> "" Then
zazaPlus1 'made by ChrisV bricolé par ma pomme
quand je quitte A pour aller en B continuer mes saisies (qui ont lieu
toujours en B et parfois en C, D, E, F, K, L, R et S), la proc me fabrique
une ligne de plus, en dessous, qui sera toute prête pour continuer à
travailler quand j'en aurai besoin.
Et je pensais la mettre dans TWB, car j'ai une centaine de feuilles
concernées.
@+
merci pour les lumières
J@@
"ChrisV" <...ne devrait-on pas plutôt écrire :
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer
la commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc
comme l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage
de données...
ChrisV
"J@@" <jipivertton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <J'ai un tableau Excel dans lequel je compte insérer régulièrement
des
nouvelles lignes. Est-il possible que les formules contenues dans
les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Merci d'avance
Natacha
Re bonjour ChrisV
Ben je viens de regarder : "option etc" est coché mais ne joue pas le rôle
auquel je pensais qui est de toujours avoir une ligne pour continuer à
saisir.
C'est pour cela que j'avais bricoler ta proc, et que je souhaitais la
glisser dans une proc événementielle :
If Range("A65536").End(xlUp) <> "" Then
zazaPlus1 'made by ChrisV bricolé par ma pomme
quand je quitte A pour aller en B continuer mes saisies (qui ont lieu
toujours en B et parfois en C, D, E, F, K, L, R et S), la proc me fabrique
une ligne de plus, en dessous, qui sera toute prête pour continuer à
travailler quand j'en aurai besoin.
Et je pensais la mettre dans TWB, car j'ai une centaine de feuilles
concernées.
@+
merci pour les lumières
J@@
"ChrisV" <
...ne devrait-on pas plutôt écrire :
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer
la commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc
comme l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage
de données...
ChrisV
"J@@" <jipivert
ton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <
Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"
Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <
J'ai un tableau Excel dans lequel je compte insérer régulièrement
des
nouvelles lignes. Est-il possible que les formules contenues dans
les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Merci d'avance
Natacha
Re bonjour ChrisV
Ben je viens de regarder : "option etc" est coché mais ne joue pas le rôle
auquel je pensais qui est de toujours avoir une ligne pour continuer à
saisir.
C'est pour cela que j'avais bricoler ta proc, et que je souhaitais la
glisser dans une proc événementielle :
If Range("A65536").End(xlUp) <> "" Then
zazaPlus1 'made by ChrisV bricolé par ma pomme
quand je quitte A pour aller en B continuer mes saisies (qui ont lieu
toujours en B et parfois en C, D, E, F, K, L, R et S), la proc me fabrique
une ligne de plus, en dessous, qui sera toute prête pour continuer à
travailler quand j'en aurai besoin.
Et je pensais la mettre dans TWB, car j'ai une centaine de feuilles
concernées.
@+
merci pour les lumières
J@@
"ChrisV" <...ne devrait-on pas plutôt écrire :
Je ne comprends pas bien le "plutôt"...
car lorsque tu inserts une ligne, la nouvelle ligne créée se situe-t-elle
au dessus ou au dessous de la cellule à partir de laquelle tu as lancer
la commande...? ;-)
La proc. proposée (insertion d'une ligne au dessus) se comporte donc
comme l'aurait fait Excel...
En ce qui concerne la question subsidiaire, si j'ai bien compris, nul
besoin d'une procédure événementielle, Excel sait le faire tout seul...
Outils/Options.../Modification/Etendre les formules et formats de plage
de données...
ChrisV
"J@@" <jipivertton code me semble insérer une ligne *avant* la dernière,
mais si on veut "ajouter" une ligne *après* la dernière, ne devrait-on
pas plutôt écrire :
'----------------
Sub zazaPlus1()
Dim aCr As Long
Application.ScreenUpdating = False
' ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr).Select
Rows(aCr).Copy Destination:=Rows(aCr + 1)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr + 1).Select
End Sub
'-----------------
Question subsidiaire:
si on veut que la proc se déclenche automatiquement, par exemple après
une saisie manuelle dans la cellule B de la dernière ligne contenant des
formules,
que devrait-on mettre dans ThisWorkBook??
"ChrisV" <Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
On Error Resume Next
' au cas zou
Rows(ActiveCell(2).Row).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
ChrisV
[allez hop... au dodo !]
"ChrisV" <Un peu plus rapide...
Sub zaza()
Dim aCr As Long
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
Rows(aCr - 1).Copy Destination:=Rows(aCr)
Rows(ActiveCell(3)).SpecialCells(xlCellTypeConstants, 23) _
.ClearContents
Range("A" & aCr).Select
End Sub
"ChrisV"Bonjour dimitry83,
A partir de la cellule active...
Sub zaza()
Dim aCr As Long
Dim derC As Integer
Application.ScreenUpdating = False
ActiveCell.EntireRow.Insert
aCr = ActiveCell.Row
Range("A" & aCr - 1).Select
derC = Selection.SpecialCells(xlCellTypeLastCell).Column
Rows(aCr - 1).Copy Destination:=Rows(aCr)
ActiveCell(2).Select
Do
If Not ActiveCell.HasFormula Then ActiveCell.Clear
ActiveCell.Offset(0, 1).Select
Loop While ActiveCell.Column <= derC
Range("A" & aCr).Select
End Sub
"dimitry83" <J'ai un tableau Excel dans lequel je compte insérer régulièrement
des
nouvelles lignes. Est-il possible que les formules contenues dans
les
cellules au dessus de la ligne insérée s'y recopient automatiquement
(en respectant bien sûr les adresses relatives employées dans les
formules)?
Merci d'avance
Natacha