Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Insérer une ligne en gardant les formules

rere67

XLDnaute Junior
Bonjour,

Je souhaite mettre en place une macro pour insérer une ligne dans un Tableau et en gardant les listes déroulantes et formules de la ligne et que cette ligne soit "vide" (j'ai des éléments jusqu'à la colonne K)

Voici le code que j'ai fait pour le Moment.

Sub InsererLigne()
ActiveSheet.Unprotect Password:=""
ActiveCell.Rows("1:1").EntireRow.Select
Selection.EntireRow.Insert
ActiveCell.Offset(-1, 9).Range("A1:K1").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:K3"), Type:= _
xlFillDefault
ActiveCell.Offset(1, -9).Range("A1").Select
ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Merci pour votre aide
 

job75

XLDnaute Barbatruc
Bonjour rere67, Philippe,
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.ScreenUpdating = False
Target.EntireRow.Insert
On Error Resume Next
With Target(-1).EntireRow
  .Copy .Resize(2)
  .Rows(2).SpecialCells(xlCellTypeConstants) = ""
End With
End Sub
Ce code insère une ligne entière au-dessus de la cellule où l'on fait un double-clic.

Copie-colle la ligne du dessus et efface les constantes.

Fonctionne dans toute la feuille, qu'il y ait ou non un tableau Excel.

A+
 

job75

XLDnaute Barbatruc
Bonjour rere67, Philippe, le forum,

Un code plus général et mieux adapté au tableau Excel s'il y en a un :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.ScreenUpdating = False
On Error Resume Next
With ListObjects(1).Range.Offset(1)
  If Intersect(Target(1).EntireRow, .Cells) Is Nothing Then
    Target(1).EntireRow.Insert
  Else
    Target(1).EntireRow.Insert
    ListObjects(1).Resize .Rows(0).Resize(.Rows.Count) 'redimensionnement du tableau
    Exit Sub
  End If
End With
With Target(-1, 1).EntireRow
  .Copy .Rows(2) 'copier-coller
  .Rows(2).SpecialCells(xlCellTypeConstants) = ""
End With
End Sub
Fichier joint (merci Philippe).

Bon dimanche.
 

Pièces jointes

  • Insérer une ligne(1).xlsm
    27.1 KB · Affichages: 92
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour à tous

A noter que si la plage est sous forme de tableau, toute nouvelle ligne hérite automatiquement
  • du format y compris MFC,
  • des validations
  • des formules
définies pour la ou les lignes existantes...
 

rere67

XLDnaute Junior
Bonjour tout le monde,

Merci pour vos différents retours et merci job75 pour la macro elle fonctionne du tonnerre !

Effectivement je savais que la facilité était de créer un Tableau Excel qui fait suivre automatiquement les formules mais la configuration de ma base ne me permet pas d'utiliser cette fonctionnalité.

encore merci à vous

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…