Difficulté de lecture code, explications

Bonjour tout le monde,

J'ai un soucis de lecture sur la ligne de code surlignée suivante:

Sub Poules()

Dim NbEquipes As Integer

Dim NbPoules As Integer

Dim NbElements As Integer ' nbre de parties

Dim Premier As String

Dim Reponse As Byte

Dim Ok As Boolean

Dim Reprise As Boolean

Dim Tourne As Integer

Dim Boucle As Integer

NbEquipes = Replace(Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Value, "Equipe ", "")

Premier = "1,2,3,4,5,6,7,8"

bis:

NbPoules = 7

Do

If NbEquipes Mod Split(Premier, ",")(NbPoules) = 0 Then Ok = True

If Reprise Then Reponse = MsgBox("Ne tombe pas juste , voulez-vous : " & vbCrLf _

& Split(Premier, ",")(NbPoules) & " poules de " & Int(NbEquipes / NbPoules) _

& " membres et une de " & NbEquipes Mod Split(Premier, ",")(NbPoules), vbYesNo)

If Reponse = vbYes Then Ok = True

NbPoules = NbPoules - 1

Loop Until Ok Or NbPoules < 6

If Not Ok And Not Reprise Then Reprise = True: GoTo bis

If Not Ok Then MsgBox "Répartition non résolue": Exit Sub

NbElements = NbEquipes / NbPoules

Sheets("Feuil3").Range("B2:BB200").ClearContents

NbPoules = 0

For Boucle = 1 To NbEquipes Step NbElements

NbPoules = NbPoules + 1

' 'Inscrit horizontalement le N° des poule

' Sheets("Feuil3").Range("A2").Offset(0, Tourne + 1) = "Poule " & NbPoules

'Inscrit verticalement le N° des poule

Sheets("Feuil3").Range("B2").Offset(Tourne + 1, 0) = "Poule " & NbPoules

'' Inscrit horizontalement les parties

' Sheets("Feuil3").Range("A3:B" & NbElements + 2).Offset(0, Tourne + 1) = Sheets("Feuil2").Range("B2:C" & NbElements + 2).Offset(Boucle - 1, 0).Value

' Inscrit vertcalement les parties

Sheets("Feuil3").Range("B3:C" & NbElements + 2).Offset(Tourne + 1, 0) = Sheets("Feuil2").Range("B2:C" & NbElements + 2).Offset(Boucle - 1, 0).Value

Tourne = Tourne + 7

Next Boucle

'Sheets("Poules").Select

End Sub

Je ne sais pas comment comprendre l'espace entre "If NbEquipes Mod Split(Premier, ",")"et"(NbPoules) = 0 Then"...

Quelqu'un a t-il une explication à me donner ?

Merci pour votre aide et de votre gentillesse.

Bonjour,

il n'y a pas d'espace.

Split(Premier, ",") découpe la chaine Premier sur les "," dans un tableau.

Split(Premier, ",")(NbPoules) te ramène l'élément n° NbPoules de ce tableau (numéroté à partir de 0)

Façon un peu compliquée de faire je trouve, mais il avait peut-être ses raisons, je n'ai pas étudié le reste du code.

Tu aurais tout aussi pu faire une boucle :

For nbPoules=8 to 1 step -1
  If NbEquipes Mod nbPoules = 0 Then Ok = True
  ..
next nbPoule

eric

Merci eriic,

Si j'ai bien compris, d'après ton exemple, la ligne me renvoie le reste de la division de (NbEquipes) par (nbPoules)...

Est ce bien cela ?

Bonjour atlonia,

C'est exact, en VBA, a Mod b retourne a modulo b, soit le reste de la division de a par b ;

sur une feuille de calcul, l'équivalent est : =MOD(a;b)

Ici, a est NbEquipes et b est NbPoules ; BRAVO !!! tu as tout compris !!!

Cordialement, dhany

Merci dhany,

dhany a écrit :

Bonjour atlonia,

C'est exact, en VBA, a Mod b retourne a modulo b, soit le reste de la division de a par b ;

sur une feuille de calcul, l'équivalent est : =MOD(a;b)

Ici, a est NbEquipes et b est NbPoules ; BRAVO !!! tu as tout compris !!!

Cordialement, dhany

Pour ta confirmation...

Sauf si tu as autre chose à demander, je te laisse passer le sujet en résolu :

il suffit de cliquer sur la coche verte V qui est près du bouton EDIT.

Rechercher des sujets similaires à "difficulte lecture code explications"