Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Casse-tête de boucle

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Voici le problème :

J'ai 4 options : 1, 2, 3 et 4
et 3 paramètres : q1, q2 et q3

Quand une option est choisie, chaque paramètre prend la valeur de l'une des options restantes.
Ex. je choisis l'option 1 :
---> q1=2, q2=3 et q3=4

je choisis l'option 3 :
---> q1=1, q2=2 et q3=4

etc.

Comment le résoudre, via, je pense, une boucle ?

Merci d'avance pour toute suggestion.
 

skoobi

XLDnaute Barbatruc
Re : Casse-tête de boucle

Bonjour Magic Doctor,

Si j'ai bien compris, utilise plutôt une condition:
Code:
If Op1 Then
  q1=2: q2=3: q3=3
ElseIf Op2 Then
  q1=1: q2=3: q3=4
ElseIf Op3 Then
   q1=1: q2=2: q3=4
...
End If
 

ROGER2327

XLDnaute Barbatruc
Re : Casse-tête de boucle

Bonjour à tous
Un essai dans le classeur joint.
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, j%
   If Target.Address = "$B$1" Then
      For i = 1 To 3
         j = j + 1
         If Target.Value = i Then
            j = j + 1
         End If
         Cells(1, 2).Offset(i, 0).Value = j
      Next
   End If
End Sub[/B][/COLOR]
ROGER2327
#3798


Samedi 14 Gidouille 137 (Saint Colon, artilleur, SQ)
10 Messidor An CCXVIII
2010-W26-1T16:46:18Z
 

Pièces jointes

  • Temp.xls
    17.5 KB · Affichages: 52
  • Temp.xls
    17.5 KB · Affichages: 55
  • Temp.xls
    17.5 KB · Affichages: 59

Magic_Doctor

XLDnaute Barbatruc
Re : Casse-tête de boucle

Merci skoobi & ROGER2327,

J'avais trouvé la même solution que skoobi et c'était la raison pour laquelle je cherchais un moyen plus élégant pour résoudre le problème, car si nous avons un nombre d'options important, l'écriture risque fort d'être fastidieuse.
La solution de ROGER est par conséquent la bonne. Seulement j'ai tenté de la modifier mais sans succès. En effet, je voudrais récupérer les valeurs des paramètres q1, q2 et q3 non pas dans la feuille mais dans une macro.
J'ai don essayé ceci :

Public q1 As Byte, q2 As Byte, q3 As Byte
'déclaration des paramètres

Sub Choix(chxquid)

Dim i As Byte, j As Byte

For i = 1 To 3
j = j + 1

If chxquid = i Then
j = j + 1
End If

"q" & i = j 'ici message d'erreur
Next


'"toto" & i = j

End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Casse-tête de boucle

Re...
Avec un tableau, peut-être ?
Code:
[COLOR="DarkSlateGray"][B]Option Base 1
Public q%(1 To 3)

Sub choix(v%)
Dim i%, j%
   For i = 1 To UBound(q)
      j = j + 1
      If v = i Then j = j + 1
      q(i) = j
   Next
End Sub[/B][/COLOR]
ROGER2327
#3799


Samedi 14 Gidouille 137 (Saint Colon, artilleur, SQ)
10 Messidor An CCXVIII
2010-W26-1T23:15:59Z
 

Magic_Doctor

XLDnaute Barbatruc
Re : Casse-tête de boucle

Bonjour Roger,

J'ai essayé votre solution ainsi :

Option Base 1
Public q%(1 To 3)
-------------------------------------------
Sub choix(v%)

Dim i%, j%

For i = 1 To UBound(q)
j = j + 1
If v = i Then j = j + 1
q(i) = j
Next

End Sub
-------------------------------------------
Sub test()
'vérifie sur la feuille les valeurs de q1, q2 & q3

Call choix(2)
[d2] = q1
[d3] = q2
[d4] = q3

End Sub
-------------------------------------------

Mais, quelle que soit la valeur de v% (comprise forcément entre 1 et 4), q1=0, q2=0 et q3=0
Pourtant votre solution semble logique à tous points de vue.
 

Magic_Doctor

XLDnaute Barbatruc
Re : Casse-tête de boucle

Étourderie (j'avais omis les parenthèses !!):

Sub test()

Call choix(3)
[d2] = q(1)
[d3] = q(2)
[d4] = q(3)
End Sub

Cette fois, ça marche !
q(1)=1
q(2)=2
q(3)=4

Roger, ¡muchísimas gracias!
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…