Restreindre Insertion ligne sur Une Plage

Bonjour!

Private Sub CommandButton1_Click()
If MsgBox("Voulez-vous réellement insérer une ligne ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then
    With ActiveCell
      .EntireRow.Insert xlShiftDown  'Insert une ligne au dessus
      .EntireRow.Copy  ' Copie la ligne active
      With .Offset(-1).EntireRow  'Passe les formats et formules à la ligne insérée
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteFormulas
      End With
      Application.CutCopyMode = False
    End With
  End If
End Sub

Le code ci dessus me permet d’insérer une ligne avec recopie de format et formules, ce que je voudrais est que l'insertion ne se fait qu'entre la ligne 9 et 323.

Dans l'attente d'une aide, je vous remercie infiniment.

Cordialement

Bonsoir à tous!

J'ai pas trouver l'idée, quelqu'un l'aurais peut être ?

Merci à tous.

Bonjour Hosni,

A tester :

Private Sub CommandButton1_Click()

    With ActiveCell

    If ActiveCell.Row > 8 And ActiveCell.Row < 324 Then

    If MsgBox("Voulez-vous réellement insérer une ligne ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then

      .EntireRow.Insert xlShiftDown  'Insert une ligne au dessus
      .EntireRow.Copy  ' Copie la ligne active

      With .Offset(-1).EntireRow  'Passe les formats et formules à la ligne insérée
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteFormulas
      End With

      Application.CutCopyMode = False
      End If

      Else
      MsgBox ("Vous ne pouvez pas insérer de lignes ici")
      End If

    End With

End Sub

Cordialement,

Bonjour xorsankukai !

Merci pour votre réponse, la condition fonctionne, mais j'ai une erreur que je n'arrive pas à comprendre, tout semble juste pourtant.

Après confirmation "La méthode pastespecial de la classe range a echoué

sans titre

Merci

Bonjour Hosni,

Désolé, n'étant pas un pro du vba, je ne suis pas en mesure de t'aider,

Je n'ai aucune erreur de mon côté....

8test-hosni.xlsm (30.69 Ko)

Bon courage,

Re,

As-tu essayé la mise en forme sous tableau ? A chaque ajout de ligne, la mise en forme et la formule est recopiée automatiquement.

Private Sub CommandButton1_Click()

With ActiveCell

    If ActiveCell.Row > 8 And ActiveCell.Row < 324 Then

    If MsgBox("Voulez-vous réellement insérer une ligne ?", vbQuestion + vbYesNo, "QUESTION ...") = vbYes Then

      .EntireRow.Insert xlShiftDown  'Insert une ligne au dessus
      .EntireRow.Copy .Offset(-1).EntireRow ' Copie la ligne active

     ' With .Offset(-1).EntireRow  'Passe les formats et formules à la ligne insérée
     '   .PasteSpecial xlPasteFormats
     '   .PasteSpecial xlPasteFormulas
      'End With

      Application.CutCopyMode = False
      End If

      Else
      MsgBox ("Vous ne pouvez pas insérer de lignes ici")
      End If

    End With

End Sub
4test-hosni-2.xlsm (30.18 Ko)

Bonjour xorsankukai:

Merci infiniment pour votre aide.

A plus.

Bonjour,

Une autre proposition !...

Cdlt.

Public Sub InsertRowInTable()
Dim lo As ListObject
Dim lRow As Long
    With ActiveSheet
        If ActiveCell.ListObject Is Nothing Then
            MsgBox "Veuillez sélectionner une cellule dans le tableau !...", 64, "Insertion ligne"
            Exit Sub
        Else
            Set lo = .ListObjects(1)
            If MsgBox("Voulez-vous réellement insérer une ligne ?", 36, "QUESTION ...") = vbYes Then
                lRow = ActiveCell.Row - lo.HeaderRowRange.Row + 1
                If lRow > 8 And lRow < 324 Then
                    .ListObjects(1).ListRows.Add (lRow)
                Else
                    MsgBox "Vous ne pouvez pas insérer de lignes ici !...", 64, "Insertion ligne"
                    Exit Sub
                End If
            End If
        End If
    End With
End Sub

Bonsoir Jean-Eric!

Merci à vous pour la solution; elle est parfaite.

Cordialement.

Rechercher des sujets similaires à "restreindre insertion ligne plage"