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 :

[VBA-E, Débutant] Problème Boucle for


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut [VBA-E, Débutant] Problème Boucle for
    Bonjour,

    J'ai une boucle simple :
    J'aimerais savoir s'il est possible de donner une condition dans la boucle pour qu'elle ne fasse pas i = 60; 40 (et autres)

    Merci par avance.

  2. #2
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Bon je ne suis pas un pro. Mais je peux peut etre t'aider si tu es un peu plus précis.

    Y a-t-il une certaine regularité dans les chiffres a sauter?

  3. #3
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    la solution est simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i=1 To 80 Step 1
      If i=40 Then i=i+1
      ...
      ...
    Next i
    Moi, j'aime pas facebook.

    Musiciens de France

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il n'est pas très conseillé d'incrémenter soi même une variable de contrôle
    Elle est pas belle la vie ?

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Je préfrererai aussi un:

    if i<>40 or i<>60 then

    instructions

    end if

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub testbou()
    Dim x As Integer
    For x = 1 To 10
    Select Case x
    Case 2, 3, 4
    Case Else
    MsgBox (x & "***")
    End Select
    Next x
    Elle est pas belle la vie ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    sk8bcn : Oui, en fait je doit éviter de tomber sur le 60 particulièrement.
    Mais plus précisément j'ai un tableau avec une colonne "Type de population", allant de 1 à 80 (mais en fait je n'ai pas 80 valeur, car il y'a les pop 1=>21, 30, 40,60 et 80)
    Donc j'essaye de faire un parcours de cette colonne afin de lui dire, de réaliser un traitement sur toutes les lignes des populations allant de 1 à 21, puis 30 et enfin 80. Vous me diriez pourquoi pas 60, car en fait cette population n’est pas dans la même catégorie que les autres populations.
    J'aimerais ne pas trop surcharger la boucle, afin qu’il ne copie pas des lignes qui ne sont pas à traiter et qu’il ne fasse pas des tours pour rien.

    Je vais tester mais il va quand même tester les valeurs 22, 23, 24, 25, 26, 27, 28, 29,31 etc .... 79 ce qui est assez long vu ce qui est contenu dans la boucle.


    Random : Même problème que sk8bcn
    Ce qui est assez lourds à répéter dans le programme (j’ai une dizaine de boucle dans ce genre)


    Commodore_Psykopate : En fait, une incrémentation soi même de variable, cela ne peut pas engendrer des problèmes divers ?



    Merci beaucoup pour vôtre aide.

  8. #8
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    je suis d'accord avec le fait qu'incrémenter une variable de controle peut engendrer des problèmes, mais le principe que j'ai posté est bon: éviter le traitement des valeurs non souhaitées en les répertoriant dans un if.

    cependant, incrémenter une variable de contrôle est mauvais sauf dans le cas où cette variable ne sert qu'à boucler sans être utilisée ailleurs que comme compteur de la boucle.
    On le fait bien pour les While, non ?

    -edit- il est aussi possible de traiter les différentes valeurs à exclure dans un Switch.
    Moi, j'aime pas facebook.

    Musiciens de France

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Et il n'est pas possible de faire une boucle de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i=1 to 21 and i=30 and i=80 do 
    ....
    next i
    Ce code ne marche pas, mais peut être le re-écrire de façon correct.


    Merci encore.

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    de 1 à 80, ça ne sera pas trop long je pense, tu devrais boucler sur le tout.

    Je n'ai pas d'idée astucieuse sur le coup, j'avoue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i=1 to 80
     
    if i<21 or i=61 or i=80 then
     
    end if
     
    next i

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Ok, merci beaucoup
    Bonne continuation

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

Discussions similaires

  1. Grand Débutant : problème boucle et variable
    Par carelha dans le forum Langage
    Réponses: 2
    Dernier message: 02/08/2006, 19h33
  2. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  3. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36
  4. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 21h38
  5. VBA Excel (débutant) - problème avec la copie d'un range
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2006, 16h32

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