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 :

Combiner Boucle For et moyenne


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
    Étudiant
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut Combiner Boucle For et moyenne
    Bonjour
    Je suis débutant dnas l'utilisation des macros sur Excel et la programmation en VBA.
    Pour ce qui est du programme sur lequel je travail: je dispose de relevé de températures d'une installation, quart d'heure par quart d'heure.
    J'ai 3 jeux de donnée (date / température) différents que j'ai rangé dans les plages: Date1, Tempeature1, Date2 Temperature2, Date3, temperature3.
    J'aimerai pouvoir moyenner ces donner pour finir une des températures horaires mais aussi moyenners ces plages entre elles.
    Voilà où j'en suis pour l'instant:


    Nom : Capture1.PNG
Affichages : 222
Taille : 80,9 Ko


    Et ma première tentative de code VBA est la suivante:


    Nom : Capture2.PNG
Affichages : 218
Taille : 20,6 Ko


    Ce code exprime bien ce que je souhaite obtenir, j'ai éssayé plusieurs façon de le coder mais malheureusement la boucle For dans laquelle je cherche à calculer les moyennes ne fonctionne pas.

    Quelqu'un pourrait-il m'aider s'il vous plait?

    Merci d'avance

  2. #2
    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
    Ta boucle n'y est pour rien.
    VBA ne comprends pas les fonctions en français. Donc tes 3 premières "MOYENNE" vont se casser les dents à l'exécution.
    Quand à la quatrième ligne, l'utilises pour mettre dans une cellule une formule qui calcule la moyenne de trois valeurs fixes, ce qui, à priori, n'a pas d'intérêt : autant calculer cette valeur en VBA et mettre le résultat dans la cellule.
    Cela dit, la syntaxe de cette ligne n'est pas correcte. En l'état, ça indique de mettre dans la cellule une fonction qui calculera la moyenne de trois cellules nommées et non celle de tes 3 variables.

    Cela dit, je ne comprends pas pourquoi tu veux faire ça en VBA alors qu'il s'agit juste de déposer une formule dans une cellule.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut
    Ok merci pour ta réponse!
    Pour à mon tour répondre à certains points que tu as soulevé:
    J'vais commencé par faire cette moyenne que j'essaye de faire en VBA, en la rentrant directement dans les cellules de la colonne L, mais le faite que excel recalcule en permanence les 8700 moyennes ralentissait énormément mon programme. Je connais l'astuce de l'execution manuelle des formules gràce à la touche F9, mais je comptais mappuyer sur ce cas de figure pour pratiquer le VBA et progresser.
    Cest pourquoi je te remerci pour tes conseils!
    Pour le calcul de moyenne, j'avais commencé à tout faire d'un coup plutot que de passer par trois variables intermédiaires, je vais surement suivre tes conseils et revenir vers cette organisatin là.
    Par contre pour le problème du Francais, tu me conseils donc de remplacer les "Moyenne" et Moyenne.si.ens" par "Average" et AverageIFS"??

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut
    En mettant tout dans un même calcul et en me débarrassant du français j'obtiens ça, mais ça ne marche toujours pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Moyenne").Range("L" & j + 11).FormulaLocal = "= AVERAGE(AverageIfs(Temperature1, Date1, "" >= "" & Cells(j + 11, 11), 
    Date1, "" < "" & Cells(j + 11 + 1, 11)),AverageIfs(Temperature2, Date2, "" >= "" & Cells(j + 11, 11), Date2, "" < "" & Cells(j + 11 + 1, 11)),
    AverageIfs(Temperature3, Date3, "" >= "" & Cells(j + 11, 11), Date3, "" < "" & Cells(j + 11 + 1, 11)))"

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour Madigrizz,
    Ce n'est pas la propriété FormulaLocal mais Formula qu'il faut utiliser
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,


    juste pour avis :

    Il aurait été peut-être plus judicieux de créer un Tableau Croisé dynamique , au lieu de vouloir ce lancer dans une macro Vba me semble t'il ?
    Les segments feraient office de filtre, une colonne moyenne journalière et la possibilité de modifier la vue / ajout MFC au bon vouloir de l'utilisateur.

    Une manière pérenne et "professionnel" de créer des rapports interactifs.

Discussions similaires

  1. Java - boucle for()- maximum - minimum - moyenne
    Par Huguesmmm dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 04/11/2019, 18h04
  2. [XL-2013] Combiner une boucle FOR + .FIND + VLOOKUP
    Par AdrienDemandeInfos dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/09/2016, 17h06
  3. [Python 3.X] Combiner boucle for / while
    Par chashpy dans le forum Général Python
    Réponses: 4
    Dernier message: 24/02/2016, 09h17
  4. Combiner deux boucles for
    Par AI_LINUX dans le forum Langage
    Réponses: 25
    Dernier message: 22/07/2011, 21h28
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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