Fichier recapitulatif

Bonjour à tous,

j'ai quelques soucis avec la création d'une macro qui me faciliterai la tâche.

Le fichier représente de manière simplifié mon problème.

J'ai une base comportant la semaine, la date, le client et des quantités (en général 500 lignes environ).

A ce jour, j'ai pu créer (grâce notamment au forum) une macro qui me permet d'obtenir la feuille "traitement 1" à savoir insérer

une ligne entre chaque date et faire la somme des quantités.

Maintenant je souhaite réaliser la feuille "traitement 2" qui représente une synthèse de le feuille "traitement 1".

Je souhaiterai aussi que tous les jours ou les quantités sont nulles apparaissent.

Cordialement.

41test.zip (5.42 Ko)

Bonjour patrick33,

Ça doit pouvoir se faire. Par contre une question avant de commencer : es-tu obligé de passer par 2 traitements ou bien un seul ferait l'affaire ?

Bonjour à tous,

Tu aurais pu envoyer le fichier avec la macro du traitement 1,

on pourra alors modifier et compléter

Amicalement

Claude

Bonjour,

pour répondre à vba-new, tritement 1 est utilisée pour suivre un carnet de commande, j'ai donc besoin de savoir dans une journée

les commandes que j'ai à traiter. Je mets à jour au fur et à mesure des travaux réalisés.

Pour dubois, j'envoie la partie du code pour la réalisation de traitement 1.

Lors de mon premier envoi, j'a grandement simplifier mon dossier.

Je joint un fichier tel qu'il peut se présenter réellement la feuille traitement 1, jai juste modifier les données (confidentialité oblige).

Macro pour effectuer la partie traitement 1:

Dim Lgdep As Long

Lgdep = Range("A" & Rows.Count).End(xlUp).Row + 1 ' nbre de ligne à traiter'

For K = Lgdep - 1 To 2 Step -1

If Range("B" & K) <> Range("B" & K - 1) Then

With Range("H" & Lgdep)

.Formula = "=SUM(R" & K & "C:R" & Lgdep - 1 & "C)"

.Font.Bold = True ' mise en gras des caractères'

.Font.ColorIndex = 5 ' couleur des caractères:rouge'

.Font.Size = 12 'taille caractère'

End With

Range("A" & K & ":J" & K).Insert Shift:=xlShiftDown ' insertion ligne'

Lgdep = K

End If

Next K

If Lgdep > 2 Then

With Range("I" & Lgdep)

.Formula = "=SUM(R" & K & "C:R" & Lgdep - 1 & "C)"

.Font.Bold = True ' mise en gras des caractères'

.Font.ColorIndex = 5 ' couleur des caractères:bleu'

.Font.Size = 12 'taille caractère'

End With

End If

Cordialement

29recap.zip (6.60 Ko)

Bonsoir,

Ta macro légèrement modifiée

Sub Totaux()
Dim K As Long, Lgdep As Long
    Application.ScreenUpdating = False
    '--- supprime lignes totaux ---
    On Error Resume Next                                'si pas de vides
    Range("a3:a" & [a65000].End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
    '---
    Lgdep = Range("A" & Rows.Count).End(xlUp).Row + 1   'nbre de ligne à traiter'
    For K = Lgdep - 1 To 3 Step -1
        If Range("B" & K) <> Range("B" & K - 1) Then

            With Range("H" & Lgdep)
                .Formula = "=SUM(R" & K & "C:R" & Lgdep - 1 & "C)"
                .Font.Bold = True                       'mise en gras des caractères'
                .Font.ColorIndex = 5                    'couleur des caractères:rouge'
                .Font.Size = 12                         'taille caractère'
            End With
            If K = 3 Then Exit For                      'sort de la boucle à la ligne 3
                Range("A" & K & ":J" & K).Insert Shift:=xlShiftDown 'insertion ligne
                Lgdep = K
        End If
    Next K
End Sub

Amicalement

Claude

Bonjour,

Pas de suite, c'est bon ?

Claude

Bonsoir,

merci pour la modification. Je l'ai testé, elle fonctionne.

Par rapport à ma demande, j'ai pu avancer.

Dans le fichier joint, j'ai extrait dans une feuille "traitement bis" les informations dont j'avais besoin.

Je dois encore avancer en:

  • faisant apparaitre le jour avec les quantité à 0 (et si possible sans les samedi et les dimanche),
  • en intégrant une ligne entre chaque semaine différente,
  • faire une moyenne sur chaque semaine.

J'ai encore du boulot mais j'ai peut-être fait le plus facile, si vous avez des suggestions, je suis preneur.

Pour la macro que j'ai pu réaliser,je prends toute les améliorations possibles.

N'étant pas un expert en VBA, je n'ai peut-être pas écrit dans la simplicité.

Sub traitement_bis()

Dim Nbligne%, i%, lvide%, sem%

Application.ScreenUpdating = False

Nbligne = ActiveSheet.UsedRange.Rows.Count

Sheets.Add

ActiveSheet.Name = "Traitement bis" ' création d'une feuille traitement bis'

Sheets("Traitement 1").Select 'selection de la feuille à traiter'

For i = 2 To Nbligne

If Range("D" & i).Font.ColorIndex = 5 Then ' teste de la couleur de la cellule'

Sheets("Traitement bis").Range("B" & i).Value = Range("B" & i - 1).Value 'copie de la date de cellule Bi en Bi en Traitement bis'

Sheets("Traitement bis").Range("C" & i).Value = Range("D" & i).Value 'copie de la quantité de cellule Di en Fi en Traitement bis'

Sheets("Traitement bis").Range("A" & i).Value = Range("A" & i - 1).Value

End If

Next i

'suppression des lignes vides de la feuille Traitement bis'

Sheets("Traitement bis").Select 'selection de la feuille à traiter'

For lvide = Nbligne To 1 Step -1

If Application.CountA(Rows(lvide)) = Empty Then Rows(lvide).Delete

Next lvide

End Sub

Cordialement

34test1.zip (7.02 Ko)
Rechercher des sujets similaires à "fichier recapitulatif"