Liste déroulante avec dates (trois critères)
Bonjour,
Veuillez trouver ci-joint mon occupation du moment, du moins une synthèse pour une question de rapidité.
Je souhaite, à partir d'un tableau de données, laissez le choix à l'utilisateur de trois critères sous forme de liste déroulante ( le tableau est filtré) puis des TCD/formules/tableaux normaux seront réalisé sur une feuille différente.
Sur la feuille de choix des critères plusieurs graphiques vont permettre à l'utilisateur d'avoir un visuel suivant les critères rentrés SEULEMENT.
Je copie et colle le contenu du tableau originel dans la feuille 1 de mon fichier excel via une VBA puis applique mes formules, le reste est fait de façon basics par l'intermédiaire de formules...etc ( temps de calculs 50 sec pour +- 15000 lignes).
Le code par curiosité:
Sub Macro1()
'
' Macro1 Macro
Dim start As Single
start = Timer
ChDir "C:\"
Workbooks.Open Filename:=""
Cells.Select
Selection.Copy
Windows("Bilan_2017.xlsm").Activate
Worksheets("TableauSAP").Activate
Worksheets("TableauSAP").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks("Export.MHTML").Close
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' On applicque deux formules sur la colonne N = Double cloture et la colonne O = INTO et Q= Y2 retard ou non
Range("O2").FormulaR1C1 = "=IF(TableauSAP!C[-8]=""INTT ACEX"",IF(RC[-14]="""","""",IF(RC[-14]=R[-1]C[-14],IF(RC[-10]=R[-1]C[-10],0,IF(LEN(RC[-7])>=2,2,1)),0)),0)"
Range("P2").FormulaR1C1 = "=IF(TableauSAP!C[-9]=""INTO"",IF(RC[-14]="""","""",IF(RC[-14]=R[-1]C[-14],IF(RC[-10]=R[-1]C[-10],1,"" ""),0)),"" "")"
Range("Q2").FormulaR1C1 = _
"=IF(RC[-4]=""Y2"",IF(ISBLANK(RC[-11]),0,IF(TableauSAP!C[-10]=""INTT ACEX"",IF(RC[-16]="""","""",IF(RC[-16]=R[-1]C[-16],IF(RC[-12]=R[-1]C[-12],0,IF([@[Début de la panne]]-[@[Terminée le]]=0,1,IF([@[Début de la panne]]-[@[Terminée le]]<0,2,1))),IF(RC[-12]=R[-1]C[-12],0,IF([@[Début de la panne]]-[@[Terminée le]]=0,1,IF([@[Début de la panne]]-[@[Terminée le]]<0,2,1)))))" & _
",IF(TableauSAP!C[-10]=""INTT"",IF([@[Début de la panne]]-[@[Terminée le]]=0,1,IF([@[Début de la panne]]-[@[Terminée le]]<0,2,1)),0))),0)" & _
""
ActiveWorkbook.Worksheets("uuuu").ListObjects("Tableau1").Sort.SortFields _
.Clear
'filtrage par statut système / peu utile mais visuellement plus clair
ActiveWorkbook.Worksheets("TableauSAP").ListObjects("Tableau1").Sort.SortFields _
.Add Key:=Columns("G:G"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("uuuu").ListObjects("Tableau1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Global").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "durée du traitement: " & Timer - start & " secondes"
End Sub
Merci du temps que vous m'accordez !
Je reste disponible pour tout renseignement
Est il préférable de partie sur du code VBA ?
Finalement j'ai utilisé les segments, rapide, simple et efficace !
https://forum.excel-pratique.com/excel/1-choix-plusieurs-graphiques-t87919.html