Boucle for

Résolu
megatronnbjja Messages postés 67 Statut Membre -  
megatronnbjja Messages postés 67 Statut Membre -
Bonjour,

existe-t-il une syntaxe de boucle for pour des valeurs discontinues?
exemple:

"For i= 1 / 3 / 6/ 13"
cells(1,i).select
next

Merci d'avance pour votre aide

4 réponses

  1. NeoTsu Messages postés 62 Statut Membre 3
     
    Bonjour,

    Je n'en connais pas, mais je peux te proposer:

    
    For i= 1 to 13
    
    cells(1,i).select 
    
    If i = 1 then
    i = 2
    else
    if i = 3 then
    i = 5
    else
    if i = 6 then
    i = 12
    else
    end if
    end if
    end if
    next i
    


    si tu a peu de test a faire, et toujours les mêmes, cela pourra résoudre ton problème

    Remarque, il est également possible de le faire avec des i qui changent si ils sont renseignés par l'utilisateurs en utilisant des variables, mais il faut que le nombre de "cas" a traiter soit toujours le même
    0
    1. megatronnbjja Messages postés 67 Statut Membre
       
      Re,

      Merci pour ta réponse, c'est très malin. Par contre ça reste très redondant si on a beaucoup de cas... Je continue de chercher mais je garde ton idée en tête.

      Merci encore.
      0
  2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Une possibilité : mettre les valeurs dans un tableau

    A(1)=1; A(3)=6;A(3)=6.A(4)=13

    et

    for i=1 to 4
    cells(1,A(i)).select
    next
    0
    1. megatronnbjja Messages postés 67 Statut Membre
       
      Re,

      très bonne idée aussi!
      Par contre, comment sont définis A(1), A(2).... ?

      merci
      0
    2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      C'est à toi de les définir dans le code en fonction de tes besoins

      Tout dépend à quoi correspondent les valeurs
      sont elles arbitraires ? il faut les rentrer en ligne de code A(1)=1 : A(2)=6: etc
      dépendent elles de résultat d'un calcul ? d'une valeur d'une cellule ? tu peux y faire référence dans le code A(1) = cells((1,1).value : A(2)=cells(1,2).value etc

      Ne pas oublier en debut de module de dimensionner le tableau
      Dim A(20) par ex pour 20 valeurs
      0
  3. redaiwa Messages postés 370 Statut Membre 119
     
    Salam megatron.....

    Je ne pense pas qu'on puisse le faire directement avec FOR mais en combinant la boucle FOR avec l'instruction SELECT CASE on peut restreindre l'exécution du code aux seules valeurs indiquées par CASE.

    Voici un exemple où parmis les nombres de 1 à 10, seuls 1;5;8 sont traités (affichage d'un msgbox):

    For i = 1 To 10
      Select Case i
      Case 1, 5, 8: MsgBox i
      End Select
    Next i
    


    J'espère que cela t'aidera. :)
    0
    1. megatronnbjja Messages postés 67 Statut Membre
       
      Re,
      c'est excellent. ça allège pas mal le code.

      Merci
      0
  4. megatronnbjja Messages postés 67 Statut Membre
     
    Merci à tous pour votre aide et votre réactivité.

    Megatron
    0