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 comparaison en VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Points : 37
    Points
    37
    Par défaut Calcul par comparaison en VBA
    Bonjour à tous !

    Voila j'ai un soucis de codage en VBA ça fait pas mal de temps que je galère a trouver une solution mais je tourne en rond, il ne me reste qu'une solution :
    Votre aide !


    Dans une feuille excel j'ai dans mes colonnes :

    A => numéro de 1 a 25 (pas forcément dans l'ordre)
    B => un temps
    C => un numéro de groupe (par exemple les numéros 1,3,5,24 font partie du groupe 1)

    Les numéros de groupe sont dans l'ordre croissant.

    J'ai une userform composé de 25 checkbox indicées.

    L'utilisateur coche la/les checkbox qu'il souhaite (faisant référence a un nombre compris entre 1 et 25) puis valide.

    A ce moment la pour chaque checkbox cochée j'enregistre dans une variable tableau de 2 colonnes par 25 lignes :
    dans la 1ere colonne je retranscrit le numéro du checkbox
    dans la 2eme colonne : 1 si le numéro a été check sinon 0

    Lors de la validation, je dois regarder dans la feuille quelle ligne en "A" correspond au numéro coché (je met dans la cellule en D de la ligne du numéro le mot "check" pour signifié que ce numéro a été choisi).

    Puis je dois faire la moyenne des temps du groupe correspondant a ce numéro sans le temps de ce numéro (ou des numéros) cochés puis faire le delta entre le temps moyen calculer et celui de chaque numéros du groupe coché.

    Jusqu’à présent j'arrive, en écrivant dans des cellules, a dire combien de "numéros" il y a dans chaque groupe, et si le numéro a été check ou non.
    Pour la suite je n'arrive a rien !

    J'imagine que ce que j'ai écrit n'est pas super clair. Si c'est vraiment le cas, dites le moi je ferai encore plus d'effort pour expliquer la chose.

    Merci d'avance pour toute l'aide que vous saurez m’apporter

    cordialement

    ci-joint un tableau excel montrant un peu plus ce qu'il y a dedans a traiter ça aidera peut-être à la compréhension.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Par formule en F2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($C$2:$C$25=C2)*($D$2:$D$25<>"check")*($B$2:$B$25))/SOMMEPROD(($C$2:$C$25=C2)*($D$2:$D$25<>"check")*1)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    merci pour le coup de main !

    mais ça ne marche pas comme je le souhaite -.-

    pour le groupe 3 par exemple j'ai une moyenne de 79.225
    si je check le numéro 7 je voudrais avoir

    (la moyenne du groupe 3 - le temps des numéros check du groupe 3) / (le nombre de numéro du groupe - le nombre de numéro check dans le groupe 3) - le temps du numéro check dans le groupe 3

    hors avec votre formule j'obtiens 80.9 au lieu de 6.7

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    J'avais compris
    Puis je dois faire la moyenne des temps du groupe correspondant a ce numéro sans le temps de ce numéro (ou des numéros) cochés
    En F2, tu as la moyenne du temps des lignes du groupe sans les lignes cochées.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    aps de soucis !

    je viens de corriger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($F$2:$F$25=F2)*($G$2:$G$25<>"check")*($E$2:$E$25))/SOMMEPROD(($F$2:$F$25=F2)*($G$2:$G$25<>"check")*1)-((E2)*($G$2:$G$25="check"))
    reste a restranscrire cela en vba

    en tout cas merci

    (si quelqu'un a une idée )

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

Discussions similaires

  1. VBA Par comparaison (Trouver le + haut et le plus petit)
    Par Delphee01 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2015, 03h26
  2. Requête syntaxe de calcul par comparaison
    Par valalu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/07/2007, 12h41
  3. Pb Requetes et calcul par condition
    Par flagfight dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 11h30
  4. Controle par requete en VBA
    Par Sam 069 dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 10h36
  5. [Access] Calcule par ligne dans une requête
    Par Belze dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2006, 10h09

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