Loto Foot 15 : Copier/collage d'une feuille à l'autre //!\\

anthoYS

XLDnaute Barbatruc
Bonjour,


Il faudrait qu'un double clic en A1, permettent de choisir le nombre de grilles ; Par exemple 32 (par défaut).

Qu'un double clic en A2, le nombre de 1, N et de 2 voulus ; Ensuite un bouton de commande "répartir aléatoirement" pour répartir la distribution voulu. Par exemple C2:AH2 on place les 1, N, 2 selon notre choix.


je joint un fichier vierge. Car je n'ai rien implanté pour le moment.

Merci ;)
à+
 

Pièces jointes

  • LF15.xlsm
    23 KB · Affichages: 90

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir en fonction du nombre de 1, N et 2 voulus

Un exemple, je donne pour la prmière ligne, 10 "1", 10 "N" et 12 "2". Bien, eh bien ça devra répartir de C2:AH2 ça mais aléatoirement, par exemple 1N222NN21211N2N121N1N222N1N2112NN
et ainsi de suite pour les lignes suivantes (D2:AH2, ligne 2 en réalité).

Si on choisis 32 grilles au départ, ça demandera de la première à la dernière ligne, 32 signes, si la saisi est fausse il faudra que l'on nous le signale. "Trop peu de signes" ou "trop de signes choisis" dans le cas ou on met pour 32, 10, 10 et 13. La ça ferai 33, donc possibilité de corriger.

Je ne sais pas si je suis clair. J'insiste sur l'aléatoire. C'est le but. De répartir dans un ordre hasardeux, pas "1111111111NNNNNNNNN222222222222", car à la main on peut le faire.

Alors, la répartition devra respecter ça ce désordre dans la répartition, voilà.

Un bouton qui met "répartir" serait pas mal.

Le but c'est de choisir son nombre de 1, N, 2 par ligne de la grille et surtout de les répartir par ligne aussi.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Loto Foot : Répartir en fonction du nombre de 1, N et 2 voulus

Bonjour anthoYS,

Un essai dans le fichier joint.

  • dans les colonnes C et D d'une ligne, saisir les nombres de 1 et de N désirés
  • le nombre de 2 se calcule automatiquement
  • puis double cliquer sur la cellule F de la ligne

edit : v1b -> avec la bonne mise en forme pour les doublons
 

Pièces jointes

  • anthoYS-LF15.xlsm-v1.xlsm
    32.7 KB · Affichages: 63
  • anthoYS-LF15.xlsm-v1b.xlsm
    33.8 KB · Affichages: 62
Dernière édition:

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

Bonjour,

@mapomme :

Merci. Par contre, l’alignement des 1, N et 2 n'est pas le bon. Le 1 à gauche, le N au centre et le 2 à droite.

ce que ça donne :

LFD14.jpg désordre total dans l'allignement des 1, N, 2.

ce qui est attendu :

LFD15.pngordre normal

je ne sais pas ce qui cloche dans le code, mais ça ne marche pas comme je veux.

Peux-tu me détailler comment tu as procéder pour en arriver jusque là (les étapes) s'il te plaît ?

Merci
à+
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

Bonsoir anthoYS,
(...) l’alignement des 1, N et 2 n'est pas le bon. Le 1 à gauche, le N au centre et le 2 à droite (...)

C'est normal, je ne l'avais pas embarqué dans la macro.

Dans la macro, il, y a une constante texte Sauf qui indique la liste des noms des feuilles où il ne faut pas appliquer la macro. Les noms des feuilles sont séparés par un ; (dans le fichier joint, il s'agit des feuille 'recap' et 'Toto').

Le code de la macro est dans le module de ThisWorkbook :
VB:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Const Sauf = "recap;toto"  'inscrire les noms des feuilles pas concernées

Dim Tsauf, T(1 To 32), i&, j&, n&, aux

With Sh
  ' vérif si on doit continuer (feuilles exclues)
  Tsauf = Split(Sauf, ";")
  For i = 0 To UBound(Tsauf)
    If UCase(Sh.Name) = UCase(Tsauf(i)) Then Exit Sub
  Next i
  ' si on a cliqué sur une cellule de la colonne F des lignes 2 à 15
  If Not Intersect(Target, .Range("f2:f15")) Is Nothing Then
  Application.ScreenUpdating = False
    Cancel = True
    ' on remplit un tableau T avec les nombres de 1, "N", 2 désirés
    For i = 2 To 0 Step -1
      For j = 1 To Target.Offset(0, -i - 1)
        n = n + 1: T(n) = Array(1, "N", 2)(2 - i)
      Next j
    Next i
    ' on mélange le tableau T
    Randomize
    For i = 1 To 32: j = 1 + Int(32 * Rnd): aux = T(i): T(i) = T(j): T(j) = aux: Next
    ' on écrit la tableau sur la ligne
    Target.Offset(, 1).Resize(, 32) = T
    'on boucle sur la ligne pour les alignements
    For i = 0 To 31
      With .Cells(Target.Row, "g").Offset(, i)
      Select Case .Value
        Case 1: .HorizontalAlignment = xlLeft
        Case "N": .HorizontalAlignment = xlCenter
        Case "2": .HorizontalAlignment = xlRight
      End Select
      End With
    Next i
    Application.ScreenUpdating = True
  End If
End With
End Sub
 

Pièces jointes

  • anthoYS-LF15.xlsm-v1c.xlsm
    37.4 KB · Affichages: 75
Dernière édition:

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

Bonjour, :D



Ok merci. Si je veux que ça soit vrai que pour la feuille '28. Il faut déplacer le code de ThisWorkbook vers la feuille '28 ?
Et comment faire pour que le code (macro) soit valide en cas d'un quinzième match (ligne 16) ?
car il se peut que parfois il y ai 15 matches au lieu de 14. Mais le plus souvent 14.

je souhaite que la macro soit valide sur une seule feuille, je compte ensuite effacer les données saisis et celles que le code à généré par un bouton de commande ClearContent.
Mais on en n'est pas là...


Merci :)
 
Dernière édition:

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

bonjour,

@mapomme : peut-tu m'aider ici ?
Comment transférer le code pour qu'il ne soit valable que pour une seule feuille ?
J'ai essayer mais ça plante !

Merci d'avance...

à+

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error GoTo ErreurStop
  If Target.Row > 16 Then Exit Sub
  If Target.Column > 35 Then Exit Sub
  Select Case Target.Value
   Case Is = 1
        Target.HorizontalAlignment = xlLeft
   Case Is = "N"
       Target.HorizontalAlignment = xlCenter
   Case Is = 2
        Target.HorizontalAlignment = xlRight
  End Select
ErreurStop:
End Sub


Option Explicit


Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)


Const Sauf = "recap;toto"  'inscrire les noms des feuilles pas concernées


Dim Tsauf, T(1 To 32), i&, j&, n&, aux


With Sh
  ' vérif si on doit continuer (feuilles exclues)
  Tsauf = Split(Sauf, ";")
  For i = 0 To UBound(Tsauf)
    If UCase(Sh.Name) = UCase(Tsauf(i)) Then Exit Sub
  Next i
  ' si on a clique sur une cellule de lacolonne F des lignes 2 à 15
  If Not Intersect(Target, .Range("f2:f15")) Is Nothing Then
  Application.ScreenUpdating = False
    Cancel = True
    ' on remplit un tableau T avec les nombres de 1, "N", 2 désirés
    For i = 2 To 0 Step -1
      For j = 1 To Target.Offset(0, -i - 1)
        n = n + 1: T(n) = Array(1, "N", 2)(2 - i)
      Next j
    Next i
    ' on mélange le tableau T
    Randomize
    For i = 1 To 32: j = 1 + Int(32 * Rnd): aux = T(i): T(i) = T(j): T(j) = aux: Next
    ' on écrit la tableau sur la ligne
    Target.Offset(, 1).Resize(, 32) = T
    'on boucle sur la ligne pour les alignements
    For i = 0 To 31
      With .Cells(Target.Row, "g").Offset(, i)
      Select Case .Value
        Case 1: .HorizontalAlignment = xlLeft
        Case "N": .HorizontalAlignment = xlCenter
        Case "2": .HorizontalAlignment = xlRight
      End Select
      End With
    Next i
    Application.ScreenUpdating = True
  End If
End With
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

Re,

(...) Si je veux que ça soit vrai que pour la feuille '28. Il faut déplacer le code de ThisWorkbook vers la feuille '28 ? (...)
Oui! mais en changeant d'évènement : on passe de la procédure évènementielle de classeur Sub Workbook_SheetBeforeDoubleClick à la procédure évènementielle de feuille Worksheet_BeforeRightClick (le paramètre ByVal Sh As Object disparait). Il faut donc ensuite adapter le code. Il faut également éliminer la partie du code qui sert à exclure des feuilles qui devient inutile.

(...) Et comment faire pour que le code (macro) soit valide en cas d'un quinzième match (ligne 16) ?
car il se peut que parfois il y ai 15 matches au lieu de 14. Mais le plus souvent 14. (...)
On modifie la zone de validité du double-clique qui passe de F2:F15 à F2:F16. Et on rajoute une condition qui consiste à poursuivre l'exécution de la macro que si la colonne B de la ligne du double-clique n'est pas vide (ie on y a inscrit une rencontre)

(...) je compte ensuite effacer les données saisis et celles que le code à généré par un bouton de commande ClearContent. (...)
Un bouton a été rajouté dans la cellule F1 qui permet d'effacer les valeurs de la zone G2:AL16 puis (au choix) les valeurs de la zone C2:D16.

Rem : la MFC de la zone H2:AL16 pour la mise en couleur des doublons a été modifiée pour tenir compte du cas où il y aurait 15 rencontres.
 

Pièces jointes

  • anthoYS-LF15.xlsm-v1d.xlsm
    39.9 KB · Affichages: 68
Dernière édition:

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

Merci beaucoup.

Par contre, je n'arrive pas à inscrire le nombre de 1 et de N (C2 à D16).
Quand j'écris ça va à la cellule suivante (j'ai le clavier numérique activé pourtant).

Qu'est-ce qui cloche ?

Merci
à+ :D
 
Dernière édition:

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

De G2 à AL16, je ne peux pas saisir de "2". Je ne peux manuellement y mettre que des "1" et "N".

Comment remédier à ça sans remettre en cause le code par ailleurs ?

Merci
 

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

re,


ok, c'est l'onglet 'grille.


merci de votre aide.
 

Pièces jointes

  • PS_LF15b.xlsm
    202.2 KB · Affichages: 65
  • PS_LF15b.xlsm
    202.2 KB · Affichages: 76
  • PS_LF15b.xlsm
    202.2 KB · Affichages: 67

anthoYS

XLDnaute Barbatruc
Re : Loto Foot : Répartir aléatoirement en fonction du nombre de 1, N et 2 voulus

re,


Pardon mais c'est mon clavier numérique qui est passé dans un autre mode. Je n'arrive pas à le retrouver. J'ai beau appuyer sur "num lk scr lk" mais ça ne fait rien. Les touches 8, 4, 6 et 2 servent à se déplacer vers le haut, le bas, et sur les côtés. C'est bizarre...

savez-vous comment on retrouve le clavier numérique ?


Merci
 

Discussions similaires

O
Réponses
4
Affichages
3 K
P

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander