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 :

Changer l'index du For Each


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de coco1397
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 58
    Par défaut Changer l'index du For Each
    Bonjour,

    J'ai une boucle For Each qui démarre de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each RESULTAT In resultatList.ListRows
     
    Next RESULTAT
    J'aimerais dans une certaine situation de reculer l'index. J'ai essayé de faire un truc comme ceci mais ça me met une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESULTAT.index = RESULTAT.index - 1
    Est-ce que quelqu'un peut m'aider ?

    Merci d'avance

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 705
    Par défaut
    Bonjour,
    Plutôt que de faire une boucle For Each, tu peux faire une boucle For :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
        Dim i As Integer
        'Les index des Listbox commencent par zéro
        For i = 0 To ListBox1.ListCount - 1
            'Debug.Print ListBox1.List(i)
        Next i
    End Sub
    (tiré du tuto de silkyroad)
    Ensuite, reculer l'index, c'est équivalent à échanger i avec i-1 (en faisant attention à ce que i-1>=0). Avec ListBox1.List(i), tu travailles sur les valeurs dans la liste. Je te laisse chercher comment échanger la valeur n° i avec la valeur n° i-1, puis montre nous le code obtenu
    Indice : passe par une variable intermediaire.
    PS : je ne crois pas que la propriété index existe ... A vérifier.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    La boucle For Each, c'est du bronze.
    On n'a la main sur presque rien : si l'ordre de scrutation, ni la valeur de la variable incrémentée.

    Comme dit riaolle, la boucle For To permet plus de fantaisie. D'autant plus qu'on manipule un nombre sur lequel on peut faire pas mal d'opérations.
    A ma connaissance, tout ce qui peut se faire avec For Each peut aussi se faire avec For To.
    C'est un peu moins joli mais souvent plus pratique dès qu'on sort du cadre standard.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/03/2017, 18h44
  2. Réponses: 4
    Dernier message: 22/09/2009, 08h04
  3. Gestion des index For Each / For i=0 To Max
    Par Luc1an0 dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/04/2009, 13h04
  4. Index dans For Each
    Par francky356 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/08/2008, 16h17
  5. Quel est l'index qui sert pour les For Each ?
    Par Nixar dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/06/2007, 08h23

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