XL 2013 Mise en forme avec macro copier ligne

  • Initiateur de la discussion Initiateur de la discussion EveDesLys
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

EveDesLys

XLDnaute Nouveau
Bonjour à tous,

J'ai une macro pour copier des lignes le nombre de fois indiqué dans une case, mais il ne conserve pas la mise en forme (la couleur des lignes ne reste pas sur les bonnes lignes). Est-ce que vous pouvez m'aider à régler ce problème SVP? Voici le fichier contenant la macro.

Merci d'avance!
 

Pièces jointes

Solution
Bonjour EveDesLys, sylvanu, le forum,

Il faut insérer les lignes sous la ligne courante (i) :
VB:
Sub CopierLignes2()
Dim i&, n&
Application.ScreenUpdating = False
With Sheets("Hebdo")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A1].CurrentRegion
        For i = .Rows.Count To 2 Step -1
            n = .Cells(i, 9) - 1
            If n > 0 Then
                .Rows(i + 1).Resize(n).Insert xlDown 'insère les lignes en copiant les formats
                .Rows(i + 1).Resize(n) = .Rows(i).Value 'copie les valeurs
            End If
        Next
    End With
End With
End Sub
A+
Bonjour EveDesLys,
Un essai en PJ.
Pour le copier coller, j'ai fait simplement :
VB:
    For i = dl To 2 Step -1 ' De la dernière ligne jusqu'à la deuxième ligne (on ne prend pas en compte la ligne de titres
      If .Cells(i, 9) > 1 Then ' Si la valeur en colonne 9 (I) est supérieure à 1
        .Rows(i).Copy
        n = .Cells(i, 9) - 1 ' Calcule le nombre de lignes à ajouter
        .Rows(i).Copy           ' Copie les cellules
        .Rows(i).Resize(n).Insert Shift:=xlDown ' Insère le nombre de lignes necessaires et colle par la même occasion
      End If
    Next i
Il copie colle valeurs et format.
Mais n'ayant pas approfondi votre code, je ne sais pas si cela fait exactement ce que vous voulez. 🙂
 

Pièces jointes

Bonjour,

Merci pour ta réponse. J'ai essayé la macro dans mon fichier original, mais ça pas fonctionné. Ça n'insère pas de nouvelles lignes et ne copie pas tout. Aussi, il y a des nombres dans une colonne où il ne devrait pas y en avoir dans ton fichier. Est-ce qu'il y aurait une autre façon de faire?

Merci beaucoup.
 
Avec ma PJ d'après ce que j'avais compris ça donne ça :

20220611_235149.gif
 
Bonjour EveDesLys, sylvanu, le forum,

Il faut insérer les lignes sous la ligne courante (i) :
VB:
Sub CopierLignes2()
Dim i&, n&
Application.ScreenUpdating = False
With Sheets("Hebdo")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A1].CurrentRegion
        For i = .Rows.Count To 2 Step -1
            n = .Cells(i, 9) - 1
            If n > 0 Then
                .Rows(i + 1).Resize(n).Insert xlDown 'insère les lignes en copiant les formats
                .Rows(i + 1).Resize(n) = .Rows(i).Value 'copie les valeurs
            End If
        Next
    End With
End With
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
42
Réponses
3
Affichages
232
Retour