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 :

Somme d'une valeur qui varie et qui se trouve dans la même cellule.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Somme d'une valeur qui varie et qui se trouve dans la même cellule.
    Bonjour tout le monde,

    Je souhaite faire la somme de la valeur qui existe dans la cellule M2. cette valeur change chaque fois quand je rentre et je sort de l’application (elle compte le temps).
    Je souhaite cumuler les valeurs qui changent dans la cellule M2.
    Voici le code que j'ai développer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Bouton_Click()
    start = Timer
     
    UserForm2.Show
     
    Sheets("Menus déroulants").Range("M2") = Timer - start
     
    MsgBox "durée de la saisie: " & Timer - start & " secondes"
    End Sub
    Merci.

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 931
    Points : 5 152
    Points
    5 152
    Par défaut
    bonjour
    si vous chercher par exemple le temps d'exécution d'un macro tu peux procéder de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim start As Single
    Dim RunTime As Single
    start = Timer
    ....
    votre code
    .
    .
     RunTime = Timer - start
    RunTime = Format(RunTime, "0.000")
    MsgBox ("Rapprochement effectué dans: " & RunTime & " secondes")

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'ai réussi à connaitre le temps pour chaque opération, ce que je cherche actuellement c'est d’intégrer chaque fois le temps d’exécution qui change dans une colonne et calculer la somme de toutes les les cellule qui existe dans cette colonne.


    (quand je clic sur un bouton pour la première fois je compte le temps inexécution 1) => cette valeur je veux la mettre dans la cellule M1
    (quand je clic sur un bouton pour la deuxième fois je compte le temps inexécution 2) => cette valeur je veux la mettre dans la cellule M2
    ....
    ...
    ...
    (quand je clic sur un bouton pour la Nième fois je compte le temps inexécution N) => cette valeur je veux la mettre dans la cellule Mn
    et à la fin je calcul la somme de M1+M2+M2+...+Mn
    J’espère que c'est claire.
    Merci.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 931
    Points : 5 152
    Points
    5 152
    Par défaut
    Je crois que pour compter le nombre de clic il faut vérifier si le le champs M & I est vide ou non
    puis un simple somme de la colonne M te donne la somme
    donc à chaque clic il faut chercher la dernière ligne vide et enregistrer la valeur
    Pour la somme c'est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim I As Integer
    With Sheets("feuil1")
        For I = 1 To .Range("M" & Rows.Count).End(xlUp).Row
    Resultat = Resultat + .Range("M" & I).Value
        Next I
        MsgBox Resultat
      End With
    End Sub

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 121
    Points : 9 948
    Points
    9 948
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il faut toujours rester dans M2 et cumuler les valeurs dedans, ou il faut à chaque itération du programme écrire le résultat cumulé dans la cellule d'en dessous ?

    car on dirait que tu as demandé les deux choses dans deux messages différents


    méthode de cumul dans M2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M2").Value = Range("M2").Value + TempsExecution
    avec TempsExecution la variable qui contient le temps d'execution (un pur exemple)


    méthode de cumul décalé, en partant du principe que c'est la colonne M qui porte toujours ce cumul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Cells(Rows.Count,13).End(xlup)(2)
        .Value = .Offset(-1,0).Value + TempsExecution
    End With

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut

    Quand je clic sur le bouton je compte le temps d’exécution (sachant que ce temps d’exécution n'est pas toujours le même) c'est a dire que je vais avoir T1 T2 T3 par exemple( dans mon code le T2 remplace le T1 et après le T3 remplace le T2 dans la cellule M2, ces valeurs là je veux les mettre dans une colonne et calculer leurs somme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public plot As Integer
    Dim start As Single
     
    Sub Bouton_Click()
    start = Timer
     
    UserForm2.Show
     
    Sheets("Menus déroulants").Range("M2") = Timer - start
     
    MsgBox "durée de la saisie: " & Timer - start & " secondes"
    End Sub

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 121
    Points : 9 948
    Points
    9 948
    Billets dans le blog
    5
    Par défaut
    dans le dernier code que j'ai fourni, enlever

    et on obtient l'inscription de chaque temps d'exécution, les uns en dessous des autres, sans cumul

    ensuite pour faire la somme, il te suffit d'utiliser la fonction SOMME() dans excel, ou de calculer la somme en vba via Application.Worksheetsfunction.Sum() en mettant entre paranthèse la plage des cellules à additionner

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour tout le monde voici une nouvelle version du code,
    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
    Sub Bouton_Click()
    Dim start As Single
    Dim i As Integer
     
    i = 1
    start = Timer
     
     
    Sheets("Menus déroulants").Activate
    For i = 1 To 10
     
    Range("M2").Copy
    Range("O" & i).Select
    ActiveSheet.Paste
     
    UserForm2.Show
     
    Sheets("Menus déroulants").Range("M2") = Timer - start
     
    MsgBox "durée de la saisie: " & Timer - start & " secondes"
     
    End Sub
    le problème je ne sais pas ou mettre Next

  9. #9
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 121
    Points : 9 948
    Points
    9 948
    Billets dans le blog
    5
    Par défaut
    Comment pourrions-nous le savoir à ta place ?

    A quel moment dois s'arrêter le traitement de ta boucle ? Avant l'affichage du userform ? Après ? A un autre endroit ? Quand les poules auront des dents ?

    Ta question ne peut être répondu, en l'état, que par toi

    d'ailleurs, si la boucle ne doit pas inclure l'userform, nous sommes en présence d'une boucle qui va coller 10 fois la même valeur sur une plage contigüe de cellules
    autant éviter la boucle dans ce cas là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("O1").Resize(10,1).value = Range("M2").value
    en encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Range("O1"),Range("O10")).value = Range("M2").value
    et d'autres façon encore... pas mal d'autres façons

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    ce que j'ai envie de faire c'est une application pour des opérateurs en usinage, quand l’opérateur change un outil dans sa machine, l'application doit compter le temps qu'il fait pour changer cet outil et intégrer la valeur dans la cellule O1 et fermer l’application, après y aura un autre opérateur qui aura besoin de changer un autre outil et il faut que le temps qu'a fait ce deuxième opérateur s’intègre a la cellule O2 et ainsi de suite...
    quand userforme s'affiche la valeur dans la cellule M2 doit être copier et coller sur O1.
    quand userforme s'affiche à nouveau là la valeur dans la cellule M2 va changer et doit être copier et coller sur O2.

  11. #11
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 931
    Points : 5 152
    Points
    5 152
    Par défaut
    bonsoir
    quand userforme s'affiche la valeur dans la cellule M2 doit être copier et coller sur O1.
    quand userforme s'affiche à nouveau là la valeur dans la cellule M2 va changer et doit être copier et coller sur O2.
    alors pourquoi ne pas enregistrer en M1, puis M2 puis M3....Mn
    et la fain tu n'as qu'a faire la somme !!

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    je ne sais pas comment le faire.
    ci-joint le fichier excel
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [AC-2010] Somme d'une valeur par mois
    Par Mathieu6114 dans le forum IHM
    Réponses: 4
    Dernier message: 22/05/2013, 09h23
  2. [XL-2007] Somme d'une valeur dans plusieures feuilles
    Par zaza45 dans le forum Excel
    Réponses: 2
    Dernier message: 25/03/2013, 12h20
  3. [XSLT] Faire la somme d'une valeur pour un ensemble de noeuds
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 10/03/2009, 09h45
  4. Réponses: 2
    Dernier message: 20/01/2008, 17h31
  5. somme d'une valeur non définie =0
    Par lolothom dans le forum Access
    Réponses: 12
    Dernier message: 06/08/2007, 23h53

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