Bonjour,
Je sollicite votre aide aujourd'hui pour une macro sur laquelle je bloque depuis qlq jours.
Voici le contexte : mon fichier de travail copie automatiquement une feuille d'un autre classeur Excel grâce à une macro. Une fois les données importées dans mon fichier, je souhaite rajouter qlq lignes de code afin de supprimer les lignes qui ne m'intéressent pas.
Ces lignes sont repérables par une colonne "statut" : le but est de supprimer toutes les lignes dont le statut est "Client". Pour ce faire, après qlq recherches sur le forum voici le code que j'ai écris :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Public Sub Test()
Dim XLSheet As Excel.Worksheet
Dim FirstCell As Excel.Range
Dim LastCell As Excel.Range
Dim CellsDel As Excel.Range
Dim i As Integer
Dim XlApp As Excel.Application
Dim XlWbk As Excel.Workbook
Set XlApp = Application.Application
Set XlWbk = XlApp.ActiveWorkbook
Set XLSheet = XlWbk.Worksheets("Feuil1")
XLSheet.Activate
Set FirstCell = XLSheet.Cells(3, 1)
Set LastCell = XLSheet.Cells(20, 5)
For i = LastCell.Row To FirstCell.Row Step -1
If Cells(i, 3).Text = "Client" Then
If CellsDel Is Nothing Then
Set CellsDel = XLSheet.Cells(i, 3)
Else
Set CellsDel = Union(CellsDel, XLSheet.Cells(i, 3))
End If
End If
Next i
CellsDel.EntireRow.Delete Shift:=xlUp
End Sub |
Ce code semble fonctionner (il bug juste lorsqu’il n’y pas de document « Client »). Mon problème est qu'il y a également dans mon fichier des lignes de titres, repérables par le statut "_t". Je souhaite supprimer les titres en-dessous desquels toutes les lignes ont un statut « Client » (sinon je me retrouve avec une succession de titres superflus). Et là je ne m’en sors plus !
Merci d’avance pour votre aide
Pour plus de clarté voici un exemple simplifié des données que je souhaite traiter avec la macro :
Intitulé Statut
titre1 _t
nom_doc Autre
nom_doc Client
nom_doc Client/Autre
titre2 _t
titre2.1 _t
nom_doc Client
nom_doc Client
titre2.2 _t
nom_doc Client/Autre
nom_doc Client
titre3 _t
titre3.1 _t
nom_doc Client
nom_doc Client
titre3.2 _t
nom_doc Client
Après traitement je voudrais obtenir ceci :
Intitulé Statut
titre1 _t
nom_doc Autre
nom_doc Client/Autre
titre2 _t
titre2.2 _t
nom_doc Client/Autre
Partager