Triage par dates et delais

Bonjour Messieurs

D'entrée je vous le dit ,je suis NUL en Excel et comme j'ai un problème et que j'ai vu qu'il y a des champions ici je m'adresse à vous.

Quand on est malade on va au médecin donc vous êtes mes médecins en la matière

Pas faute d'avoir utilisé la fonction "recherche" mais c'est du chinois pour moi désolé

J'ai un tableau journalier avec des lignes que je souhaite classer par date (colonne F) du plus ancien au plus récent et en sous classement avec la colonne B avec C ainsi de suite puis après la date suivante ou égal toujours avec la colonne B et C

Est ce faisable??

je joint un exemple comme je le voudrais car actuellement les lignes que je reçois sont tout en vrac

j'ai une quinzaine de références B et C

serais t il aussi possible d’insérer une ligne vierge entre chaque différence de produits B et C

je vous serais extrêmement reconnaissant si une âme charitable pouvais m'aider

Merci encore

31planif.xlsx (9.50 Ko)

Bonjour, excel permet de faire beaucoup de chose sans même rédiger une seule formule (le cas échéant, une seule)

Je t'ai mis ton fichier avec le résultat que j'obtiens et deux captures d'écrans sur lesquelles te trouveras des cercles rouge pour te guider ( enfin j'espére)

J'ai pas mis de ligne entre le référence, car il faudrait passer par de la programmation VBA, alors chaque chose en son temps... et puis perso, j'apprend pas à pas la VBA. Alors je ne vais pas te la prescrire...

Pour avoir tout de même un repère visuel, j'ai mis une mise ne forme conditionnelle qui souligne la ligne du dessus à chaque changement de valeur ( c'est là que j'ai mis une p'tite formule )

Cordialement,

Leakim

22planif.zip (150.54 Ko)

Déjà grand merci d'avoir pencher sur mon problème

désolé mais ce n'est pas ce que je souhaite ,je vais essayé d'expliquer

en fait tu a classé la colonne C

la ligne 10 devrais etre en dessous de la 7 car meme bobine

ensuite la 19 qui est au '4/09 devrais etre apres donc en 7

en fait j'ai des bobines de toles un peu comme des rouleaux de papiers toilettes mais en plus grand

en B j'ai une LARGEUR de bobine et une EPAISSEUR par ex 1250 (1 metre et 25 centimetre) x 3 (épaisseur) donc la j'en ai plusieurs de dimensions differentes

en C j'ai une NUANCE (Dc01 ..... un peu comme une pomme ou une poire )

en F j'ai une date de livraison

Donc si j'ai une bobine de 20 tonnes et que par ex du 1250X3 DC01 je doit livrer en 04/09 3 tonnes puis en 10/09 2 tonnes puis en 15/11 4 tonnes j'aimerais que par la meme LARGEUR ET EPAISSEUR (B) avec la meme nuance (C) les dates par ordre croissant

Tout en partant de la date la plus ancienne et ainsi de suite

sur la piece jointes je montre bien que la 1ere ligne est la plus ancienne tout en conservant par la suite ma matiere qui est en B et C

j’espère que j'ai été clair????

Merci encore pour tout

17planif.xlsx (9.50 Ko)

Re,

En te donnant les explications de triage de pensais que tu essayerais !?!

planif

Je pense qu'en ajoutant un critére de triage tu obtiendras ce que tu veux.

Cordialement,

Leakim

re leakim

ouioui cette fonction je l'avais déjà essayé pour te dire j'y avais même passé une journée complète mais ça ne me triais pas comme je voulais ,enfin du moins comme j'ai expliqué ,merci quand même pour avoir essayé de m'aider

Ou alors je ne sais pas m'y prendre

merci encore

Re,

bernyb12000 a écrit :

...Ou alors je ne sais pas m'y prendre ...

On en apprend tout les jours... et c'est normal.

Je pense qu'il te faut un pro de la VBA que je ne suis pas...

Je pense qu'il faudrait que tu fasses une exemple, avec de quoi tu pars et à quoi tu veux arriver.

Souvent, on rencontre sur ce forum des compétences insoupçonnées.

Cordialement,

Leakim

oui je pense qu'il faut une formule pour realiser ce triage

y a t il un champion svp qui peut m'aider?

merci

bonsoir

une macro basée sur ton fichier exemple.

on trie les colonne A à H sur le produit(B) et la couleur(C) et la date(F)

on insère une colonne G, on l'on va copier la première date trouvée par combinaison produit couleur

on retrie les colonnes A à I sur la colonne (G), le produit (B), la couleur(C)

on supprime la colonne G

Sub tridate()
Set ws1 = Worksheets("Feuil1")
dl = ws1.Range("B" & ws1.Rows.Count).End(xlUp).Row
With ws1.Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("B1:B" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("C1:C" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("F1:F" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A1:H" & dl)
   .Header = xlGuess
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
   refp = ""
   refd = ""
   ws1.Columns("G").Insert shift:=xlRight
For i = 1 To dl
  If ws1.Range("B" & i) & ws1.Range("C" & i) <> refp Then
   refp = ws1.Range("B" & i) & ws1.Range("C" & i)
   refd = ws1.Range("F" & i)
  End If
  ws1.Range("G" & i) = refd
Next i
With ws1.Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("G1:G" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("B1:B" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("C1:C" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A1:I" & dl)
   .Header = xlGuess
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
ws1.Columns("G").Delete
set ws1=nothing
End Sub

Grand Monsieur h2so4

Que dire !!!!!! je suis sidéré ,c'est exactement ce que je voulais ,des merci ,merci,merci

c'est incroyable ,je savais qu'il y avais des champions ici mais a ce point je suis bleuffé

merci aussi pour le temps que tu a du passé pour moi

pourrais je te demandé sans abusé (si tu peut pas pas grave ,c'est déja super ce que tu a fait)

est t il possible d'intercaler une ligne et si possible de couleur (gris par ex) entre chaque changement de bobine (B et C ensemble)

je joint le fichier pour te montrer l exemple

Je te remercie pour ton aide

cdlt

Bonjour,

lignes grises ajoutées

Sub tridate()
Set ws1 = Worksheets("Feuil1")
dl = ws1.Range("B" & ws1.Rows.Count).End(xlUp).Row
With ws1.Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("B1:B" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("C1:C" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("F1:F" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A1:H" & dl)
   .Header = xlGuess
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
   refp = ""
   refd = ""
   ws1.Columns("G").Insert shift:=xlRight
For i = 1 To dl
  If ws1.Range("B" & i) & ws1.Range("C" & i) <> refp Then
   refp = ws1.Range("B" & i) & ws1.Range("C" & i)
   refd = ws1.Range("F" & i)
  End If
  ws1.Range("G" & i) = refd
Next i
With ws1.Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("G1:G" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("B1:B" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("C1:C" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SortFields.Add Key:=Range("F1:F" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A1:I" & dl)
   .Header = xlGuess
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
ws1.Columns("G").Delete
refp = ""
For i = dl To 1 Step -1
 If ws1.Range("B" & i) & ws1.Range("C" & i) <> refp Then
  If refp <> "" Then
   ws1.Rows(i + 1).Insert shift:=xlDown
   With ws1.Range("A" & i + 1 & ":I" & i + 1).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.349986266670736
        .PatternTintAndShade = 0
   End With
  End If
   refp = ws1.Range("B" & i) & ws1.Range("C" & i)
 End If
Next i
Set ws1 = Nothing
End Sub

je suis sur le cul!!!!!

c'est parfait ,parfait impeccable

j'ai un peu bataillé a mettre le code en place car je pouvais pas enregistrer ,ca me mettais des erreurs mais j'y suis enfin arrivé et je doit dire que je suis réellement bluffé

quand je pense qu'on a pu batailler a classer tout ca tout les jours et une fée est apparu et d'un coup de baguette ,hop ,délivrance

Ne serais ce pour les lignes en plus qui se mettent toutes seules et grisé ,c'est un temps considérable de gagné

je ne te dirais jamais assez merci pour ton aide

merci encore

merci encore h2so4 ca marche du toner de dieu

j'aurais une requête sur ta macro svp ,serais t'il possible de faire suivre les commentaires que je met dans la ligne I dans le classement

je te remercie par avance en espérant que ce ne soit pas trop compliqué

merci et encore bravo car tout les jours je suis épaté par la rapidité du classement

cdlt

bonsoir,

voici

Sub tridate()
Set ws1 = Worksheets("Feuil1")
dl = ws1.Range("B" & ws1.Rows.Count).End(xlUp).Row
With ws1.Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("B1:B" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("C1:C" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("F1:F" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A1:I" & dl)
   .Header = xlGuess
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
   refp = ""
   refd = ""
   ws1.Columns("G").Insert shift:=xlRight
For i = 1 To dl
  If ws1.Range("B" & i) & ws1.Range("C" & i) <> refp Then
   refp = ws1.Range("B" & i) & ws1.Range("C" & i)
   refd = ws1.Range("F" & i)
  End If
  ws1.Range("G" & i) = refd
Next i
With ws1.Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("G1:G" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("B1:B" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("C1:C" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SortFields.Add Key:=Range("F1:F" & dl) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A1:J" & dl)
   .Header = xlGuess
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
ws1.Columns("G").Delete
refp = ""
For i = dl To 1 Step -1
 If ws1.Range("B" & i) & ws1.Range("C" & i) <> refp Then
  If refp <> "" Then
   ws1.Rows(i + 1).Insert shift:=xlDown
   With ws1.Range("A" & i + 1 & ":I" & i + 1).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.349986266670736
        .PatternTintAndShade = 0
   End With
  End If
   refp = ws1.Range("B" & i) & ws1.Range("C" & i)
 End If
Next i
Set ws1 = Nothing
End Sub

Merci grand Maitre h2so4

c'est plus que parfait ,je te remercie beaucoup d'avoir pris du temps pour moi ,tu est un surhomme

merci,merci merci

si je pouvais te rendre l'appareil ce serais avec grand plaisir

cdlt

Bonjour M h2so4

comme je l'ai déjà dis ta macro fonctionne a merveille ,tellement bien que j'essaye encore et encore de l'ameliorer (tu verra en l'essayant )

J'aurais encore une requête (je sais j'abuse) à te demander ,disons qu'avant je pensais vraiment pas que l'on arriverais a ce résultat alors je ni pensais pas

-serait t'il possible d'inserer une ligne supplémentaire blanche quand le nombre de ligne entre chaque ligne grise est inférieur a 2 donc quand il ni a qu'une seule ligne (comme la ligne 10/11) ca ferais moins compact ,ligne a mettre en dessous de la ligne ecrite

-et si j'écrit un chiffre en A dans cette ligne que ca me recopie la cellule B et C qui est juste au dessus donc le produit (comme la ligne 25/26) ca c'est pour que si je refait le lancement de la macro que la valeur en A de cette ligne suive le classement et comme on classe par délai et produits ca restera dans le produit ,en fait quel que soit la ligne ou j inscrit dans la colonne A doit avoir le B et C écris a cote

Si ca ne fait pas trop de boulot sinon pas grave ,déjà j'ai gagné énormément de temps grâce a toi

je te remercie

cdlt

8planif-copie.xlsm (33.98 Ko)

Bonjour,

ligne blanche ajoutée si 1 seule ligne entre 2 lignes grises

ton autre point j'ai pas compris à quoi cela doit servir, si c'est pour s'assurer que la ligne blanche suivra quand tu referas un tri avec la macro, la macro s'en charge. Si c'est pour autre chose, ...

8planif-copie.xlsm (31.18 Ko)

encore une fois c'est l'excellence a l’état pur ,grand merci et bravo

c'est exactement ce que je voulais ,c'est parfait

Pour le 2eme point laissons tomber ,en fait cette ligne supplémentaire sert d'une part a alléger le tableau ,ca fait moins compact et d'autre part a pouvoir des fois inscrire un numéro comme dans la colonne A

toutes les lignes du tableau j'en ai autant chaque jour et quand je relance la macro ce que je met en A (dans la nouvelle ligne) se retrouve déclassé en bas ,normal car on trie par délai et produit donc cette valeur en A n'est donc pas rattaché

En fait faisons simple ,a chaque fois que j’inscrirais quelque chose dans cette ligne je recopierais la valeur de B et C et a ma prochaine macro cela suivra le classement ,donc ne se cassons pas la tête ,c'est pas vraiment grand chose a copier deux cellules et les coller

Je ne m'attendais pas a avoir un jour un prog comme ca qui me fasse gagner un jour autant de temps ,c'est incroyable (plus de 3 h par jour)

Maintenant j'ai plus qu'a ouvrir un autre post ou trouver comment faire de l'extraction de données de ce tableau et se sera terminé

Je te remercie encore une fois pour tout ce temps que tu ma accordé et qui ma grandement aidé

Bien à vous

cdlt

bonsoir,

je t'ai ajouté une procédure évenementielle en feuil1, quand tu mets un A en colonne A, il copie le contenu des colonnes B et C de la ligne précédente.

5planif-copie.xlsm (32.05 Ko)

tu a su comme toujours comprendre mes demande et je te remercie

c'est tout a fait ca mais disons qu'au lieu d'un A c'est un numéro que j’inscris comme celui qui est juste au dessus avec dans tout les cas au début de ce numéro un chiffre 3 ou éventuellement un texte (solde bob client ou solde bob stock ) (avec MFC)

c'est parfait j'en demandais pas tant ,est ce possible que si un 3 dans chiffre ou un "s" comme début de texte(pour Solde), ,ca peut marcher ?

bien a vous et encore merci pour tout ,vous êtes vraiment très fort

cdlt

rebonsoir,

14planif-copie-2.xlsm (32.76 Ko)
Rechercher des sujets similaires à "triage dates delais"