Eviter grand nombre de FOR

  • Initiateur de la discussion Initiateur de la discussion herve62
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Ce que je fais va fonctionner , mais c'est Lourd !!!
Fichier avec 52 onglets (S1 à S52) donc par semaine
Je voudrai récupérer une valeur de cellule dans chaque feuille, et par bloc de 4 Ou 5
pour reporter la somme à chaque fois dans une autre feuille
ex : somme de C50 de S1 à S4 , puis de S5 à S8 , de S9 à S13 comme il n'y a pas d'itération constante
je suis parti sur 12 ou 13 boucles FOR
Mais il y a peut-être plus simple d'écriture ?? pour le même résultat
Merci de vos idées
 
Re : Eviter grand nombre de FOR

Bonsoir,

mets peut être déjà le code que tu as fait, peut être plus de chance que l'on voit si il y a des améliorations possibles.... parce que la en l'état, pas facile de t'aider, enfin pour moi....

bonne soirée
@+
 
Re : Eviter grand nombre de FOR

Re
bon un bout de code pour Pierrot :
Code:
lg = 61
    For N = 5 To 8
    Z = Sheets(N).Range("C" & lg).Value
    cumul = cumul + Z
    Cells(7, 4).Value = cumul
    Next N
    cumul = 0
    
    For N = 9 To 13
    Z = Sheets(N).Range("C" & lg).Value
    cumul = cumul + Z
    Cells(7, 5).Value = cumul
    Next N
etc .... FoR

2) Les semaine commencent le LUNDI
3) Habitude & Mutzik : pourriez vous developper un peu votre pensée !
mais ca me donne une idée : je met un petit tableau ( j'ai sur 3 à 5 lignes) dans une feuille toutes les 4 ou 5 sem. avec le cumul, et je balaye les mois de ma feuille "récap" en affectant ce cumul ... bon c'est encore en "dur"
 
Re : Eviter grand nombre de FOR

Bonsoir Frangy
Oui c'était l'idée , sauf que moi j'ai rallongé la sauce ..... je l'ai mis dans chaque feuille de fin de mois comme en S8 puis S13 ..etc
et ma macro ( il m'en faut une pour le reste) va rechercher ces valeurs.... j'en étais plus à 10min d'écriture
Merci
 
Re : Eviter grand nombre de FOR

bonjour,

il est (presque) toujours plus facile de faire un traitement de données qui se trouvent dans une seule feuille que dans plusieurs, et cela, c'est ma longue expérience qui le dit.
Et en pratiquant de la sorte, on peut faire beaucoup plus de choses facilement qui seront des usines à gaz par VBA (ou autre)
...mais bon, sans fichier exemple, je ne donne pas plus de suite ...
 
Re : Eviter grand nombre de FOR

Bonjour tout le monde,

Et pourquoi pas deux boucles imbriquées comme ceci :

Code:
    lg = 61
    k = 1
   NCol = 4
    While k <= 20
        Cumul = 0
        For i = 0 To 3
            Cumul = Cumul + Sheets("S" & k + i).Cells(lg, 3)
        Next
        Cells(7, NCol) = Cumul
        NCol = NCol + 1
        k = k + i
    Wend

Bonne journée
 
Dernière édition:
Re : Eviter grand nombre de FOR

Ça fonctionnait bel et bien mais il fallait se positionner sur la feuille Recap (que je ne pouvais connaître en l'absence d'un fichier test)

Copies ce code à la place du tiens :
Code:
For NLigne = 1 To 5
        k = 1
        NCol = 3
        While k <= 49
            Cumul = 0
            For i = 0 To 3
                Cumul = Cumul + Sheets("S" & k + i).Cells(60 + NLigne, 3)
            Next
            Sheets("Recap").Cells(6 + NLigne, NCol) = Cumul
            NCol = NCol + 1
            k = k + i
        Wend
    Next

Tu devrais obtenir le cumul de chaque mois pour chacune des 5 personnes.

Fais attention, ton total hebdomadaire est décalé d'une ligne à partir de la semaine 23....
 
Re : Eviter grand nombre de FOR

Je continuais de chercher aussi et j'ai trouvé ça :
Code:
Dim sem
sem = Array(4, 8, 13, 17, 21, 26, 30, 35, 39, 43, 47, 52)
    y = 3
    For n = 0 To 11     '>>>> j'ai mis de 0 à ... car OPTION BASE 1 ne fonctionne que dans les Modules
 Cells(x, y).Value = Sheets(sem(n)).Range("D" & lg).Value
 y = y + 1
 Next n
inclu dans la grande boucle bien sûr !!, il me semble que c'est très court !!

Je vais tester ton code , mais je ne vois pas comment le décalage est fait ? car c'est pas toutes les 4 sem !! mais parfois 5
Fais attention, ton total hebdomadaire est décalé d'une ligne à partir de la semaine 23....
Merci pour la remarque !!! ca evitera de chercher + tard
 
Re : Eviter grand nombre de FOR

Je vais tester ton code , mais je ne vois pas comment le décalage est fait ? car c'est pas toutes les 4 sem !! mais parfois 5


La première boucle :
Code:
For NLigne = 1 To 5
permet d'additionner tours à tours les résultats des 5 utilisateurs.

La seconde boucle :
Code:
While k <= 49
permet de passer sur chaque groupe de 4 feuilles

La troisième boucle :
Code:
For i = 0 To 3
permet de passer sur chacune des feuilles d'un groupe

Par contre tu as raison, mon code ne gère pas les éventuels groupes de 5 feuilles.

Si tu veux que ton fichier soit réutilisable d'année en année, il faudrait intégrer une date de début dans chaque feuille (genre la date du lundi) et se servir de cette date pour répartir correctement les données dans la feuille Récap.
 
Re : Eviter grand nombre de FOR

J'ai déjà une petite idée pour utilisation chaque année
un bouton en "recap" qui ouvre un USF ( util 1 fois par an) pour entrer les N° de sem de fin de mois
après c'est que du traitement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour