Macro sur fonction tri

Résolu/Fermé
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020 - Modifié le 3 nov. 2020 à 05:59
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020 - 2 nov. 2020 à 20:18
Bonjour,

Je dois envoyer des rapports quotidiens a différentes sociétés. Ces rapports me prennent énormément de temps en passant par la fonction tri.
Ce sont des donnés sur les conteneurs en stockage sur un Terminal. Il s'agira ici de mettre chaque Société dans un classeur contenant:
Feuille 1 les conteneurs en Sts FCL
Feuille 2 les conteneurs en Sts MTY et
Feuille 3 les conteneurs REEFER si la colonne REEFER TEMP C en remplie.
j'ai essayé un enregistrement en macro mais ca ne marche.
je cherche votre aide pour pouvoir le réaliser.
j'ai joint le fichier ci-dessous pour plus de précision.
https://www.cjoint.com/c/JJDbjic16gu


Configuration: Windows / Chrome 86.0.4240.111
A voir également:

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 29 oct. 2020 à 17:41
Bonjour,

Avec un filtre élaboré et les critères en feuille 2 :
Option Explicit
Sub CreerRapports()
Dim wbk As Workbook
Dim wsh As Worksheet
Dim rng As Range
Dim crt As Range
Dim dic As Object
Dim tbl As Variant
Dim ste As Variant
Dim nom As String
Dim i As Long
  
  ' Définir la plage des données
  Set rng = ThisWorkbook.Worksheets(1).Range("A9").CurrentRegion
  ' Lister les sociétés (dans dic)
  Set dic = CreateObject("scripting.dictionary")
  tbl = rng.Offset(1).Resize(rng.Rows.Count - 1, 1).Value
  For i = 1 To UBound(tbl): dic(tbl(i, 1)) = "": Next i
  Erase tbl: tbl = Empty
  ' Pour chaque société :
  For Each ste In dic.keys
    ' - mettre à jour les critères du filtre élaboré
    ThisWorkbook.Worksheets(2).Range("A2").Value = ste
    ' - créer le rapport (avec 3 feuilles)
    Set wbk = Workbooks.Add(xlWBATWorksheet)
    wbk.Worksheets.Add Count:=2
    ' - mettre à jour la feuille FCL
    Set wsh = wbk.Worksheets(1)
    With wsh
      .Name = "Sts FCL"
      ' -- filter les données à transférer
      Set crt = ThisWorkbook.Worksheets(2).Range("A1").CurrentRegion
      rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=crt, Unique:=False
      ' -- copier les données
      rng.Copy Destination:=.Range("A1")
      If rng.Parent.FilterMode Then rng.Parent.ShowAllData
    End With
    ' - mettre à jour la feuille MTY
    Set wsh = wbk.Worksheets(2)
    With wsh
      .Name = "STS MTY"
      ' -- filter les données à transférer
      Set crt = ThisWorkbook.Worksheets(2).Range("A4").CurrentRegion
      rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=crt, Unique:=False
      ' -- copier les données
      rng.Copy Destination:=.Range("A1")
      If rng.Parent.FilterMode Then rng.Parent.ShowAllData
    End With
    ' - mettre à jour la feuille REEFER
    Set wsh = wbk.Worksheets(3)
    With wsh
      .Name = "REEFER TEMP C"
      ' -- filter les données à transférer
      Set crt = ThisWorkbook.Worksheets(2).Range("A7").CurrentRegion
      rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=crt, Unique:=False
      ' -- copier les données
      rng.Copy Destination:=.Range("A1")
      If rng.Parent.FilterMode Then rng.Parent.ShowAllData
    End With
    ' - enregistrer et fermer le rapport
    nom = ThisWorkbook.Path & "\" & Format(Date, "yyyy-mm-dd") & " Rapport " & ste
    wbk.SaveAs nom
    wbk.Close False
  Next ste
End Sub


Le fichier : https://mon-partage.fr/f/xAcL6Afx/

EDIT : pour chaque feuille (i.e 3 fois), avant le End With tu peux ajouter .Columns.AutoFit
      '....
      If rng.Parent.FilterMode Then rng.Parent.ShowAllData
      .Columns.AutoFit
    End With




1
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020
2 nov. 2020 à 02:05
bonjour Patrice

je croyais pouvoir le faire avec un petit réglage sur la mise en forme. Mais depuis je n'y arrive pas. A chaque fois on me signale des erreurs de syntaxes. J'ai joint le fichier original sur lequel je travaille car sur le premier j'avais réduit les colonnes.

Merci d'avance .

https://mon-partage.fr/f/2V2hTSV9/
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776 > abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020
2 nov. 2020 à 08:38
Bonjour,

Est-ce que tu travailles avec plusieurs fichiers sources ayant des structures différentes ?
Faut-t'il mettre un En-tête dans les fichiers des sociétés (nom de la société et date) ?
0
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
2 nov. 2020 à 12:07
Bonjour Patrice

Non je ne travaille pas avec plusieurs fichiers sources. C'est l'unique structure sur laquelle je travaille pour envoyer mes rapports.

Oui car L'En-tête du fichier cible doit être le même que celui qu fichier source .

A votre disposition pour plus de clarification.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
2 nov. 2020 à 12:11
Re,

Ton fichier avec ma macro.
https://mon-partage.fr/f/NU3K7cMZ/

Il fallait juste modifier les critères (Line au lieu de Société) sur la feuille 2
et établir la liste des sociétés d'après la seconde colonne au lieu de la première.
1
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020
2 nov. 2020 à 20:18
Bonjour Patrice

c'est exactement ce que je voulais. Avec cette macro je pense gagner près 1 heure de temps sur mes rapport. Avec des gens comme vous le monde ne s'en porterait que mieux.

un grand merci !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 29 oct. 2020 à 09:00
Bonjour

LINE =LIGNE ?

Feuille 3 les conteneurs REEFER si la colonne REEFER TEMP C en remplie.


dans ce cas dans les feuilles FCL et MTY, met on les lignes avec REEFER TEMP ou pas ?

Le classeur cible sera t'il dans le m^me dossier que "report Stock" ?

Pourra t'il y avoir d'autres société que FCL et MTY ?



0
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020
29 oct. 2020 à 12:29
Bonjour Michel.

Il faut entendre Line = Société.

Si la colonne Reefer Temp C n'est pas remplie c'est pas nécessaire que les colonnes Reefer Temp C et Last Reefer Temp apparaissent sur les feuilles Fcl et Mty.

Oui le classeur cible peut-être dans le même dossier que Report Stock.

Je rappelle les classeurs sont créés en fonction du nombre de société qu'il y'a dans la Colonne Société(ou Line). Sur ce cas si on doit en avoir 6.

J'espère que j'ai été precis. En tout cas je suis à votre disposition pour plus de clarification.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
29 oct. 2020 à 14:35
Je m'absente une ou toute partie de l'après-midi, car à partir de demain (France) je vais me retrouver confiner avec des conditions de sortie restreintes...
Si personne d'autre n'est intervenu, je reprendrais ta demande demain.

@+
0
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020
29 oct. 2020 à 17:14
Okay michel je comprends bien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
abn279 Messages postés 20 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 2 novembre 2020
29 oct. 2020 à 21:45
bonjour Patrice

Ca marche bien . juste quelques petites réglages sur la mise en forme .Mais c'est pas méchant.

Un grand Merci à toi.
0