Macro insertion ligne

Bonjour,

je sèche lamentablement sur le problème suivant :

j'ai une macro ( la voici)

Sub NouvelleLigneEnDessous()
 ' Insère une ligne sous la ligne qui contient la cellule active
 ' et y recopie les formules qu'elle contient
 Dim ZtNumLig As Integer
 Dim ZtDerCol As Integer
 Dim i
  ActiveCell.Range("A2").EntireRow.Insert
  ZtNumLig = ActiveCell.Row
  ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
  Range(Cells(ZtNumLig, 1), Cells(ZtNumLig, ZtDerCol)).Copy _
    Range(Cells(ZtNumLig + 1, 1), Cells(ZtNumLig + 1, ZtDerCol))
  Application.ScreenUpdating = False
  For i = 1 To ZtDerCol
    If Not Cells(ZtNumLig + 1, i).HasFormula Then
      Cells(ZtNumLig + 1, i).ClearContents
    End If
  Next i
  ActiveCell.Range("A2").Select
 End Sub

elle fonctionne très bien sur une feuille mais je n'arrive pas à la faire fonctionner sur toutes les feuilles en même temps ou bien encore mieux sur les feuilles sélectionnées

je ne sais pas si cela provient de la macro ou bien de son emplacement

merci d'avance

AUBA

Bonjour,

Concernant l'emplacement, as-tu bien placé ta macro dans un module et non dans le code d'une feuille ? Si le code est dans un module, il devrait pouvoir s'appliquer sur la feuille depuis laquelle tu appelles la macro.

Ensuite, tel quel, ton code ne pourra pas faire toutes tes feuilles en une fois, il faut soit lui ajouter une boucle pour qu'il balai chaque feuille une par une, soit lui assignée la liste des feuilles à balayer en fonction de ta selection

(d'ailleurs comment comptes-tu faire cette selection le cas échéant ? saisie des noms de feuilles dans une plage de cellule ou tu as une liste déjà "pré-définie" des feuilles à traiter ? )

Cordialement.

Bonjour Zirak,

d'abord un grand merci pour ta réponse rapide

ma macro est mise dans un module et elle ne fonctionne que sur le feuille d'où j'appelle la macro ( comme tu me le confirmes )

pour la faire fonctionner sur plusieurs feuilles , je comptais sélectionner les feuilles avec la souris et CTRL

quand a ajouter une boucle je ne crois pas être capable de le faire moi-même

cordialement

AUBA

Bonjour,

Personnellement, mon niveau de vba ne me permet pas de gérer une telle sélection, je ne vois pas trop comment remplir un éventuel tableau avec le nom de tous les onglets sélectionnés par Ctrl + clic.

Tout ce que je peux proposer c'est éventuellement une boucle qui balaie toutes les feuilles (ou une liste prédéfinies) ou à la limite qui balaie les feuilles saisies dans une plage mais je ne pourrais pas faire mieux, j'ai essayé de bidouiller un peu sur les évenements sur appuie/relachement de bouton et autres mais rien de bien concluant à mon goût, je ne maitrise pas tout à fait la bonne syntaxe..

Bonjour

Pas sur que cela soit le plus simple (mais ça a l'air de fonctionner)

Tu sélectionnes tes feuilles et on boucle dessus

Sub NouvelleLigneEnDessous()
' Insère une ligne sous la ligne qui contient la cellule active
' et y recopie les formules qu'elle contient
Dim ZtNumLig As Long
Dim ZtDerCol As Integer

  ZtNumLig = ActiveCell.Row

  Application.ScreenUpdating = False
  For Each ws In Windows(1).SelectedSheets
    With ws
      .Rows(ZtNumLig + 1).Insert
      ZtDerCol = .Rows(ZtNumLig).SpecialCells(xlCellTypeLastCell).Column
      .Range(.Cells(ZtNumLig, 1), .Cells(ZtNumLig, ZtDerCol)).Copy .Range("A" & ZtNumLig + 1)
      On Error Resume Next
      .Range("A" & ZtNumLig + 1).Resize(, ZtDerCol).SpecialCells(xlCellTypeConstants, 23).ClearContents
      On Error GoTo 0
    End With
   Next ws
  ActiveCell.Range("A2").Select
 End Sub

bonjour Banzai64,

je viens de tester, c'est exactement ce que je cherchais , un grand merci

merci aussi à zirak pour son aide et ainsi qu'à tous ceux qui ont bien voulu prêter attention à mon problème

bon week end à tous

AUBA

Rechercher des sujets similaires à "macro insertion ligne"