doublenico
XLDnaute Junior
Bonjour,
Ca faisait longtemps ue je n'étais pas revenu sur ce site mais un petit besoin VBA m'a rappelé ce site.
Voici mon besoin :
Je suis responsable de 3 applications parmi des dizaines d'appli.
J'ai DLVY (fiches) qui concernent parfois plusieurs de mes 3 applis mais aussi d'autres applis.
Je souhaite une fois mes 3 applis sélectionnées (mon périmètre) supprimer mes DLVY en double (pas gênant de perdre le nom de l'appli concernée dans la mesure où je sais ue ma DLVY appartient à mon périmètre) le tout seulement pour les sprints en 2018 ou 2019 (pas 2017).
Une fois le tri fait, je ferai un TCD de mes résultats pour ensuite générer un graph.
Je souhaite donc automatiser toutes ces actions car mon fichier d'origine est très long et la fonction de suppression de doublons me donne parfois de drôle de résultats et on peut me demander plusieurs fois dans la journée des extracts.
Voici à uoi ressemble mon fichier et voici le lien du doc avec la macro
https://www.cjoint.com/c/HAAwB42qO5X
Appli DLVY Sprint SFG SFD
isos DLVY-21 oct.-17 oui Validée
isos DLVY-21 oct.-18 oui Validée
cronas DLVY-22 oct.-19 oui Validée
......... ............. ......... .... ..........
et voici mon code dégueux fait avec l'enregistreur VBA.
Je pense une boucle aurait plus de sens mais je ne sais pas faire.
Merci d'avance pour votre aide
Sub Macro1()
'
' Macro1 Macro
'
'je sélectionne la colonne Appli et je filtre sur mes 3 applications
ActiveSheet.Range("$A$1:$F$131").AutoFilter Field:=1, Criteria1:=Array( _
"cronas", "geis", "isos"), Operator:=xlFilterValues
'je sélectionne la colonne Sprint et je filtre sur les dates supérieures à 2017
ActiveSheet.Range("$A$1:$F$131").AutoFilter Field:=3, Operator:= _
xlFilterValues, Criteria2:=Array(0, "1/1/2019", 0, "10/1/2018")
'je sélectionne mon tableau pour faire le traitement des doublons dans la feuille extract
Columns("A:F").Select
Selection.Copy
Sheets("extract").Select
Columns("A:A").Select
ActiveSheet.Paste
Range("A1:E1").Select
Application.CutCopyMode = False
Selection.AutoFilter
'je lance la fonction de suppression des doublons
Columns("B:B").Select
ActiveSheet.Range("$A$1:$E$1048498").RemoveDuplicates Columns:=Array(1, 2, 3, 4, _
5), Header:=xlYes
ActiveWorkbook.Worksheets("extract").AutoFilter.Sort.SortFields.Clear
'je trie mes DLVY pour vérifier u'il n'y a plus de doublons
ActiveWorkbook.Worksheets("extract").AutoFilter.Sort.SortFields.Add Key:= _
Range("B1:B35"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
'je sélectionne les valeurs de mon tableau pour générer mon TCD dans une nouvelle feuille
With ActiveWorkbook.Worksheets("extract").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.SmallScroll Down:=-40
Range("A1:E35").Select
ActiveWindow.SmallScroll Down:=-130
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"extract!R1C1:R35C5", Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="Feuil3!R3C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion15
Sheets("Feuil3").Select
Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("DLVY"), "Nombre de DLVY" _
, xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Sprint")
.Orientation = xlRowField
.Position = 1
End With
'je génère mon graph
Range("A4:B7").Select
Range("B7").Activate
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Feuil3!$A$3:$B$8")
ActiveSheet.Shapes("Graphique 1").IncrementLeft 42
ActiveSheet.Shapes("Graphique 1").IncrementTop -15
End Sub
Ca faisait longtemps ue je n'étais pas revenu sur ce site
Voici mon besoin :
Je suis responsable de 3 applications parmi des dizaines d'appli.
J'ai DLVY (fiches) qui concernent parfois plusieurs de mes 3 applis mais aussi d'autres applis.
Je souhaite une fois mes 3 applis sélectionnées (mon périmètre) supprimer mes DLVY en double (pas gênant de perdre le nom de l'appli concernée dans la mesure où je sais ue ma DLVY appartient à mon périmètre) le tout seulement pour les sprints en 2018 ou 2019 (pas 2017).
Une fois le tri fait, je ferai un TCD de mes résultats pour ensuite générer un graph.
Je souhaite donc automatiser toutes ces actions car mon fichier d'origine est très long et la fonction de suppression de doublons me donne parfois de drôle de résultats et on peut me demander plusieurs fois dans la journée des extracts.
Voici à uoi ressemble mon fichier et voici le lien du doc avec la macro
https://www.cjoint.com/c/HAAwB42qO5X
Appli DLVY Sprint SFG SFD
isos DLVY-21 oct.-17 oui Validée
isos DLVY-21 oct.-18 oui Validée
cronas DLVY-22 oct.-19 oui Validée
......... ............. ......... .... ..........
et voici mon code dégueux fait avec l'enregistreur VBA.
Je pense une boucle aurait plus de sens mais je ne sais pas faire.
Merci d'avance pour votre aide
Sub Macro1()
'
' Macro1 Macro
'
'je sélectionne la colonne Appli et je filtre sur mes 3 applications
ActiveSheet.Range("$A$1:$F$131").AutoFilter Field:=1, Criteria1:=Array( _
"cronas", "geis", "isos"), Operator:=xlFilterValues
'je sélectionne la colonne Sprint et je filtre sur les dates supérieures à 2017
ActiveSheet.Range("$A$1:$F$131").AutoFilter Field:=3, Operator:= _
xlFilterValues, Criteria2:=Array(0, "1/1/2019", 0, "10/1/2018")
'je sélectionne mon tableau pour faire le traitement des doublons dans la feuille extract
Columns("A:F").Select
Selection.Copy
Sheets("extract").Select
Columns("A:A").Select
ActiveSheet.Paste
Range("A1:E1").Select
Application.CutCopyMode = False
Selection.AutoFilter
'je lance la fonction de suppression des doublons
Columns("B:B").Select
ActiveSheet.Range("$A$1:$E$1048498").RemoveDuplicates Columns:=Array(1, 2, 3, 4, _
5), Header:=xlYes
ActiveWorkbook.Worksheets("extract").AutoFilter.Sort.SortFields.Clear
'je trie mes DLVY pour vérifier u'il n'y a plus de doublons
ActiveWorkbook.Worksheets("extract").AutoFilter.Sort.SortFields.Add Key:= _
Range("B1:B35"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
'je sélectionne les valeurs de mon tableau pour générer mon TCD dans une nouvelle feuille
With ActiveWorkbook.Worksheets("extract").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.SmallScroll Down:=-40
Range("A1:E35").Select
ActiveWindow.SmallScroll Down:=-130
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"extract!R1C1:R35C5", Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="Feuil3!R3C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion15
Sheets("Feuil3").Select
Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("DLVY"), "Nombre de DLVY" _
, xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Sprint")
.Orientation = xlRowField
.Position = 1
End With
'je génère mon graph
Range("A4:B7").Select
Range("B7").Activate
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Feuil3!$A$3:$B$8")
ActiveSheet.Shapes("Graphique 1").IncrementLeft 42
ActiveSheet.Shapes("Graphique 1").IncrementTop -15
End Sub