Importation automatique de données d'un onglet à un autre avec critères
Bonjour,
Je connais un peu excel mais je suis novice dans les macros et je pense que c'est ce qu'il est souhaitable de réaliser pour mes besoins.
Voilà mon problème :
J'ai un fichier avec une table de données (onglet ZTV) que je souhaite retraiter de manière automatique par les informations du champ "Type"
Je souhaite rapatrier dans les différents onglets les différentes lignes associées à une liste de type.
Ainsi :
- dans l'onglet "Type A", je souhaite rapatrier les lignes de données ayant le type AG/AI et AB, mais je souhaite également pouvoir ajouter d'autres types si besoin par exemple AV même si à l'heure actuelle ce type n'est pas dans la table de données.
- dans l'onglet "Type B", je souhaite rapatrier les lignes de données ayant le type GG/GT et GH si ma table de données comporte ce type.
- dans l'onglet "Type I", je souhaite rapatrier les lignes de données ayant le type IC/II
- dans l'onglet "Type P", je souhaite rapatrier les lignes de données ayant le type PI/PR
- dans l'onglet "Type R", je souhaite rapatrier les lignes de données ayant le type RP/RT.
J'ai mis en lien un fichier test avec les données.
Je vous remercie de l'aide que vous pourriez m'apporter
Merci à tous
Amicalement
Bonjour,
Un exemple.
Cdlt.
Public Sub Create_Worksheets()
Dim wsData As Worksheet, wsCriteria As Worksheet, wsNew As Worksheet
Dim rngData As Range
Dim arrCriteria()
Dim lastCol As Long, lastRow As Long, lCol As Long, lRow As Long, k As Long
Application.ScreenUpdating = False
Set wsData = Worksheets("ZTV")
Set wsCriteria = Worksheets("Types")
With wsData
If .AutoFilterMode Then .AutoFilter.ShowAllData
Set rngData = .Cells(1).CurrentRegion
End With
With wsCriteria
lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For lCol = 1 To lastCol
lastRow = .Cells(.Rows.Count, lCol).End(xlUp).Row
k = 0
ReDim arrCriteria(1 To lastRow - 1)
For lRow = 2 To lastRow
k = k + 1
arrCriteria(k) = .Cells(lRow, lCol)
Next lRow
rngData.AutoFilter field:=1, Criteria1:=arrCriteria, Operator:=xlFilterValues
Set wsNew = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wsNew.Name = wsCriteria.Cells(lCol)
rngData.Copy wsNew.Cells(1)
ActiveWindow.DisplayGridlines = False
Next lCol
End With
End SubMerci bien pour le code.
Par contre est-il possible d'avoir un code afin de rapatrier dans des onglets différents automatiquement les données de type A, type B,.... afin d'avoir un onglet pour chaque type de manière à pouvoir faire des retraitements dans chaque onglet ?
Encore merci
Amicalement