Bonjour à tous,
Je dois faire une macro pour mettre en forme un fichier.
Je dois:
-supprimer les 20 premières lignes (ok)
-supprimer les lignes après le total général
-défusionner les cellules (ok)
-Recopier le nom du vendeur sur chaque ligne jusqu'à ce que le nom d'un autre vendeur apparaisse (ok)
-Dans la colonne total général, je dois copier le pourcentage et le coller dans la colonne suivante sur la même ligne que le total.
-Supprimer toutes les lignes qui correspondent aux pourcentages
Voilà mon code qui fonctionne mais qui est très lent.
Je vous joins un exemple de fichier. Le nombre de lignes entre les commerciaux n'est pas constant.
Avez-vous des idées pour l'améliorer et faire les deux derniers points?
Merci à vous
Je dois faire une macro pour mettre en forme un fichier.
Je dois:
-supprimer les 20 premières lignes (ok)
-supprimer les lignes après le total général
-défusionner les cellules (ok)
-Recopier le nom du vendeur sur chaque ligne jusqu'à ce que le nom d'un autre vendeur apparaisse (ok)
-Dans la colonne total général, je dois copier le pourcentage et le coller dans la colonne suivante sur la même ligne que le total.
-Supprimer toutes les lignes qui correspondent aux pourcentages
Voilà mon code qui fonctionne mais qui est très lent.
Code:
Sub Mise_en_forme_FID()
'
' Mise_en_forme_FID Macro
Application.ScreenUpdating = False
Dim i As Integer
Dim j As Integer
Dim ligneactive As Long
Dim derlig As Long
Dim comm As String
derlig = Range("A65536").End(xlUp).Row
For i = 20 To 1 Step -1
Rows(i).EntireRow.Delete
Next i
Cells.Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A4").Select
While ActiveCell.Value = ""
ligneactive = ActiveCell.Row
Cells(ligneactive, 1).Value = Cells(3, 1).Value
ActiveCell.Offset(1, 0).Activate
Wend
ligneactive = ActiveCell.Row
For j = ligneactive To derlig
If Cells(j, 1).Value <> Cells(j - 1, 1) Then
Cells(j + 1, 1).Select
While ActiveCell.Value = ""
comm = ActiveCell.Row
Cells(comm, 1).Value = Cells(j, 1).Value
ActiveCell.Offset(1, 0).Activate
Wend
End If
Next j
End Sub
Je vous joins un exemple de fichier. Le nombre de lignes entre les commerciaux n'est pas constant.
Avez-vous des idées pour l'améliorer et faire les deux derniers points?
Merci à vous