Amelioration code
Bonsoir a tous je sollicite votre aide afin de m'arranger ce code car je l'ai fait avec enregistrement de macro mais me semble un peux trop charger a mon avis
alors avec expertise merci de m'aider
bonne soiree
Sub Automatisation()
Application.ScreenUpdating = False
range("A1:C1").Select
Selection.AutoFilter
ActiveSheet.range("a1:c1").AutoFilter Field:=2, Criteria1:=Array( _
"FedEx 2Day Service", "Int'l Economy", "Int'l Economy BOX", _
"Int'l Economy Freight", "Int'l Economy Letter", "Int'l Economy Pak", _
"Overnight Freight", "Priority Box", "Priority Letter", "Priority Overnight", _
"Priority Pak"), Operator:=xlFilterValues
ActiveSheet.range("c1:c3").AutoFilter Field:=3, Criteria1:="="
range("A1:B1").Select
range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate
range("C8").Select
Workbooks.Open filename:= _
"C:\Users\252100\Videos\Henri\mass etry\11092017 EU1TemplateXLS1.xlsm"
ActiveWindow.Visible = False
Windows("11092017 EU1TemplateXLS1.xlsm").Visible = True
Application.Goto Reference:="hipvshop!R1C1"
ActiveSheet.Paste
range("A2").Select
range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate
range("C20").Select
Workbooks.Open filename:= _
"C:\Users\252100\Videos\Henri\mass etry\FWS MassEntry - CreateCONS v3.8.xlsm"
ActiveWindow.Visible = False
Windows("FWS MassEntry - CreateCONS v3.8.xlsm").Visible = True
Application.Goto Reference:="ChildAWBs!R1C1"
ActiveSheet.Paste
Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate
range("C18").Select
Windows("FWS MassEntry - CreateCONS v3.8.xlsm").Activate
Application.Goto Reference:="CONSData!R1C1"
Application.ScreenUpdating = True
End SubBonsoir,
Tu commences par faire disparaître tous les Select, et qualifier tes expressions (faisant référer tes Range à la feuille à laquelle il appartiennent, laquelle est à mettre le cas échéant sous bloc With). On pourra voir le reste ensuite.
Remarque: l'assistant VBA met automatiquement en majuscule l'initiale des mots clés du langage, or on trouve partout dans ton code range au lieu de Range, ce qui pose un petit problème sur la raison de cette anomalie... ?
Bonsoir, MFerrand,
J'ai suivi tes conseils concernant tous les range de mon code par contre pour le reste je ne sais pas comment faire
alors j'aurais besoins de tes caonnaissances.
Merci
Remets ton code actuel...
Sub Automatisation()
Application.ScreenUpdating = False
range("A1:C1").Select
Selection.AutoFilter
ActiveSheet.range("a1:c1").AutoFilter Field:=2, Criteria1:=Array( _
"FedEx 2Day Service", "Int'l Economy", "Int'l Economy BOX", _
"Int'l Economy Freight", "Int'l Economy Letter", "Int'l Economy Pak", _
"Overnight Freight", "Priority Box", "Priority Letter", "Priority Overnight", _
"Priority Pak"), Operator:=xlFilterValues
ActiveSheet.range("c1:c3").AutoFilter Field:=3, Criteria1:="="
range("A1:B1").range(Selection, Selection.End(xlDown)).Copy
Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate
range("C8").Select
Workbooks.Open filename:= _
"C:\Users\252100\Videos\Henri\mass etry\11092017 EU1TemplateXLS1.xlsm"
ActiveWindow.Visible = False
Windows("11092017 EU1TemplateXLS1.xlsm").Visible = True
Application.Goto Reference:="hipvshop!R1C1"
ActiveSheet.Paste
range("A2").Selection.End(xlDown).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate
range("C20").Select
Workbooks.Open filename:= _
"C:\Users\252100\Videos\Henri\mass etry\FWS MassEntry - CreateCONS v3.8.xlsm"
ActiveWindow.Visible = False
Windows("FWS MassEntry - CreateCONS v3.8.xlsm").Visible = True
Application.Goto Reference:="ChildAWBs!R1C1"
ActiveSheet.Paste
Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate
range("C18").Select
Windows("FWS MassEntry - CreateCONS v3.8.xlsm").Activate
Application.Goto Reference:="CONSData!R1C1"
Application.ScreenUpdating = True
End Subvoila j' ai 2 modification par contre le reste j ai pas touche car je crains que me code ne fonctionne plus par contre
j ai remarque que certaains Range exmple : "range("C18").Select "cela je ne peux pas toucher car il permet de selectionner la feuille dans mon classeur combines , de plus le code " Windows("Résultats combinés(2017-11-29 111633)Final.xlsx").Activate"est ce utile de mettre windows au debut .
je sais rame en vba mais j'essaye d'apprendre ce language .
Merci
En guise de suppression des Select, il me semble qu'il y en a toujours autant !
Juste pour illustration, j'écrirais au moins comme ceci :
Sub Automatisation()
Dim crit, Fich$
crit = Array("FedEx 2Day Service", "Int'l Economy", "Int'l Economy BOX", _
"Int'l Economy Freight", "Int'l Economy Letter", "Int'l Economy Pak", "Overnight Freight", _
"Priority Box", "Priority Letter", "Priority Overnight", "Priority Pak")
Application.ScreenUpdating = False
With ThisWorkbook.ActiveSheet
If .FilterMode Then .ShowAllData
With .Range("A1:C1")
.AutoFilter 2, crit, xlFilterValues
.AutoFilter 3, "="
End With
.Range(.Cells(1, 1), .Cells(1, 2).End(xlDown)).Copy
End With
Fich = "C:\Users\252100\Videos\Henri\mass etry\11092017 EU1TemplateXLS1.xlsm"
With Workbooks.Open(Fich).Worksheets("hipvshop")
.Paste .Range("A1")
.Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)).Copy
End With
Fich = "C:\Users\252100\Videos\Henri\mass etry\FWS MassEntry - CreateCONS v3.8.xlsm"
With Workbooks.Open(Fich).Worksheets("ChildAWBs")
.Paste .Range("A1")
End With
End SubC'est sous toutes réserves de ne pas m'être perdu dans tes sélections successives...
Ceci dit, si les Select et tout ce qui y ressemble a disparu, ce code ne m'agrée pas complètement :
- d'une part on ouvre deux classeurs que l'on ne referme pas,
- et j'aurais préféré procéder autrement que par copier-coller, mais je l'ai maintenu dans le doute que ta volonté soit de coller également les formats...
- d'autre part le filtrage initial m'interroge, dans la mesure où si des lignes sont masquées par filtrage elles sont tout de même copiées.
Cordialement.
je te remercie d'avoir pris le temps de m'éclairer sur ce sujet,
avec ce que tu m'a fait je vais pouvoir l'affiner .
merci et bonne journée