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 :

Macro qui tourne en boucle, boucle FOR [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Macro qui tourne en boucle, boucle FOR
    Bonjour,

    J'ai quelques notions en programmation mais je n'avais jamais fait du VBA jusque là.
    J'ai des tableau à "trier" (plus de 350 lignes chacun ) autant dire que je vais pas le faire à la main donc je me suis mis à la rédaction d'une macro. Ma macro est relativement longue mais pas très compliqué puisqu'elle ne s'appuie que sur des boucles If, while et for (je connais un peu que ça).
    J'ai identifié une partie de mon code qui pose problème et je l'ai isolé en une seule macro pour essayer de comprendre ce qui clochait (il doit y avoir d'autre problème dans ma macro générale mais autant réglé un seul problème à la fois)

    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
    i = 5
    test=0
    While test = 0
    test1 = 0
    For n = 1 To 15
        If n <> 4 Then    
            If Cells(i, n).Value <> Cells(i, n + 16).Value Then
                  test1 = 1
            End If
        End If
    Cells(i, 16).Value = test1
    Next n
    i = 1 + 1
    If i = 100 Then
        test = 1
    End If
    Wend
    Voici donc le bout que j'ai isolé. Globalement j'ai deux tableaux de 15 colonnes que je veux comparer (sans tenir compte de la colonne 4) sur ce bout la de macro.
    Le problème c'est quand je lance cette macro elle tourne à "l'infini" quand je fais "débuger" il m'indique que le problème vient du Next n
    Il arrive bien à traiter toute la première ligne, je recupère bien une valeur dans ma cellule (5,16) mais après il est incapable de continuer le programme.
    Qu'est ce qu'il ne va pas dans ces quelques lignes de codes ?

    essai.xlsm

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Points : 190
    Points
    190
    Par défaut boucle infinie
    Bonjour,

    Dans ce bout de code, c'est ton test de condition While test=0 qui détermine ta sortie de boucle...

    Or je vois nul part ta variable test évoluer... dans ton code. Donc test vaut toujours 0, à priori.

    Remarque : utilise une balise code (#) pour présenter du code indenté, celà facilitera la lecture !

    Cordialement.

    Bruno

  3. #3
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Points : 10 334
    Points
    10 334
    Par défaut
    Bonjour,

    Un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i = 1 + 1
     If i = 100 Then
    Il faudrait mettre i = i+1, sinon ton i est toujours égal à 2 et ne progresse jamais, du coup tu n'arrive jamais à 100 et ta variable test reste à 0.


    @ZX12R : sa variable test évolue tout en bas (effectivement le manque d'indentation ne facilite pas la lecture).

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Points : 190
    Points
    190
    Par défaut suite boucle
    Zirak a tout à fait raison... et bien du coup j'ai nettoyé mes lunettes !!!

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    ... Je me désespère tout seul ...
    Merci Zirak je pouvais chercher longtemps mon problème... je cherchais un truc compliqué j'ai relu mon programme 15 fois mais j'ai pas vu ma faute de frappe ...
    Merci !

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

Discussions similaires

  1. Boucle "For To Next" qui tourne à l'envers
    Par jackvpt dans le forum Langage
    Réponses: 4
    Dernier message: 09/10/2009, 21h49
  2. [Quartz] Cron Job qui tourne en boucle
    Par K-Kaï dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/02/2008, 11h19
  3. cron qui tourne en boucle
    Par crazykangourou dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 24/09/2007, 14h36
  4. Réponses: 1
    Dernier message: 19/12/2005, 13h00
  5. Pb de rand() qui tourne en boucle
    Par MadChris dans le forum MFC
    Réponses: 3
    Dernier message: 26/06/2004, 16h24

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