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 :

Boucle for qui fait un tour en trop


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Iloon
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 50
    Points
    50
    Par défaut Boucle for qui fait un tour en trop
    Bonjour à tous,

    J'ai une macro qui me permet de calculer plusieurs pourcentages dans plusieurs colonnes différentes.
    J'exécute cette macro jusqu'à un compteur, qui représente les nombres total de lignes.
    Je commence ma boucle "for" à 1 parce que j'ai une ligne de titre qui n'est donc pas calculable.

    Mon problème est qu'à chaque fois, ma boucle fait un tour de plus, j'ai beau vérifier le chiffre contenu dans le compteur, il est correct, je ne comprends pas pourquoi la boucle fait un tour de trop. Du coup, à chaque fois, j'ai une ligne calculée en trop en dessous de toutes les autres.
    Je vous mets ici mon 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
     
     
        For ligne = 1 To count
     
        Cells(ligne + 1, 5).Select
        ActiveCell.FormulaR1C1 = "=ROUND(((RC[-1]/RC[-2])*100),2)"
        Cells(ligne + 1, 8).Select
        ActiveCell.FormulaR1C1 = "=ROUND(((RC[-1]/RC[-2])*100),2)"
        Cells(ligne + 1, 11).Select
        ActiveCell.FormulaR1C1 = "=ROUND(((RC[-1]/RC[-2])*100),2)"
        Cells(ligne + 1, 14).Select
        ActiveCell.FormulaR1C1 = "=ROUND(((RC[-1]/RC[-2])*100),2)"
        Cells(ligne + 1, 17).Select
        ActiveCell.FormulaR1C1 = "=ROUND(((RC[-1]/RC[-2])*100),2)"
     
        Next
    Aves-vous une idée sur l'origine du problème ?

    Merci beaucoup !

    Iloon

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    essaie de remplacer Count par Count-1, ça fonctionnera peut être (vu le problème que tu as)

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    j'aurais tendance à préconiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 1 to Count-1
    union(cells(ligne + 1,5),cells(ligne + 1,8),cells(ligne + 1,11), _
           cells(ligne + 1,14),cells(ligne + 1,17)).FormulaR1C1 = _
           "=ROUND(((RC[-1]/RC[-2])*100),2)"
     
    next i

  4. #4
    Membre du Club Avatar de Iloon
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    Je prends volontier ton code plus court cafeine, je suis une débutante, j'ai fait comme j'ai pu
    Je veux bien prendre count-1 comme vous me le conseillez mais cela ne m'aide pas à résoudre mon problème et à comprendre sa source.
    J'utiliserai cette macro sur plusieurs tableaux différents et je ne connaitrai pas toujours le nombre de lignes, voilà pourquoi j'ai utilisé un compteur, seulement, je me dis que cette erreur se fait peut-etre seulement sur ce tableau et que donc, si je fais count-1 sur les autres tableaux, je risque de sauter à chaque fois la dernière ligne.
    Je ne sais pas si je suis très claire.
    Mon code est-il correct mis à part le fait qu'il soit un peu long et répétitif ?

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Count est un compte
    Ainsi, si tu comptes de 0 à 1 ===>> count = 2 (0 et 1) et pas 1

    C'est la raison pour laquelle il faut toujours enlever 1 à Count ...

    Sinon ta boucle bouclerait sur 0, 1 et 2 (alors que l'indice 2 est absent de count = 2 et que nu n'as là que les indices 0 et 1 ... qui font un Count = 2)

    Autre exemple : existent 10 (le compte) chiffres et ils vont de 0 à 9

  6. #6
    Membre du Club Avatar de Iloon
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    Bonjour ucfoutu, vu comme ça, c'est sur que c'est plus logique, mais je n'ai jamais rencontré ce problème lors de mes autres count. Merci en tout cas de cette réponse, je pensais que les précédents posts me disaient de mettre count-1 juste parce que j'en avais un en trop, et non pas parce que c'est de la logique...

    Cafeine, ton code fonctionne merci !

    Merci à tous en tout cas

    Iloon

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

Discussions similaires

  1. Boucle for() qui ne fait pas ce que je veux
    Par Tendhor57 dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2013, 19h58
  2. Boucle for qui ne boucle pas !
    Par polothentik dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 18/04/2008, 10h50
  3. Boucle FOR qui arrete le script
    Par yves_fuji dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 16/04/2008, 14h06
  4. Boucle for qui se bloque
    Par Flophx dans le forum C
    Réponses: 67
    Dernier message: 25/03/2007, 14h14
  5. boucle for qui ne marche pas
    Par Invité dans le forum Langage
    Réponses: 16
    Dernier message: 12/06/2006, 10h59

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