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 :

modifier la borne sup d'un for pendant la boucle? [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut modifier la borne sup d'un for pendant la boucle?
    Je voulais faire une macro qui parcours toute les lignes et en ajoute quand c'est nécessaire
    Donc je fais une boucle for de 1 a une variable ou je met la derniere ligne et dans mon corps de boucle, j'augmente cette variable de 1 a chaque fois que j'ajoute une ligne (pour continuer a tout parcourir du début a la fin, meme si on a ajouté des lignes ne cours de route) et a ma grand surprise, ca ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    derlgn = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    For i = 1 To derlgn
        If Cells(i, 2) = "a" Then
                Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                derlgn = derlgn + 1
        End If
    Next i
    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox i
    MsgBox derlgn
    en fin de code, je me rend compte que mon i n'a pas été jusqu'au bout, il ne s'est augmenté que de 1 alors que mon derlgn lui s'est bien augmenté comme il faut

    Pourquoi est-ce que i ne tient compte que de la premiere augmentation de derlgn?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Une boucle For ne convient pas pour ce que tu souhaites faire.

    Je te conseil d'utiliser plutôt une boucle de type Do ... Loop qui correspondra le plus à ton cas.

    Un tuto à lire : La gestion des boucles dans Excel

    Philippe

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    ok

    Juste pour comprendre, comment est-ce qu'il fait pour modifier la borne supérieur partiellement dans le For?

    Il la fige quand il réalise le premier next?

    J'avais lu le tuto sur les boucles mais j'ai du rater l'interdiction de toucher aux bornes

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    si tu tiens au For... to .. next, il te faut commencer d'en bas et remonter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = derlgn To 1 Step -1
        If Cells(i, 2) = "a" Then
                Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                derlgn = derlgn + 1
        End If
    Next i

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    je ne tiens pas particulierement au for

    L'idée c'était plutot de comprendre pourquoi quelque chose qui me semblait logique ne fonctionnait pas

    merci pour vos réponses

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut EmmanuelleC et le forum
    Effectivement, Excel semble initialiser ses variables de boucles For lors du premier passage. C'est pour ça que je ne les utilise que lorsque les bornes sont connues et figées. Sinon, effectivement il y a un certain nombre de types de boucles (Do...Loop, While...Wend, Do...Until), mais il faut penser à définir une sortie qui tienne compte des modifications intervenues dans le passage de la boucle (.end(xlUp).row, par exemple), et de préférence bannir les égalités, au profit de supérieur ou égal, ou inférieur ou égal.
    A+

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

Discussions similaires

  1. [polyfit] Modifier les bornes de l'approximation
    Par darkwhite dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/08/2013, 16h44
  2. resolution d'integrale de borne sup infinie
    Par mayna91 dans le forum MATLAB
    Réponses: 6
    Dernier message: 05/07/2009, 22h42
  3. Boucle for qui ne boucle pas !
    Par polothentik dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 18/04/2008, 10h50
  4. Réponses: 3
    Dernier message: 12/06/2006, 12h04
  5. Rafraichissement de la fenêtre pendant une boucle
    Par Swann dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/05/2006, 00h09

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