IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Une macro pour le traitement des données d'un rapport journalier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    INGENIEUR CIVIL
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : INGENIEUR CIVIL
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Par défaut Une macro pour le traitement des données d'un rapport journalier
    Bonjour,

    Je vous explique ma problématique:
    j'ai un tableau de suivi de production journalière sur un chantier,
    ce tableau contient plusieurs éléments, les éléments qui m'intéresses pour le traitement des données ultérieurement sont ,
    - code
    - heures,
    - bloc,
    - niveau,
    - volume béton coule.

    J'ai besoin de faire l'opération suivante :

    - la somme des heures selon le code, le bloc et le niveau à la fin du mois
    - la somme du volume de béton coule selon le code, le bloc et le niveau à la fin du mois

    ma problématique est la suivantes,
    - le rapport il est journalier du coups à la fin du mois je me retrouve avec une vingtaine de feuilles,
    - actuellement j'ajoute a coté du rapport en Excel un tableau qui me permet de faire les sommes cité dessus quotidiennement, et à la fin du mois j'ajoute un autre tableau dans une feuille de récapitulation dans lequel je fais la somme de tous les tableaux quotidiens.
    Le problème avec cette méthodes est le suivant :

    le nombre important des immeubles(bloc) et des étages(niveau) et la formule lourde (somme.si avec trois condition) ajouter à cela les vingtaine de page à la fin du mois rend le fichier très lourd et il se plante régulièrement. (ce qui n'est pas coool du tout )
    Je vous ai mis en PJ le tableaux en question pour avoir une idée

    donc l'idée et que je puisse rédiger une macro qui fera tous le boulot quoi :p
    c.à.d. qu'elle me permet d'avoir à la fin du mois les sommes que j'ai cité ci dessus.

    Je reste a votre disposition pour toutes info supplémentaire.


    Merci pour votre aide ou toutes info utile ^^

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Salut à toi,

    Je suis certain que ta macro sera très bientôt opérationnelle J'espère faire partie de ceux qui vont t'aider... Mais j'ai peur que tu n'obtiennes pas grand chose car tu n'as rien précisé sur tes connaissances en VBA et tu ne nous donnes aucune information à part le principe...

    Peux-tu nous proposer un bout de macro ou tout du moins un algorithme ?

    Propose également une architecture simplifiée si tu veux qui schématiserait ta situation. J'entends par là que tu nous dises des fichiers, des pages, des colonnes ou des plages de données... Que tu nous dises si ces informations sont toujours les mêmes ou s'il faut que l'utilisateur participe à la macro ou encore que la macro recherche les informations par elle-même, etc.

    Le "problème" étant que l'absence d'infos fait qu'on ne peut pas se lancer dans une proposition car il y a trop de chances pour que cette proposition prenne du temps à écrire et ne corresponde pas du tout à ce que tu recherches.



    Dans l'attente de tes nouvelles

  3. #3
    Candidat au Club
    Homme Profil pro
    INGENIEUR CIVIL
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : INGENIEUR CIVIL
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Par défaut
    Bonjour,
    Je vous ai mis en PJ un exemple. J'ai simplifier un peu le tableau de traitement(il contient généralement 9 immeubles et chacun à 9 étage je vous laisse imaginé sa taille).
    Je n'ai mis que 3 jours, chaque jours est dans une feuille a part (J1-J2 et J3) la dernière feuille est une feuille récap.
    *quotidiennement il y'a deux tableaux a remplir:
    - le premier est le tableau des données ( du A1 au I27)
    - le deuxième est ce que j'appel tableau de traitement (de la case N1 à DB122)
    *à la fin du mois en remplis un tableau récap qui figure dans la feuille récap


    Le tableau des données il est saisie à la main quotidiennement.
    Le tableau de traitement il est remplis automatiquement en faisant une opération de copier/coller en gardant le même point d'une feuille à l'autre.
    le tableau récap à la même forme et contient les même élément que le tableau de traitement quotidien. du coup à la fin du mois le tableau récap est la somme des tableau de traitement de chaque jours.

    NB: le tableau de traitement quotidien n'est pas obligatoire c'est juste une opération intermédiaire pour pouvoir remplir le tableau récap de la fin du mois.

    Bon j'espère que j'ai bien expliqué le sujet, maintenant l'idée est de pouvoir remplir le tableau récap de la fin du mois sans passée par les tableaux de traitement quotidien.

    concernant mes connaissances en excel, il sont un peut limité, j'ai fais des recherches sur les diffèrent forum et les diffèrent tutos pour la rédaction d'une macro. je crois que je peut réaliser une macro mais le problème c'est comment allé d'une feuille à une autre en excel à l'aide des codes de programmations.
    Bon pour être franc j'ai pas encore écris de code pour une macro.
    Si vous pouvez m'aider la dessus je vous serai reconnaissant, en m'envoyant un cour ou un tutos qui pourrai m'être utile, ou carrément me proposer un code :p .

    Merci d'avance

    (veuillez m'excuser si j'ai omis de corriger des fautes dans le texte ci-dessus )
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    J'ai bidouillé une petite macro, dis-moi si elle te va... J'ai eu un peu de mal avec le fait que tes Codes sont du type "5.2" parfois et du coup en recopiant dans le nouveau tableau, cela prenait "5,2" donc pour la comparaison c'était pas facile... lol.

    Copie ce texte dans ton projet VBA, lance-le (en pas à pas si tu veux, avec F8 à répétition) et dis-moi si ça t'aide un peu !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub Test()
     
    'Déclaration des variables qui correspondront au nouveau classeur (NvWb) et à la nouvelle feuille (NvSh)
    Dim NvWb As Workbook
    Dim NvSh As Worksheet
     
    'Création du nouveau workbook et affectation de la nouvelle sheet
    Set NvWb = Workbooks.Add
    Set NvSh = NvWb.Sheets(1)
     
    'Mise en page de la Nouvelle Sheet (NvSh)
    With NvSh
        .Name = "Recap" 'je renomme la feuille
        .Cells.Interior.Color = RGB(200, 200, 200) 'je passe toutes les cellules de la feuille en gris
        .Cells.NumberFormat = "@" 'Pour simplifier la comparaison je passe le format en texte, sinon la copie dans le nouveau fichier crée des virgules au lieu des points...
        .Range("A1") = "Récap fait le " & Date & " à " & Time
        .Range("B2") = "CODE"
        .Range("C2") = "Bloc"
        .Range("D2") = "Niveau"
        .Range("E2") = "Heures"
        .Range("F2") = "Volume coulé"
        .Range("B2:F2").Interior.Color = vbYellow 'les entêtes seront en jaune
        .Range("B2:F2").Borders.Color = vbBlack 'leurs bordures, en noir
    End With
     
    Dim Feuille As Worksheet 'Déclaration d'une variable "Feuille" de type Worksheet
    Dim Trouvé As Boolean
     
    For Each Feuille In ThisWorkbook.Sheets 'on analyse toutes les feuilles du classeur
        If Feuille.Name Like "J*" Then 'si la feuille analysée est bien un jour (commence par "J") alors :
            For ligne = 2 To 26
                DerLigRecap = NvSh.Range("B" & Rows.Count).End(xlUp).Row 'on détermine la dernière ligne du récap
                Trouvé = False 'on passe cet indicateur à Faux, s'il trouve la ligne déjà renseignée, il deviendra "vrai"
                For ligneRecap = 2 To DerLigRecap
                    If Feuille.Range("B" & ligne).Text = NvSh.Range("B" & ligneRecap).Text _
                     And Feuille.Range("D" & ligne).Text = NvSh.Range("C" & ligneRecap).Text _
                     And Feuille.Range("E" & ligne).Text = NvSh.Range("D" & ligneRecap).Text Then
                        NvSh.Range("E" & ligneRecap) = NvSh.Range("E" & ligneRecap).Value + Feuille.Range("C" & ligne).Value
                        NvSh.Range("F" & ligneRecap) = NvSh.Range("F" & ligneRecap).Value + Feuille.Range("I" & ligne).Value
                        Trouvé = True 'comme on a trouvé la ligne, on passe cette variable en "vrai" pour ne pas rajouter les infos en bas du tableau
                        Exit For 'on sort de la recherche dans le recap
                    End If
                Next ligneRecap 'on passe ici à la prochaine ligne Recap
     
                If Trouvé = False Then 'si on n'a pas trouvé dans le tableau, il faut rajouter ces infos
                    'si on n'est pas sorti du recap, c'est qu'on n'a pas trouvé de ligne, on en ajoute donc une
                    NvSh.Range("B" & DerLigRecap + 1) = Feuille.Range("B" & ligne).Text
                    NvSh.Range("C" & DerLigRecap + 1) = Feuille.Range("D" & ligne).Text
                    NvSh.Range("D" & DerLigRecap + 1) = Feuille.Range("E" & ligne).Text
                    NvSh.Range("E" & DerLigRecap + 1) = Feuille.Range("C" & ligne).Text
                    NvSh.Range("F" & DerLigRecap + 1) = Feuille.Range("I" & ligne).Text
                    NvSh.Range("B" & DerLigRecap + 1 & ":F" & DerLigRecap + 1).Borders.Color = vbBlack
                    NvSh.Range("B" & DerLigRecap + 1 & ":F" & DerLigRecap + 1).Interior.Color = vbWhite
                End If
            Next ligne
     
        End If
    Next Feuille
     
    End Sub
    J'ai essayé que ça reste pas trop complexe mais forcément, tu boucles dans des tableaux, dans des pages, et on compare à 1 tableau, ça fait donc 3 boucles imbriquées

Discussions similaires

  1. [XL-2013] Problème de macro pour un traitement de données horizontal puis vertical
    Par minh86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2014, 17h04
  2. [XL-2010] Macro pour importer/fusionner des données
    Par Dubbleu dans le forum Macros et VBA Excel
    Réponses: 34
    Dernier message: 15/07/2013, 16h12
  3. quel diagramme pour le traitement des données
    Par Smix007 dans le forum Visio
    Réponses: 0
    Dernier message: 06/08/2012, 17h41
  4. [Toutes versions] Modification d'une Macro pour un tri de données spécifique
    Par davidstarr dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/03/2011, 06h52
  5. Réponses: 1
    Dernier message: 24/05/2007, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo