Microsoft 365 Macro Excel : supprimer des lignes en fonction de plusieurs critères

benoitoleron

XLDnaute Nouveau
Bonjour à tous,

J'ai fait une première demande sur un fil déjà résolu car je pensais à tort que ma demande était similaire, et que je pourrai adapter.

Staple1600 à donc déjà répondu comme un chef avec les info qu'il avait.

Cependant le problème n'était pas complet donc logiquement ça ne fonctionne pas.

Je suis débutant donc ma macro ne doit pas être optimisé mais cela fonctionne et ça me réjouis (oui j'ai presque fait une danse de la joie :D) :

Je dois réaliser une macro pour mettre en forme des données issues d'un classeur crée par une extraction SAP.
Je vous joint les deux fichiers.
Le fichier 2020_03_19 Macro Tri DATA comporte une page sommaire avec les action déjà réalisés par la macro et ce qu'il reste à faire.

L'aide dont j'ai besoin c'est dans la suppression des lignes en fonction des certains critères, je ne maitrise pas assez VBA pour réaliser ces actions.
J'essaye d'apprendre mais moi pas comprendre vite VBA :D

Je sollicite donc ici votre aide, dont je vous remercie beaucoup.

PS : voici le code que Staple1600 à déjà réalisé qui fonctionne mais qui part ma faute n'est pas adapté à mon besoin (encore merci Staple1600):

VB:
Sub KeepOnly_CSTA()
Dim Plg As Range, pf As Range
Set Plg = Cells(1).Resize(Cells(Rows.Count, "J").End(3).Row, 13)
Plg.AutoFilter 10, "<>CSTA", xlAnd: Set pf = Range("_FilterDataBase")
Application.ScreenUpdating = False
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12).EntireRow.Delete: Plg.AutoFilter
End Sub
 
Dernière édition:
Solution
Bonjour le fil, Beno17000

•>Beno17000
(Suis toujours confiné, donc avec du temps libre ;)
Essaie cette version "améliorée"
VB:
Sub exemple_b()
Dim T, Plg As Range, A_COPIER As Range, Choix_Fic, WBK As Workbook, f As Worksheet
Dim pf As Range, Plg2 As Range, fD As Worksheet
'On efface les données précédentes
Set fD = Sheets("DATA")
T = Array("FIFO", "DEVIS", "DEVIS ACCEPTE"): fD.Range("A:AB").Clear
Set Plg = Worksheets("FIFO").Range("A:J"): Plg.Clear: Sheets(T).FillAcrossSheets Plg
With Application
    .ScreenUpdating = False
    'Choix du fichier Source
    Choix_Fic = .GetOpenFilename(Title:="Choisir le classeur Source", FileFilter:="Classeur XL (*.xls*),*xls*")
        If Choix_Fic <> False Then
            Set WBK =...

benoitoleron

XLDnaute Nouveau
Merci pour tes encouragements.

J'ai oublié les fichier que je viens de faire.

Mais là j'ai cherché pour les caractère et je ne vois pas comment faire.
Et le plus dur c'est avec le caractère *
 

Pièces jointes

  • 2020_04_02 Macro Tri DATA.xlsm
    480.8 KB · Affichages: 9
  • Feuille de calcul dans Basis (1).xlsx
    274.2 KB · Affichages: 5

benoitoleron

XLDnaute Nouveau
Bonjour à tous,

Alors j'ai fini ma macro pour obtenir le résultat obtenu.
Merci à Staple1600 sans qui je n'aurai pas fini aussi vite.

Bon je pense que ceux qui prendront le temps de regarder ce que j'ai fait vont certainement s'arracher les cheveux.
Mais je débute et je tatonne sur beaucoup d'éléments. J'ai beaucoup de mal et même à certains moment j'ai du faire d'une autre manière que la piste donnée par Staple1600 qui maitrise le sujet.

J'ai fini et je suis plutôt satisfait, j'aimerai l'améliorer mais je dois apprendre plus les fondamentaux des macros...

Je vous livre ma dernière version avec le fichier DATA d'origine si cela peut servir à certains d'entre vous pour savoir ce qu'il faut faire ou pas :D

J'ai mis beaucoup de commentaires pour m'y retrouver moi-même et pour les débutants qui irai piocher des éléments...

N'hésitez pas si besoin.
Et encore merci à Staple1600
 

Pièces jointes

  • 2020_04_07 Macro Tri DATA.xlsm
    86.5 KB · Affichages: 5
  • Feuille de calcul dans Basis (1).xlsx
    274.2 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
314 745
Messages
2 112 401
Membres
111 535
dernier inscrit
MJS1