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 :

Calcul par macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en apprentissage
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant en apprentissage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Par défaut Calcul par macro
    Bonjour,

    Je travaille dans le bâtiment et je dois créer un fichier Excel sur le suivi de matériel pour mon entreprise.

    Je voudrais, à partir de la saisie des mouvements (photo jointe) obtenir 3 informations à partir d'un calcul macro.
    Les 3 informations sont: la quantité totale, la quantité moyenne et la quantité maximale. Elles sont conditionnées par plusieurs paramètres: le chantier d'arrivée, le chantier de départ, le matériel et la date.

    Concrètement, sur mon exemple, je voudrais calculer la quantité totale de matériels pour le lieu 1049 en fonction du nombre de matériels par jour.

    Voici le calcul:
    Quantité totale: (01/02/2018-01/01/2018)*100+(01/03/2018-01/02/2018)*200+(15/03/2018-01/03/2018)*300+(21/03/2018)*150=13800

    Le problème, c'est que c'est un calcul qui se fait sur plus de mille lignes avec des valeurs conditionnelles (lieu, matériels).

    J'espère avoir été assez précis. Avez-vous des pistes à me donner?

    Merci par avance,
    Corentin
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour

    Pour moi ton message est incompréhensible.

    Relit le, si il est clair le problème c'est moi.

    Bonne journée.

    Si ce n'est pas clair, je suis en attente de te relire.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en apprentissage
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant en apprentissage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Par défaut
    Bonjour,

    Effectivement mon message n'est pas très clair.

    Mon objectif: calculer la quantité totale de matériel sur un lieu précis (ex: 1049) pour une durée déterminée(1ere date de mouvement et dernière date de mouvement).

    Comment: à partir d'une base de donnée "SAISIE DES MOUVEMENTS" (photo jointe dans mon premier message).

    Problèmes: Nombre de lignes importantes, beaucoup de lieux différents et beaucoup de matériels. Il s'agit de faire une somme cumulée (en + et en -) en fonction du type de matériels, du lieu d'arrivée, du lieu de départ et du nombre de jours.


    J'ai un peu réfléchi à comment parvenir à mon résultat, je pense qu'il faut utiliser une boucle VBA.

    Le calcul doit se décomposer de la sorte:
    1/ Définir le périmètre de la boucle : ce sont la première et la dernière date (déterminer à partir d'une formule)
    2/ Déterminer les lignes à prendre en compte (en fonction des lieux et matériels)
    3/ Déterminer la somme cumulée pour chaque ligne
    4/ Déterminer le nombre de jours à prendre en compte pour chaque ligne
    5/ Faire le produit de la somme cumulée et du nombre de jours pour chaque ligne
    6/ Faire et afficher la somme du produit précédemment calculer


    Je n'ai aucune notion du code VBA, hormis mes recherches sur internet.
    Je joins un fichier avec deux onglets "saisie des mouvements" et "bilan". La boucle devrait être dans la colonne C de l'onglet "bilan".
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Corentin P Voir le message
    Je voudrais, à partir de la saisie des mouvements (photo jointe) obtenir 3 informations à partir d'un calcul macro.
    Les 3 informations sont: la quantité totale, la quantité moyenne et la quantité maximale. Elles sont conditionnées par plusieurs paramètres: le chantier d'arrivée, le chantier de départ, le matériel et la date.
    Pas besoin de macro pour faire ça.
    Quantité totale : https://support.office.com/fr-FR/art...2-1697a653039b
    Quantité moyenne : https://support.office.com/fr-FR/art...9-f5576d8ac642
    Quantité maximale : https://support.office.com/fr-FR/art...b-9b6376b28883

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    no effectivement c'est pas clair
    ceci:
    Concrètement, sur mon exemple, je voudrais calculer la quantité totale de matériels pour le lieu 1049 en fonction du nombre de matériels par jour.
    ne correspond pas a cela

    Voici le calcul:
    Quantité totale: (01/02/2018-01/01/2018)*100+(01/03/2018-01/02/2018)*200+(15/03/2018-01/03/2018)*300+(21/03/2018)*150=13800
    tu dis "par jour" puis dans ta demo tu additionne tout les jours différents

    dans tout les cas ca casse pas une noisette un simple filtre sur colonne date et lieu et sum des cells visible dans la colonne quantité
    point barre
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    si je m'en refere a ta ligne"voici le calcul" et non a ta demande textuelle ca devrait donner ceci:

    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
    Sub test()
        Dim temp As New Collection
        With ActiveSheet
        Set plage = .Range("c2:c" & [A65000].End(xlUp).Row)
        On Error Resume Next
        For Each c In plage
            temp.Add Item:=c, Key:=CStr(c)
        Next c
        On Error GoTo 0
        For Each i In temp
            ActiveSheet.Range("A2:E" & .Cells(Rows.Count).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=" & i
            Debug.Print "pour " & i & " c 'est la somme de la plage " & plage.SpecialCells(xlVisible).Address
        'il te reste plus qu'a faire la somme des plage pour chaque item different 
    plage.AutoFilter
        Next i
    End With
    End Sub
    Nom : Capture.JPG
Affichages : 1038
Taille : 204,2 Ko

    je corrige au cas ou tu aurais pas compris qu'il faut prendre le offset(0,2) pour les quantités
    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
    Sub test()
        Dim temp As New Collection
        With ActiveSheet
        Set plage = .Range("c2:c" & [A65000].End(xlUp).Row)
        On Error Resume Next
        For Each c In plage
            temp.Add Item:=c, Key:=CStr(c)
        Next c
        On Error GoTo 0
        For Each i In temp
            ActiveSheet.Range("A2:E" & .Cells(Rows.Count).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=" & i
            Debug.Print "pour " & i & " c 'est la somme de la plage " & plage.SpecialCells(xlVisible).Offset(0, 2).Address
        'il te reste plus qu'a faire la somme des plage pour chaque items differents
    plage.AutoFilter
        Next i
    End With
    End Sub
    edit : ca m' a meme permis de decouvrire une coquille dans le filtre

    matiere a ouvrir une discussion ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en apprentissage
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant en apprentissage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Par défaut
    Je te remercie pour ta réponse.

    Je vais regarder ça de plus près pour essayer de parvenir un résultat. Je vous tiens au courant de mon avancement.

    Merci beaucoup pour la piste.

Discussions similaires

  1. Lancement de calculs après ouverture par macro d'un fichier CSV
    Par MonSavon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/08/2017, 14h46
  2. [XL-2013] Rafraichissement des cellules calculées par macro
    Par odjapo dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 08/01/2016, 09h59
  3. [XL-2010] Problème pour insérer un calcul dans plusieurs cellules par macro
    Par Teva29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2014, 18h11
  4. [XL-2007] Imprécisions dans un calcul par macro
    Par Archichat dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/06/2010, 08h52
  5. Réponses: 6
    Dernier message: 12/11/2006, 19h00

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