Macro insertion ligne

fif2208

XLDnaute Junior
Bonjour à tous,

J'ai un petit tableau et j'essaye de créer une macro qui insérait une nouvelle ligne à la suite de la dernière en copiant la ligne 5 mais uniquement les formules et le format des colonnes A et B mais sans la valeur de la colonne C.

J'ai essayé avec l'éditeur de macro mais cela ne fonctionne pas vraiment alors je demande votre aide.

Je vous remercie.
 

Pièces jointes

  • essai1.xls
    14 KB · Affichages: 128
  • essai1.xls
    14 KB · Affichages: 134
  • essai1.xls
    14 KB · Affichages: 135

Dranreb

XLDnaute Barbatruc
Re : Macro insertion ligne

Bonjour.
Je recommanderais de changer les formules: en A2:
Code:
=LIGNE()-3
en B2:
Code:
=B$4+LIGNE()-4
Puis propager jusqu'à la ligne 17
Faire une copie de la dernière ligne, l'insérer devant elle même, puis d'effacer la C18 (18 étant la nouvelle dernière ligne)

À +
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro insertion ligne

Bonjour à tous,

avec ce code:
Code:
Sub Macro1()
Application.ScreenUpdating = False
derligne = Range("A65535").End(xlUp).Row
    Rows(derligne).Select
    Selection.Copy
    Range("A" & derligne + 1).Select
    ActiveSheet.Paste
    Cells(derligne + 1, 3).ClearContents
    Application.CutCopyMode = False
    Cells(derligne + 1, 3).Select
Application.ScreenUpdating = True
End Sub
à+
Philippe
 

Papou-net

XLDnaute Barbatruc
Re : Macro insertion ligne

Bonjour fif2208, Dranreb,

Comme demandé, voici un exemple de macro, à insérer dans un module standard :

Code:
Sub Copie()
Dim Lg As Long
    Lg = Range("A65536").End(xlUp).Row + 1
    Range("A5:C5").Copy Destination:=Range("A" & Lg & ":C" & Lg)
    Range("C" & Lg).ClearContents
End Sub

Espérant avoir répondu.

Cordialement.

Edit : bonjour Philippe.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Macro insertion ligne

L'avantage de l'insertion devant elle même de la dernière ligne c'est que si une formule, une zone d'impression ou un nom se réfère à la dernière ligne, il se réfèrera automatiquement après l'opération à la NOUVELLE dernière ligne.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim L As Long
If Target.Rows.Count <> 1 Then Exit Sub
L = Me.[A65536].End(xlUp).Row
If Target.Row = L + 1 Then
   Me.Rows(L).Copy: Me.Rows(L).Insert
   L = L + 1
   Me.Cells(L, 3).ClearContents
   Me.Cells(L, 3).Select
   End If
End Sub
À +
 
Dernière édition:

fif2208

XLDnaute Junior
Re : Macro insertion ligne

Merci à vous quatre pour vos réponses rapides.

J'ai choisi la macro Papou-net car c'est la plus simple pour moi.

Mais, j'ai juste un petit souci. En fait mon tableau a 7 colonnes (donc jusqu'à G), que dois-je modifier dans la macro de Papou-net pour ajuster la macro à mon tableau ?

La macro de Dranreb me conviendrait parfaitement également mais quand je copie le code, je ne la retrouve pas en exécution. Faut-il que je rajoute un titre à la macro ou quelque chose d'autre pour que ça fonctionne et comment faire pour ajuster jusqu'à la colonne G?

Je vous remercie.
 

Papou-net

XLDnaute Barbatruc
Re : Macro insertion ligne

Re fif2208,

Tu peux modifier la macro comme suit :

Code:
Sub Copie()
Dim Lg As Long
    Lg = Range("A65536").End(xlUp).Row + 1
    Range("A5:G5").Copy Destination:=Range("A" & Lg & ":G" & Lg)
    Range("C" & Lg & ":G" & Lg).ClearContents
End Sub

Si tu dois modifier les cellules à effacer, tu changes la plage

Code:
Range("C" & Lg & ":G" & Lg).ClearContents
par celle qui convient.

Quand à la macro de Dranreb, c'est une macro événementielle :

Tu double-cliques sur le nom de ta feuille dans la fenêtre Projet de VBA, puis tu saisis sa macro dans la fenêtre de code. Mais dans cette solution, j'attire ton attention sur le fait qu'à chaque fois que tu cliqueras dans la première ligne vide, ça aura pour effet de rajouter une ligne.

Espérant avoir répondu.

Cordialement.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 882
Membres
103 981
dernier inscrit
vinsalcatraz