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 :

For Next imbriqués en quantité variable [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut For Next imbriqués en quantité variable
    Bonjour a tous
    J'ai une question peut etre un peu generale, mais quand meme appliquée a excel dans mon cas.

    J'ai un code qui contient plusieurs boucles for imbriquées
    Le probleme est que ces boucles ne sont pas toutes utiles a tous les tours. Je m'explique:
    Le nombre de boucles for next a imbriquer depend d'un autre indice(disons n). donc si n=1, alors je n'ai qu'une boucle for a realiser. Alors que si n = 4 je devrais avoir 4 for imbriqués.
    Et pour s'ajouter a ca, les indices dependent les uns des autres d'une boucle a l'autre

    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
    'code a executer pour n=2
    for r= 1 to X
      for s= r+1 to X
      'code a executer'
      next s
    next r
     
    'pour n=3
    for r= 1 to X
      for s= r+1 to X
        for t= s+1 to X
         'code a executer'
        next t
      next s
    next r
    existe-t-il un moyen de faire cela proprement en vba? La recursion est elle la seule option? si oui qq un aurait il des pistes?

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Tu pourrais faire un truc de ce style
    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
    For r = 1 To x
        If n > 1 Then
            For s = r + 1 To x
                If n > 2 Then
                    For t = s + 1 To x
                        If n > 3 Then
                            For u = t + 1 To x
                                'code pour n4
                            Next u
                        End If
                        'code pour n3
                    Next t
                End If
                'code pour n2
            Next s
        End If
        'code pour n1
    Next r

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut
    Ah j'etais pas loin. j'avais fait un systeme assez proche, mais avec des goto (hum! scusez).
    Probleme: je passais qd meme par dessus les next, et donc je me retrouvais avec des indices qui n'avaient aucun sens.
    Par contre mon code du milieu n'apparaissait qu'une seule fois, et il est assez long , donc la je vais devoir le mettre en sub ou fonction, avec un tas de parametres a passer.
    Donc voila, a moins que qq trouve une solution en recursif, je me debrouillerais avec ca. Au moins le resultat est sans erreur.

    Merci fring

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Et comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim x As Long, n As Long, i As Long
     
    x = 5
    n = 3
     
    Do
        For i = n To x
            'code à exécuter
        Next
        n = n - 1
    Loop Until n = 0
     
    End Sub

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 10
    Par défaut
    J'avoue que je préférais la premiere version que t'avais posté, d'ailleurs je ne sais meme pas si l'autre marche, car je ne voyais pas trop comment l'appliquer a mon cas. Merci quand meme de t'etre penche sur la question...
    Juste pour rappeler que ce qui posait probleme etait de faire varier le nombre de boucles for/next imbriquées, alors que les plages d'indice etaient fixées(meme si elles dependaient les unes des autres)

    Donc je n'ai pas cherché plus sur la récursion. Le premier code marche bien. Et je viens de voir un truc : la déclaration #Const

    #Const permet de déclarer des "conditional compiler constant", qui permettent de creer des blocs qui s'executent de facon conditionnelle.
    Bon je croyais que ca pouvait etre un truc pas mal, mais en fait ca s'utilise comme un IF, avec l'avantage de delcarer la condition de facon explicite comme une constante....
    http://oreilly.com/catalog/vbanut/ch...let.html#sect4

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

Discussions similaires

  1. Boucle For Next avec 2 variables
    Par neninio31 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/07/2019, 19h46
  2. Possibilités de plusieurs variables dans "For Next"
    Par Baldor dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/06/2008, 15h04
  3. Nom de Champ pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 19h57
  4. Nom de Champ dans une table pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 6
    Dernier message: 30/10/2004, 13h28
  5. qbasic : pause avec FOR-NEXT
    Par clood200 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 08/08/2003, 16h51

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