XL 2019 Inserer une ligne

netparty

XLDnaute Occasionnel
Bonjour à tous
Je viens vers vous pour avoir votre aide
J'aimerais dans mon fichier avoir la possibilité d’insérer une ligne et de recopier les formules de la ligne supérieur et ne garder que les formules.

J'ai essayé ce code :

VB:
Sub Inserer_Ligne()
 If MsgBox("Copier la ligne n°" & Target.Row, vbYesNo) = vbYes Then
        Rows(Target.Row).Copy
        Rows(Target.Row).Insert Shift:=xlDown
        Rows(Target.Row).SpecialCells(xlCellTypeConstants, 23).ClearContents
    End If
End Sub

Mais j'ai un messages d'erreur

Merci d'avance pour votre aide
 

Pièces jointes

  • Classeur1.xlsm
    19.7 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonsoir netparty,
VB:
Sub Inserer_Ligne()
If MsgBox("Copier la ligne n°" & ActiveCell.Row & " ?", vbYesNo) = vbYes Then
    Rows(ActiveCell.Row).Copy
    Rows(ActiveCell.Row).Insert Shift:=xlDown
    Application.CutCopyMode = 0
    On Error Resume Next 'si aucune SpecialCell
    Rows(ActiveCell.Row).SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End Sub
A+
 

netparty

XLDnaute Occasionnel
Bonsoir netparty,
VB:
Sub Inserer_Ligne()
If MsgBox("Copier la ligne n°" & ActiveCell.Row & " ?", vbYesNo) = vbYes Then
    Rows(ActiveCell.Row).Copy
    Rows(ActiveCell.Row).Insert Shift:=xlDown
    Application.CutCopyMode = 0
    On Error Resume Next 'si aucune SpecialCell
    Rows(ActiveCell.Row).SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End Sub
A+
Bonjour @job75

Merci pour ton code.

Par la même occasion est-il possible d'avoir la possibilité de choisir le nombres de lignes que je voudrais ajouter

Bonne journée
 

job75

XLDnaute Barbatruc
Bonjour netparty, Cousinhub, le forum,
Par la même occasion est-il possible d'avoir la possibilité de choisir le nombres de lignes que je voudrais ajouter
Bien sur :
VB:
Sub Inserer_Ligne()
Dim n
n = Val(Application.InputBox("Nombre de lignes à insérer :"))
If n Then
    On Error Resume Next
    Application.CutCopyMode = 0
    Rows(ActiveCell.Row).Resize(n).Copy
    Rows(ActiveCell.Row).Insert
    Application.CutCopyMode = 0
    Rows(ActiveCell.Row).Resize(n).SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End Sub
A+
 
Dernière édition:

netparty

XLDnaute Occasionnel
Bonjour netparty, Cousinhub, le forum,

Bien sur :
VB:
Sub Inserer_Ligne()
Dim n
n = Val(Application.InputBox("Nombre de lignes à insérer :"))
If n Then
    On Error Resume Next
    Application.CutCopyMode = 0
    Rows(ActiveCell.Row).Resize(n).Copy
    Rows(ActiveCell.Row).Insert
    Application.CutCopyMode = 0
    Rows(ActiveCell.Row).Resize(n).SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End Sub
A+
Bonjour @job75

J'ai testé le code.
Si je choisi d’insérer une seule ligne cela fonctionne mais si je demande plusieurs lignes alors elle ne sont pas insérées à la bonne place.

Je joint mon fichier pour que tu voie ou celle-ci se sont insérées.

Merci
 

Pièces jointes

  • Classeur1.xlsm
    23.3 KB · Affichages: 4

netparty

XLDnaute Occasionnel
Colorez 3 lignes, vous verrez que l'insertion de 3 lignes se fait à la bonne place.

Bonne nuit.
Bonjour @job75

Ce qui est bizarre c'est qu'il me fait ceci :
1706869678780.png
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 234
Membres
103 162
dernier inscrit
fcfg