Un code VBA pour copier conditionnellement les données d'une feuille à une autre

Problème

J'ai besoin d'un code VBA capable de copier des données de feuille 1 (données brutes) vers la feuille 2, feuille 3 et ainsi de suite ... en fonction de certaines conditions.

colonne --- A ------------ B ------------ C ------------ D ------ -E

----------- nom ----- lieu ---- société --- pays

----------- name1 ---- AB ------- Nokia ------- USA

----------- nom2 ---- CD ------- Sony -------- Royaume-Uni

----------- nom3 ----- EF ------- LG ----------- INDE

----------- nom4 ----- AB ------ Sony ------ RUSSIE

----------- nom5 ----- AB ------ Sony ------ ALLEMAGNE

----------- name6 ----- CD ------ Nokia ------ INDE

----------- name7 ----- CD ------ Ericsson - Etats-Unis

----------- name8 ----- EF ------ Ericsson ---- RUSSIE

----------- nom9 ----- GH ------ Lenore ----- Royaume-Uni

----------- nom10 --- GH ------- HP --------- INDE

Solution

Vous pouvez utiliser les codes suivants

 Sub SplitSheets () Dim DataSht, wsCrit, SplitSht en tant que feuille de calcul Dim lrUnq, lrData, i en tant que long Dim FtrVal en tant que chaîne Application.ScreenUpdating = False Définissez DataSht = Worksheets ("sheet1") 'changez-le en nom de votre feuille de données brutes lrData = DataSht.Range ("a" & Rows.Count) .End (xlUp) .Row, ensemble wsCrit = Worksheets.Add DataSht.Range ("B1: l" & lrData) .AdvancedFilter Action: = xlFilterCopy, _ CopyToRange: = wsCrit .Range ("A1"), Unique: = True lrUnq = wsCrit.Range ("a" & Rows.Count) .End (xlUp) .Row Pour i = 2 à lrUnq FtrVal = wsCrit.Range ("A" & i ) .Value Set SplitSht = Worksheets.Add DataSht.Select 'DataSht.ShowAllData ActiveSheet.AutoFilterMode = False ActiveSheet.Range ("A1: Z" & lrData) .AutoFilter Champ: = 2, Critère1: = FtrVal Plage ("a1") Sélectionnez une plage (Selection, Selection.End (xlToRight)). Sélectionnez une plage (Selection, Selection.End (xlDown)). Sélectionnez Selection.Copy SplitSht.Select Range ("A1"). Sélectionnez ActiveSheet.Paste 'Cells.Select Cells .EntireColumn.AutoFit SplitSht.Name = FtrVal Application.CutCopyMode = False Suivant i App lication.DisplayAlerts = False wsCrit.Delete Application.DisplayAlerts = True .AutoFilterMode = False End Sub 

Merci à RWomanizer pour cette astuce.

Article Précédent Article Suivant

Les Meilleurs Conseils