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 :

{VBA}Compter une somme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut {VBA}Compter une somme
    Bonjour

    je voudrais créer un programme sous macro
    qui me calcul dans une colonne toutes les valeurs (1kg,5kg,10,kg........)
    et lorsque j'atteint 3000 kg un message sous une msgbox apparait

    je clique sur la msgbox et je recommence l'opération de là ou j'ai atteint la valeur 3000 kg

    et je parcoure cette colonne juqu'a la ligne 5000


    merci d'avance de toutes vos idées et coup de main

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    Peux-tu donner plus de précisions stp ?

    Quel est le calcul que tu souhaites réaliser ? Peux-tu donner un exemple ?

    Merci d'avance!

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    nom du fichier OEE_L1.xls
    nom de la feuille Saisie


    Ligne 5 à 5000
    colonne Q

    Production (g)

    27 720
    10 080
    12 600
    10 920
    5 040
    4 200
    20 000
    40 000
    80 800
    150 400
    7 920
    18 480
    10 660
    16 400
    41 000
    5 040

    je calcule la production tous les jours et des que j'atteint 3 tonnes
    un message apparait en disant il faut vide la malaxeur

    et puis je recommence pour les jours suivant


    c'est un calcul journalier de ma production
    et je fais une alerte par message et je reprends le calcul et je continue comme ca pendant jusqu'a la ligne 5000

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Par défaut
    Il s'agit de données que tu ajoutes tout au long de la journée ou est ce que ta colonne est déjà remplie ?

    Dans le 1er cas, il te faudra associer un évènement OnChange à une macro dans ta feuille "OEE_L1.xls"

    Dans le 2ième cas, un bete Do While (Somme<3000) est suffisant. Mais tes msgbox s'afficheront l'une après l'autre sans possibilité de voir à quel endroit la somme a atteint 3000.

    Essaye d'être plus précis dans ta demande

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    ma colonne est deja remplis donc dans 1er temps verifier si dans ma prod deja fait voir si j'ai atteint les 3000 kg

    et ensuite de continuer a verifier tous les jours qd je rentre ma production de voir si j'ai atteint les 3000 kg

    dans la msgbox est ce qu'il est possible de faire apparaitre le numero de la ligne qui a atteint les 3000 kg?

    mais vu que le programme sera journalier apres je vais pas afficher des centaines de msgbox mais juste vis a vis de la derniere fois qu j'ai vider le malaxeur



    car ce que je voudrais faire
    c'est que le programme regarde si j'ai atteint le quotat (3000 kg) et si oui il fait apparaitre un message et je continue a verifier sur les prodctions suivantes sur 5000 lignes environ


    Exemple:

    de la ligne 5 a 100 j'ai fait 3000 >>> 1er message
    de la ligne 100 a 450 j'ai fait 3000>>> 2eme message

    et je continue comme ca jusqu'a 5000 lignes

  6. #6
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour à tous,

    Avec un fichier exemple, se serait plus facile à realiser.

    Je peux des maintenant te donner une macro mais elle ne correspondra pas à la realité de ton classeur

    Exemple : Feuille : Produc : Colonne B lest Quantité --> Ligne 1 des titres de colonne

    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 control()
    dim totlig as long, poid as double, i as long
    With sheets("Produc") ' Travaille sur la feuille produc
           totlig = .range("B65536").end(xlup).row ' Recupere le nombre de ligne
           Poid = 0# ' Initialise le poid calculé
           for i = 2 to totlig ' Demarre la boucle e la igne 2, la 1 sont des titres
                    poid = poid + (.range("B" & i).value /1000) ' additione la valeur poids ramenée au kilo
                    if poid + (.range("B" & i+1).value /1000)>=3000 then ' test avec la prochaine valeur si ca depasse les 3 tonnes
                             msgbox "La prochaine valeur depassera les 3000 tonnes) ' Message
                             .range("B" & i).interior.colorindex = 2 ' je colorie en rouge la cellule
                             poid = 0# ' remise à zero des calculs
                    else 
                             .range("B" & i).interior.colorindex = xlnone ' sinon j'enleve la couleur
                    end if
            next i
    end with
    end sub
    cordialement
    wilfried

  7. #7
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Je pense qu'il y a beaucoup plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim somme as single
    Do while somme < 3000
    somme = somme + cells(ligne,2).value / 1000
    ligne = ligne + 1
    loop
    Msgbox("Depassement :" & somme & " Kg" & Vbcr & "A la ligne " & Ligne)
    'mise en forme comme explique wilfried
    Encore plus simple:
    Une troisieme colonne avec =Somme($B$2:$B2) en C que tu etends vers le bas, format personnalise pour "diviser" par 1000 puis une mise en forme conditionnelle et un filtre auto et hop !

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    merci de votre coup de main genereux
    je vais verifier ca plus tard et j'editerais pour vous informer du resultas
    encore merci a vous deux

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    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 control()
    Dim totlig As Long, poid As Double, i As Long
    With Sheets("Saisie") ' Travaille sur la feuille Saisie
    totlig = .Range("Q65536").End(xlUp).Row ' Recupere le nombre de ligne
    poid = 0# ' Initialise le poid calculé
    For i = 5 To totlig ' Demarre la boucle e la igne 5, la 1,2,3,4 sont des titres
    poid = poid + (.Range("Q" & i).Value / 1000) ' additione la valeur poids ramenée au kilo
    If poid + (.Range("Q" & i + 1).Value / 1000) >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3 tonnes
    MsgBox "La prochaine valeur depassera les 3000 tonnes) ' Message"
    .Range("Q" & i).Interior.ColorIndex = 2 ' je colorie en rouge la cellule
    poid = 0# ' remise à zero des calculs
    Else
    .Range("Q" & i).Interior.ColorIndex = xlNone ' sinon j'enleve la couleur
    End If
    Next i
    End With
    End Sub

    J'ai teste ta solution tonton fred et rien ne se passe
    j'ai pris la solution de wilfred que j'ai adapter a mon programme
    mais quantite commence a la ligne 5
    et ma colone est Q
    et la feuille est saisie

    le programme a marche m'as affiche 2 fois que j'ai depasse la valeur comme prevu puis il c'est arrete a la ligne en jaune et a marque l'erreur

    incompabilité de type





    j'ai modifie la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If poid + (.Range("Q" & i + 1).Value / 1000) >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3 tonnes
    j'ai mis ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If poid  >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3 tonnes
    maintenant l'erreur je la trouve sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    poid = poid + (.Range("Q" & i).Value / 1000) ' additione la valeur poids ramenée au kilo
    et la je vois pas comment je peux modifier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Compter une somme jusqu'à une limite
    Par orgnobi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/08/2012, 12h21
  2. [VBA-E]- Recuperer le resultat d'une somme dans une variable
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/05/2007, 11h03
  3. [VBA-E] pb d'arrondis lors d'une somme
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/05/2007, 14h14
  4. [VBA-E]- Probleme pour realiser une somme conditionnelle
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/05/2007, 12h18
  5. [VBA EXCEL] Afficher une somme dans une MSGBOX
    Par helmut_perchu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/12/2006, 21h46

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