Supprimer les lignes contenant un mot en particulier
Bonjour,
J'ai une liste de codification (onglet "EXTRACTION") que je dois trier en trois onglets :
1) STANDARD
L' onglet "STANDARD" doit correspondre à l'onglet "EXTRACTION" sans les lignes avec les sigles "MPCA" et "MCA".
2) MPCA
L' onglet "MPCA" doit correspondre à l'onglet "EXTRACTION" avec les lignes le sigle "MPCA".
3) MCA
L' onglet "MCA" doit correspondre à l'onglet "EXTRACTION" avec les lignes le sigle "MCA".
J'aimerais donc trouver une solution pour supprimer les lignes automatiquement selon le mot/sigle que je souhaite.
Je crois que c'est possible en VBA, Mais je débute tout juste sur ce langage.
Dans l'attente de vos réponses.
BONUS : Lorsqu'il y a une modification des codifications, je souhaiterais que je puisse changer uniquement le premier onglet ("EXTRACTION) et que cela se change sur les autres onglets de "tri".
Bonjour,
Code à mettre dans un module standard. Le code utilise le filtrage avancé pour la récup des différentes valeurs, voir les commentaires dans le code pour plus de compréhension :
Sub Test()
Dim Plage As Range
Dim ZoneCritere As Range
With Worksheets("EXTRACTION")
'paramètre la feuille
With .Range("A1")
'défusionne
.UnMerge
'insère 3 lignes
.EntireRow.Insert
.EntireRow.Insert
.EntireRow.Insert
End With
'fusionne à nouveau
.Range("A4:C5").Merge
'récup de l'entête de colonne dans les deux cellules (les deux, pour la récup des valeurs "standards)
.Range("A1:B1").Value = .Range("B12").Value
'défini les plages
Set Plage = DefPlage(Worksheets("EXTRACTION"), 12)
Set ZoneCritere = .Range("A1:C2")
'premier critère
ZoneCritere(2, 1).Value = "*MCA*"
'filtrage et copie dans la feuille correspondante
Plage.AdvancedFilter xlFilterInPlace, ZoneCritere
Plage.Cells.SpecialCells(xlCellTypeVisible).EntireRow.Copy Worksheets("MCA").Range("A1")
.ShowAllData
'Second critère
ZoneCritere(2, 1).Value = "*MPCA*"
'filtrage et copie dans la feuille correspondante
Plage.AdvancedFilter xlFilterInPlace, ZoneCritere
Plage.Cells.SpecialCells(xlCellTypeVisible).EntireRow.Copy Worksheets("MPCA").Range("A1")
.ShowAllData
'troisième critère afin de récupérer les autres valeurs (standard)
ZoneCritere(2, 1).Value = "<>*MPCA*"
ZoneCritere(2, 2).Value = "<>*MCA*"
Plage.AdvancedFilter xlFilterInPlace, ZoneCritere
Plage.Cells.SpecialCells(xlCellTypeVisible).EntireRow.Copy Worksheets("STANDARD").Range("A1")
.ShowAllData
'suppression des lignes ayant servies à la zone de critères
.Rows("1:3").Delete
End With
End Sub
Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range
On Error GoTo Fin
With Fe
Set DefPlage = .Range(.Cells(L, C), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
Fin:
Set DefPlage = Nothing
End Function
Bonjour,
Salut Theze
Une variante, avec Filtre Avancé également. La macro est exécutée quand la feuille Standard est activée (tu verras si tu as besoin d'aide pour reproduire dans les deux autres feuilles).
bonjour
salut U. Milité, Theze,
ma suggestion : pas de VBA
mais une requête pour afficher en clair MCA etc. (tu sais faire ? )
et ensuite un simple TCD (ou 3 TCD avec des filtres figés si tu veux)
amitiés à tous
Bonjour,
Une autre proposition avec Récupérer et transformer (Power Query).
3 tableaux comme souhaité. Le TCD n'étant pas demandé.
Pour actualiser les données lors de modifications dans le tableau Extraction : Ruban, Données, Actualiser tout.
Le procédé est identique au filtres sous Excel (sans ajout de colonnes !...
A te relire.
Cdlt.
Bonjour à tous,
Je vous remercie tous pour toutes vos réponses rapides.
J'ai essayé un peu toutes vos réponses. Celle qui correspondrait le mieux à la demande de mon responsable est celle de Theze.
J'ai un peu adapé le code et j'ai ajouté des boutons pour simplifier l'utilisation par mes collègues.
Il m'est demandé maintenant d'ajouter une "barre de recherche" où il serait possible de taper un mot, ou même juste quelques lettres, et que cela me sorte la liste des résultats en dessous.
Pb : Je ne vois pas du tout comment faire.
Avez-vous des idées à me suggérer ?
Dans l'attente de vos réponses. Bonne journée.