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

VB 6 et antérieur Discussion :

[Débutant] Modifier la limite d'une boucle For dynamiquement


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut [Débutant] Modifier la limite d'une boucle For dynamiquement
    Bonjour,

    Est-il possible de modifier dynamiquement l'indice d'arrêt d'une boucle For?
    J'ai essayé ceci mais ça ne fonctionne pas :
    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
     
        Dim currentSize As Long, index As Long
        currentSize = data.Rows.Count
     
        'For i = 2 To data.Rows.Count
        For i = 2 To currentSize
            If data.Cells(i, 1).Value - data.Cells(i - 1, 1).Value > 1 Then
                'Insère le jour suivant la date de la cellule(i-1, 1)
                data.Cells(i, 1).Select
                data.Cells(i, 1).Insert (xlShiftDown)
                data.Cells(i, 1).Value = data.Cells(i - 1, 1).Value + 1
     
                currentSize = currentSize + 1
            End If
     
            index = i
        Next i
     
        MsgBox "Fin boucle... " & index & " - " & currentSize
    Au départ, j'ai 41 éléments, j'en rajoute 11 et à la fin j'ai :
    Fin boucle... 41 - 52
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    non, ce n'est évalué qu'une fois.

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Ok.
    Bon ben j'ai fait une bidouille alors.

    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
     
        Dim currentSize As Long, index As Long
        currentSize = data.Rows.Count
        index = 2
     
        While index <> currentSize
            For i = index To currentSize
                If data.Cells(i, 1).Value - data.Cells(i - 1, 1).Value > 1 Then
                    'Insère le jour suivant la date de la cellule(i-1, 1)
                    data.Cells(i, 1).Select
                    data.Cells(i, 1).Insert (xlShiftDown)
                    data.Cells(i, 1).Value = data.Cells(i - 1, 1).Value + 1
     
                    currentSize = currentSize + 1
                End If
     
                index = i
            Next i
        Wend
    Comme ça, si l'index de fin est différent de la currentSize qui représente la taille réelle de mon tableau, on relance le traitement en repartant du dernier indice traité.

    Ca vous semble bien ou ça fait trop "bidouille" justement?

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Euh, je suis en train de me dire que je peux aussi utiliser directement un while au lieu du for...
    Le boulet

  5. #5
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par seiryujay
    Euh, je suis en train de me dire que je peux aussi utiliser directement un while au lieu du for...
    Le boulet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While currentSize < x 
    ..........
    wend
    Scuse me while I kiss the sky ! Jimi Hendrix

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    ou alors tu créés une classe ayant un comportement de type collection (for each autorisé) dans laquelle tu puisses ajouter des éléments dynamiquement par clé.

    bon je sors ...

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

Discussions similaires

  1. [XE2] Modifier un élément d'une boucle for..in
    Par Papy214 dans le forum Langage
    Réponses: 7
    Dernier message: 19/11/2011, 21h01
  2. [Batch] Evaluation d'une variable modifiée dans une boucle FOR
    Par dedz dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/10/2009, 17h55
  3. modifier le pas d'une boucle for ?
    Par pouponsaltro dans le forum Débuter
    Réponses: 3
    Dernier message: 07/03/2009, 09h11
  4. Modifier une boucle <<for>>
    Par Mataka dans le forum MATLAB
    Réponses: 22
    Dernier message: 31/05/2007, 08h20
  5. [Débutant] une boucle for me rend fou.
    Par SirDarken dans le forum Langage
    Réponses: 6
    Dernier message: 12/09/2006, 23h25

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