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.
 

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.
 

Discussions similaires

Statistiques des forums

Discussions
312 926
Messages
2 093 672
Membres
105 781
dernier inscrit
Dominique G.