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 :

Double boucle for [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut Double boucle for
    Bonsoir à tous et à toutes,

    Je suis nouveau sur ce forum, et je débute également en VBA. Ce soir j'ai rencontré ma première difficulté sur une double boucle que voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For j = 3 To 5
    For i = 3 To 5
     
     x = wb.Worksheets(3).Cells(i, 2).Resize(1, nb)
     x1 = wb.Worksheets(4).Cells(i, 2).Resize(1, nb)
     x2 = wb.Worksheets(5).Cells(i, 2).Resize(1, nb)
     
    wb.Worksheets("entreprise").Cells(1, j).Resize(5, 2).Value = WorksheetFunction.Average(x)
    wb.Worksheets("entreprise").Cells(7, j).Resize(5, 2).Value = WorksheetFunction.Average(x1)
    wb.Worksheets("entreprise").Cells(14, j).Resize(5, 2).Value = WorksheetFunction.Average(x2)
     
    Next i
    Next j
    Je ne comprends pas pourquoi ma moyenne affichée est toujours la même, à savoir la toute dernière calculée. Un peu comme si la boucle j défilée à la toute fin et ne faisait apparaître que la dernière moyenne. J'ai pourtant l'impression d'avoir bien imbriqué mes boucles.

    Pouvez vous m'aider ?


    Merci à tous et à toutes.

  2. #2
    Expert éminent 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
    Par défaut
    Bonjour et bienvenu
    Si tu explique le but recherché car le code proposé est un peu étrange.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut
    Rebonsoir,

    En fait ce que je cherche à faire c'est associer une plage de cellule à mes x (x,x1,x2), ensuite calculer la moyenne de cette plage de cellule, et enfin reporter ma moyenne sur une autre feuille.

    Sachant que les x sont censés récupérer plusieurs plages de données au fur et à mesure, je vais obtenir plusieurs moyennes. Par exemple x va recevoir trois plages, qui vont me donner les moyennes 1 puis 2 puis 3. De même pour x1 et x2. Ces valeurs doivent être reportées sur ma feuille entreprise. Le seul soucis c'est qu'à la fin du programme ma feuille entreprise affiche trois fois 3, à savoir la dernière moyenne. Je me dis que c'est un problème de boucle mais je ne vois pas ce qui est illogique dans mon code.

    Ps: ne faites pas attention au resize, j'ai oublié de l'enlever.

  4. #4
    Expert éminent 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
    Par défaut
    Et pourquoi les 2 boucle?
    Si j'ai bien compris
    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
    Sub Macro2()
    Dim Wb As Workbook
    Dim i As Integer, Nb As Integer
    Dim x As Range
     
    '.....initialisation de Wb et Nb
    '....
    With Wb.Worksheets("entreprise")
        For i = 3 To 5
            Set x = Wb.Worksheets(3).Cells(i, 2).Resize(1, Nb)
            .Cells(1, i).Value = WorksheetFunction.Average(x)
            Set x = Wb.Worksheets(4).Cells(i, 2).Resize(1, Nb)
            .Cells(7, i).Value = WorksheetFunction.Average(x)
            Set x = Wb.Worksheets(5).Cells(i, 2).Resize(1, Nb)
            .Cells(14, i).Value = WorksheetFunction.Average(x)
            Set x = Nothing
        Next i
    End With
    End Sub
    PS: x est une variable objet (Range), l'affectation se fait à l'aide de Set

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut
    Merci pour ton aide

    Pour ce qui est des deux boucles, c'est nécessaire car je veux reporter mes valeurs en laissant des écarts entre chaque moyenne. En gros je veux qu'il y ait une moyenne toutes les trois cases (d'où une boucle avec step).
    Initialement j'utilisais une seule boucle comme tu l'avais proposé mais ça ne convenait pas à l'organisation de ma feuille excel pour la suite de mon projet.

  6. #6
    Expert éminent 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
    Par défaut
    Explication pas claire sur le résultat escompté.

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

Discussions similaires

  1. double Boucle For
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/07/2012, 16h06
  2. [Toutes versions] Factorielle à double boucle FOR TO
    Par caribou01 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2012, 22h55
  3. doubles boucles for
    Par tpscience dans le forum MATLAB
    Réponses: 7
    Dernier message: 26/04/2009, 19h38
  4. [batch] double boucle for
    Par schlopa dans le forum Windows
    Réponses: 12
    Dernier message: 11/02/2008, 19h54
  5. Sortir d'une double boucle FOR-END
    Par Invité dans le forum MATLAB
    Réponses: 4
    Dernier message: 05/12/2007, 11h07

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