XL 2010 Nettoyage automatique lignes

julien.p

XLDnaute Nouveau
Bonjour a tous et joyeuses fêtes de fin d'années :)

Voila, j'explique mon sujet.
Je dois réaliser du nettoyage dans une extraction sur Excel, et j'aimerai automatiser tout cela.
Apres avoir essayé avec des macros automatiques, je n'y arrive pas, la loose.

Voila ce que je souhaite faire :

Faire un tri automatique par Niveau + impact utilisateur.
En colonne "G", supprimer tout les lignes ou il est écrit "Sans impact"
Colonne "J" (Application reliée), je ne souhaite garder que les lignes ou il est écrit ""nom" + PRODUCTION"
Colonne "I" (Remarques) , je souhaite supprimer les lignes ou il est écrit "Source : Batmain"
Supprimer la colonne "C" (Clôture)
Supprimer la colonne "K" (Serveurs reliés)
Supprimer la colonne "L" (Résolution)
Supprimer la colonne "M" (Intervenant)
Supprimer la colonne "N" (Lien ARS)
Supprimer la colonne "O" (Client)
Supprimer la colonne "Q" (Catégorisation opérationnelle)

Voila, je pense n'avoir rien oublié :)
Comment que je peux faire ?

Merci a tous si vous avez un plan pour m'aider a construire cette usine a gaz :)
 

Pièces jointes

  • 2647b552b34546c39c789285707c444b.xls
    316 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Supporter XLD
Joyeux Noël aussi Julien :)

Une piste ci-dessous. Code à placer dans le module de la feuille concernée (Sheets1):
VB:
Option Explicit

Sub nettoyer()
Const ColonnesAsupprimer = "C:C,K:K,L:L,M:M,N:N,O:O,Q:Q"
Dim i&
  Application.ScreenUpdating = False
  For i = Cells(Rows.Count, "a").End(xlUp).Row To 2 Step -1
    If Cells(i, "g") = "Sans impact" Then
      Cells(i, "g").EntireRow.Delete
    ElseIf Not Cells(i, "j") Like "*PRODUCTION" Then
      Cells(i, "j").EntireRow.Delete
    ElseIf Cells(i, "i") Like "*Source : Batmain*" Then
      Cells(i, "i").EntireRow.Delete
    End If
  Next i
  Range("a1").CurrentRegion.Sort key1:=Range("e1"), order1:=xlAscending, Header:=xlYes, _
    key2:=Range("g1"), order2:=xlAscending
  Range(ColonnesAsupprimer).Delete
End Sub


Oubli: J’avais oublié de trier. Le code a donc été modifié pour le faire, le tri.
nota: bon Noël @JHA ;)
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour julien.p, Bruno, mapomme,

A placer dans le code de la feuille "Résultat" (clic droit sur l'onglet et Visualiser le code) :
Code:
Option Compare Text 'la casse est ignorée

Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, n&, j%
tablo = Feuil1.UsedRange.Resize(, 17) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To 10)
For i = 2 To UBound(tablo)
    If Not tablo(i, 7) Like "*Sans*impact*" And Not tablo(i, 9) Like "*Source*Batmain*" And tablo(i, 10) Like "*PRODUCTION*" Then
        n = n + 1
        resu(n, 1) = tablo(i, 1)
        resu(n, 2) = tablo(i, 2)
        For j = 3 To 9
            resu(n, j) = tablo(i, j + 1)
        Next
        resu(n, 10) = tablo(i, 16)
    End If
Next
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] 'à adapter
    If n Then
        .Resize(n, 10) = resu
        .Resize(n, 10).Sort .Cells(1, 4), xlAscending, .Cells(1, 6), , xlAscending, Header:=xlNo
    End If
    .Offset(n).Resize(Rows.Count - .Row - n + 1, 10).Delete xlUp 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Fichier joint.

Joyeux Noël à tous.

A+
 

Pièces jointes

  • Nettoyage(1).xls
    363.5 KB · Affichages: 13

Discussions similaires

Réponses
26
Affichages
887
Réponses
5
Affichages
434

Statistiques des forums

Discussions
312 299
Messages
2 086 993
Membres
103 422
dernier inscrit
victus5