Travail de tri sur plage variable

Niouf

XLDnaute Occasionnel
Bonjour a toutes et a tous,

J'aimerai automatiser une tache que realise un technicien au sein de mon entreprise.

Je vous joins un tableau avec differentes informations.
Et je recapitule les differentes taches effectuees manuellement :

-Je dois d'abord selectionner une plage a partir de ma colonne I
Plage de travail :1 mois après la date du jour et 4 mois après
-Sur cette plage, je supprime les lignes comprenant les mots "trunking" dans la colonne D et commencant par SM dans la colonne A .
-Je selectionne ensuite toutes les references de la colonne G "Planned orders" (J'ai juste besoin de copier les donnees, et de les coller dans un autre logiciel), mais cette fois ci en pregnant du debut du tableau jusqu'a la fin de ma premiere plage (4 mois après la date actuelle).
-Et je realise ensuite la meme operation, avec les references de la premiere colonne.
Copie a partir du debut, jusqu'a 4 mois après la date de jour)

Vous l'aurai compris, je travaille sur des plages variables, ce qui rend l'operation compliquee.
J'ai deja 1 macro qui effectue la premiere partie du travail afin d'obtenir ce tableau, l'idee serait donc de mettre cette nouvelle macro a la suite de la premiere :)

Quelqu'un a t-il une piste ?
Le simple fait d'identifier mes plages automatiquement me serait d'une grande aide, je pourrai ainsi copier les elements dans une nouvelle page et travailler dessus ...
Ou bien analyser ligne par ligne si la valeur de ma colonne I et effectuer le tri si la condition est respectee ?
Merci d'avance pour votre aide !
 

Pièces jointes

  • Test.xlsx
    89.6 KB · Affichages: 51
  • Test.xlsx
    89.6 KB · Affichages: 58
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Travail de tri sur plage variable

Je filtre et copie la feuille temporairement sur un nouvel onglet
Bof :) c'est possible bien sûr, mais ça multiplie les étapes et donc ...

Par contre tu peux parcourir les cellules visibles dans une colonne, à l'aide de quelque chose comme:
VB:
[...]
derlig = Cells(Rows.Count, 9).End(xlUp).Row
For Each c In Range("I2:I" & derlig).SpecialCells(xlCellTypeVisible)
    If c >= date1Mois And c <= date4Mois And _
        Left(Cells(c.Row, 1), 2) <> "SM" And InStr(1, Cells(c.Row, 4), "trunking", 1) = 0 Then
        ReDim Preserve tablo(1, x)
        tablo(0, x) = Cells(c.Row, 1)
        tablo(1, x) = Cells(c.Row, 7)
        x = x + 1
    End If
Next c
If IsEmpty(x) Then Exit Sub 'pour éviter l'erreur si tablo vide
Sheets(2).[A1].Resize(x, 2) = Application.Transpose(tablo)
[...]
 

gosselien

XLDnaute Barbatruc
Re : Travail de tri sur plage variable

J'ai cru comprendre que pour faire des économies, notre gouvernement avait un jour décidé de raccourcir un mois sur deux (30 jours au lieu de 31).
... Il paraît même (mais l'info n'est pas confirmée officiellement: la N-VA aurait demandé la nomination d'un Secrétaire d'État chargé de faire toute la lumière sur cet épineux sujet) que le calcul envisagé pour le mois de février serait plus particulier et compliqué encore!?
Quand je pense que les autres pays échappent à ces mesquineries! :eek:

Moniteur Belge du 01/06/2015 A.T 415§2
lol
 

Niouf

XLDnaute Occasionnel
Re : Travail de tri sur plage variable

J'ai cette erreur: wrong number of arguments or invalid property assignment :(

Pour la ligne :

Code:
 derlig = cells(Rows.Count, 9).End(xlUp).Row

Des fois j'ai cette erreur car certains termes utilises sur les versions francaises sont differents sur les versions Anglaises.
Mais sur ce coup ... Ca n'a pas l'air de venir de la ^^
 
Dernière édition:

Niouf

XLDnaute Occasionnel
Re : Travail de tri sur plage variable

Salut Modeste,

Le probleme venait seulement de la version d'Excel, j'ai enregistre le fichier sous un autre format et ca fonctionne nickel.
Donc desormais la partie excel devrait pouvoir me servir.
L'idee est en fait de copier les deux colonnes recuperes et de les coller dans un logiciel de Gestion de Stock.

Je vais tout d'abord tester ta macro pour chaque mois de l'annee.

Je te solliciterai si jamais des problemes que je n'arrive pas a regler surviennent.

Merci beaucoup pour ta participation :)
 

Niouf

XLDnaute Occasionnel
Re : Travail de tri sur plage variable

Re !
C'est toujours en testant que l'on trouve de nouveaux cas de figure :p

Je t'ai parle d'un tri entre deux date.
Mais il arrive quil y ai des references avant cette periode.
Dans ce cas, aucun tri a faire, juste rentrer en memoire les deux colonnes.

Est ce facilement adaptable ?

Code Actuel :
Code:
Sub extraire()

Dim derlig As Integer
Dim tablo()
'Filter the 2nd and 3rd columns

ActiveSheet.Range("$A$1:$O$9950").AutoFilter Field:=2, Criteria1:="#N/A"
ActiveSheet.Range("$A$1:$O$9950").AutoFilter Field:=3, Criteria1:= _
"=Ind Eng", Operator:=xlOr, Criteria2:="=Landis"
          
'Create a new sheet called Sheet2

Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Sheet2"
Sheets("Planned Orders").Select

'Macro for create a table in an other sheet, with the Plnd order numbers,
'and extract the TRUNKING and SM numbers in the period : Current date + 1 month - end of third next month

 date1Mois = DateSerial(Year(Date), Month(Date) + 1, Day(Date))
 date4Mois = DateSerial(Year(Date), Month(Date) + 4, 1) - 1
 Sheets(2).[A1].CurrentRegion.ClearContents
 derlig = cells(Rows.Count, 9).End(xlUp).Row
For Each c In Range("I2:I" & derlig).SpecialCells(xlCellTypeVisible)
     If c >= date1Mois And c <= date4Mois And _
         Left(cells(c.Row, 1), 2) <> "SM" And InStr(1, cells(c.Row, 4), "trunking", 1) = 0 Then
         ReDim Preserve tablo(1, x)
         tablo(0, x) = cells(c.Row, 1)
         tablo(1, x) = cells(c.Row, 7)
         x = x + 1
     End If
Next c

If IsEmpty(x) Then Exit Sub 'To avoid error if tablo is empty

Sheets("Sheet2").[A1].Resize(x, 2) = Application.Transpose(tablo)
Sheets("Sheet2").Select
 
End Sub

Un truc du genre en plus ?

Code:
   If c < date1Mois Then
     ReDim Preserve tablo(1, x)
         tablo(0, x) = cells(c.Row, 1)
         tablo(1, x) = cells(c.Row, 7)
         x = x + 1
     End If
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Travail de tri sur plage variable

Bonsoir,

Je ne vois pas ce qui, dans le format du fichier, pourrait "corriger" le message d'erreur que tu obtenais lundi :confused:

Pour ta dernière demande, comme souvent, les choses semblent claires -même limpides et transparentes- à l'auteur du fichier, mais pour ceux "du dehors", il n'en va pas de même!
... En tout cas, en ce qui me concerne, je n'ai pas compris :(

Un petit bout de fichier avec les différents cas de figure et les résultats attendus en fonction de ceux-ci est toujours une bonne idée.
 

Niouf

XLDnaute Occasionnel
Re : Travail de tri sur plage variable

Alors, je m'explique:
En fait, je ne l'avais pas vu, mais dans la macro que j'ai reprise, Excel effectue une sauvegarde en Excel 97-2003.
or, j'ai fais un test sur un fichier sauvegarde en Excel XLSM et l'erreur n'apparait plus.

Pour ma demande. Avec ta macro, un tri est effectue sur la periode donnee.
Et je met en memoire les informations des colonnes 1 et 7.
Sauf que ce tri n'a pas a etre effectue entre la date d'aujourd'hui et le debut de la periode de tri.
Concretement sur le terrain, ce sont des Ordres de Production qui necessitent d'etre lances dans le mois suivant la date actuelle.

Je voulais donc recuperer les informations des colonnes 1 et 7 sans effectuer aucun tri ...

Ceci fonctionne :

Code:
   If c < date1Mois Then
         ReDim Preserve tablo(1, x)
         tablo(0, x) = Cells(c.Row, 1)
         tablo(1, x) = Cells(c.Row, 7)
         x = x + 1
     End If
 

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87