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

Souci de tableur avec chiffre aleatoire

CoOkii_

XLDnaute Junior
Bonjour a tous de complication en complication ainsi vont les tableurs

Vous trouverez ci-joint un expemple de tableur que je souhaite realiser avec les explication dessus mais la macro que j'execute actuellement n'est pas au point je ne parvient pas a lui faire comprendre ce que je veux donc je vous l'ai laissé tel que je l'ai trouvé a son depart merci bcp a son auteur et a ceux qui vont m'aider dans mon souci.
 

Pièces jointes

  • Classeur1.xls
    42.5 KB · Affichages: 91
  • Classeur1.xls
    42.5 KB · Affichages: 96
  • Classeur1.xls
    42.5 KB · Affichages: 94

Spitnolan08

XLDnaute Barbatruc
Re : Souci de tableur avec chiffre aleatoire

Re,
Je sais pas si tu as remarqué toi aussi mais pour une formule de chiffres aléatoires il y a une similitude flagrante entre chaque tirage
Similitude, forcément puisque tu n'as que 15 choix maxi par colonne et toujours les mêmes... Mais 2 tirages consécutifs ne sont jamais les mêmes. D'ailleurs, dans mon code, il y a tirage aléatoire des valeurs et des positions des vides. Ce dernier tirage est toutefois fortement contrebalancé par les autres contraintes que tu as fixées.
En effet entre les lignes 26 à 29 les numéros son ( inexistant )
Il doit manquer des mots...
Il y a toujours au moins un nombre entre les lignes 26 et 27. Il devrait pouvoir y en avoir 2 mais pas plus, compte tenu de toutes les autres contraintes à gérer. Ou alors il faut s'y prendre d'une façon totalement différente : C'est possible, mais je passe la main...
Par contre, tu as raison : la dernière valeur de chaque colonne est toujours la même Pour y remédier remplace
Code:
k = Lim
par
Code:
k = Lim + 1
Bon week-end
Cordialement

Edit : pas vu MJ13
Oui, penser à rajouter randomize avant le tirage (cela me rappelle le jeu trouvez les couleurs!).
Cela ne change rien, il suffit à mon avis de placer randomize en début de procédure comme je l'ai fait.
Edit2 : Sympa ton MasterMind Excel. Je ne l'avais pas vu à l'époque.
 
Dernière édition:

CoOkii_

XLDnaute Junior
Re : Souci de tableur avec chiffre aleatoire

Merci pour tous les conseils

Pour plus de choix dans la variation des emplacements un code aléatoire par colonne es ce possible ?
Comprenant comme contrainte:

Colonne A
de A1 A30
les cellules a ignoré fixe (A10 ; A15 ;A20 ;A25; A30)
chiffre aléatoire de 1 a 15

Avec çà je fais des c/c pour les autres colonnes et j'ai juste les variations de tranches de chiffres et le changement de colonne a faire.

En regardant les sujets j'ai trouvé quelqu'un qui voulait faire des cartons de loto mais hélas je n'ai pas eu la chance de trouver un code ..Le sujet a été traité par mail en non sur le forum (pas de bol) .
çà m'aurai beaucoup aidé a éditer mon code ou j'aurai tout simplement changé la forme de mon tableau pour adapté mon tableau au code ...

Si vous avez des suggestions n'hésitez pas a ma faire signe.

Cordialement
Co0kii_.
 

Spitnolan08

XLDnaute Barbatruc
Re : Souci de tableur avec chiffre aleatoire

Re,

C'est exactement ce que fait mon code... mais en prenant les bonnes tranches de nombre à chaque fois. Donc pas besoin de copier/coller

Cordialement
 

CoOkii_

XLDnaute Junior
Re : Souci de tableur avec chiffre aleatoire

re a tous voila j'ai ne solution au problème il faut tout simplement limiter le nombre de numéro a 9 par lignes

Par contre si je veux changer la forme de mon tableur ou le nombre de chiffre aléatoire comment je trouve les variable a modifier ??

J'ai du mal a trouver les paramètres de la macro :/

Merci d'avance

Cordialement .
Co0ki.
 

CoOkii_

XLDnaute Junior
Re : Souci de tableur avec chiffre aleatoire

Bonjour

En indiquant cette contrainte supplémentaire tu minimises le souci de la distribution des chiffres
Si on regarde les tableurs précédent on voit qu' il y a un manque de chiffre dans les cases du bas meme en indiquant le randomize

soit 8.7 par ligne ou plus précis 35 toutes les 4

Cordialement
Co0kii_
 

Spitnolan08

XLDnaute Barbatruc
Re : Souci de tableur avec chiffre aleatoire

Re,

Le manque de nombres dans les lignes du bas n'a rien à voir avec ça...
1/ Le remplissage se fait par colonne
2/ Tu veux que tes colonnes ne contiennent que des séries de 14 ou 15 nombres consécutifs
3/ Tu veux que tes colonnes contiennent au moins le même nombre que ci dessus
3/ Tu veux au moins un blanc par portion
4/ Tu veux au moins un nombre par portion
5/...
6/...

Ce sont toutes ces contraintes qui sont la raison de ce manque de chiffres. Pas le fait d'avoir 5, 9, 15 100 colonnes ni le randomize.

Cordialement
 

CoOkii_

XLDnaute Junior
Re : Souci de tableur avec chiffre aleatoire

Bonjour,

Voila avec la dernière version que tu m'as envoyé je suis bridé sur mes modifications de tableur.
je ne peux ni ignorer une colonne ou plusieur
ni choisir le nombre de chiffre
ni la forme du tableur

La macro fait presque tout ce que je souhaite mais je suis figé sur cette position .
J 'ai peu de connaissance en vba alors serait il possible que quelqu'un puisse a nouveau m'apporter de l aide que je puisse modifier celle ci selon mes besoins.

Cordialement .

Cooki__
 

Spitnolan08

XLDnaute Barbatruc
Re : Souci de tableur avec chiffre aleatoire

Bonsoir,
avec la dernière version que tu m'as envoyé je suis bridé sur mes modifications de tableur.
je ne peux ni ignorer une colonne ou plusieur
ni choisir le nombre de chiffre
ni la forme du tableur
Cela n'a jamais fait partie du cahier des charges. Mais en analysant le fonctionnement tu peux y arriver.
serait il possible que quelqu'un puisse a nouveau m'apporter de l aide que je puisse modifier celle ci selon mes besoins.
Je trouve ça un peu fort de café... C'est toi qui a fixé toutes les contraintes et je les ai respectées...
J'aimerais donc que tu ne sous entendes pas que je n'ai pas répondu à ta problématique ou que j'ai modifié tes souhaits

Ceci étant, je te (vous) donne toutes précisions utiles sur le code ci après pour que tu puisses (vous puissiez) le modifier pour l'adapter à tes NOUVEAUX besoins. Toutes les clés sont là...

Code:
Private Sub CommandButton1_Click()
[COLOR=Green] '****by SPITNOLAN08 pour Cookii sur XLD
'****Date : 09/05/2008
'****http://www.excel-downloads.com/forum/96340-souci-de-tableur-avec-chiffre-aleatoire.html[/COLOR]
Dim Liste As String
Dim i As Integer, j As Integer, r As Integer, q As Integer, k As Integer, Nb As Integer, Lim As Integer
Dim TxDispo As Double
Dim TabloVide(1 To 14, 0 To 7) [COLOR=Green]'***La 1ère dim (0) gère le nombre de vides déjà placés dans la colonne correspondant, les dim (1 à 6) comptabilisent le nombre de vides déjà placés par portion de colonne, la dim (7) compte le nombre de valeurs déjà placées par colonne[/COLOR]
Dim TabloValRest(1 To 14, 0 To 1) [COLOR=Green]'***La 1ère dim gère le nombre de valeurs restant à placer dans la colonne correspondant, la 2ème dim comptabilise le nombre de lignes restant à parcourir[/COLOR]
Randomize   [COLOR=Green]'***Initialise le générateur de nombre aléatoire[/COLOR]

Range("A1:N30").ClearContents
Nb = 0

For j = 1 To 14
    Lim = IIf(j = 1, 14, 15) [COLOR=Green]'***Détermine le nombre de valeurs de chaque colonne[/COLOR]
    Nb = Nb + Lim           [COLOR=Green] '***Détermine la valeur la plus élevée pouvant être inscrite dans une colonne[/COLOR]
    k = Lim + 1             [COLOR=Green] '***Initialise la variable de choix[/COLOR]
    TabloValRest(j, 0) = Lim '[COLOR=Green]***Initialisation du nombre de valeurs maximales[/COLOR] pouvant être saisies par colonne
    TabloValRest(j, 1) = 24  [COLOR=Green]'***Initialisation à 24 lignes potentielles du tableau à remplir[/COLOR]
    
    For i = Nb To Nb - Lim + 1 Step -1
        Liste = i & "." & Liste        [COLOR=Green]'***Définit la liste des valeurs pouvant être prises dans une colonne[/COLOR]
    Next

    For i = 1 To 30
        q = Int(i / 5) + 1    [COLOR=Green]'***Définit dans quelle portion de la colonne on se trouve[/COLOR]
        r = i Mod 5          [COLOR=Green] '***Définit sur quelle ligne de la portion de colonne on se trouve[/COLOR]
        If r <> 0 Then        [COLOR=Green]'***Ne renseigne pas les lignes qui sont un multiple de 5[/COLOR]
            vide = Int((4 * Rnd) + 1)  [COLOR=Green] '***Détermination aléatoire des vides dans chaque portion[/COLOR]
            TabloValRest(j, 1) = TabloValRest(j, 1) - 1  [COLOR=Green]'***Actualise le nombre de ligne restant à renseigner par colonne[/COLOR]
            TxDispo = (TabloValRest(j, 1) - (7 - q)) / IIf(TabloValRest(j, 0) = 0, -1, TabloValRest(j, 0))[COLOR=Green] '***Détermine le taux de disponibilité des lignes restantes en fonction du nombre de valeurs. Si ce taux est <= à 1 la ligne ne peut être vide
            '*** Le test suivant se décompose ainsi :
            '*** (Part1.1 and Part1.2)
            '*** Si Le tirage aléatoire de vide est égal à 1 et que le nombre total de vides de la colonne est inférieur à 9 alors ...
            '*** (Part1.1 and Part 1.2) or Part 1.3
            '*** Si ... ou La division du nombre de valeurs restant par le nombre de portions non encore remplies est inférieure à 1
            '*** ce qui signifie qu'il reste au maximum une valeur par portion à placer
            '*** Les conditions précédentes visent à placer des blancs
            '*** ((Part1.1 and Part 1.2) or Part 1.3) and Part 1.4
            '*** Cette dernière condition limite le placement de blanc. En effet si TxDispo >= 1 alors il faut obligatoirement une valeur dans la case actuelle.[/COLOR]
            If ((vide = 1 And TabloVide(j, 0) < 9 And TabloVide(j, q) < 3) Or TabloValRest(j, 0) / (7 - q) < 1) And TxDispo > 1 Then
                TabloVide(j, 0) = TabloVide(j, 0) + 1
                TabloVide(j, q) = TabloVide(j, q) + 1
            Else
                If TabloVide(j, 7) < Lim And (r < 4 Or TabloVide(j, q) > 0) Then
                    TabloVide(j, 7) = TabloVide(j, 7) + 1
                    TabloValRest(j, 0) = TabloValRest(j, 0) - 1
                    k = k - 1
                    MyValue = Int((k * Rnd) + 1)[COLOR=Green] '***Détermination aléatoire des valeurs parmi la liste autorisée[/COLOR]
                    Tablo = Split(Liste, ".")
                    Cells(i, j) = Tablo(MyValue - 1) [COLOR=Green]'***Transforme la liste en tableau à une dimension[/COLOR]
                    Liste = Replace(Liste, Tablo(MyValue - 1) & ".", "", 1, 1) [COLOR=Green]'***Met à jour la liste des valeurs autorisées[/COLOR]
                End If
            End If
        End If
    Next i

Next j

End Sub
Bon courage,
Cordialement

Nota : pour une lecture plus aisée, recopier le code dans un module.
 

CoOkii_

XLDnaute Junior
Re : Souci de tableur avec chiffre aleatoire

Bonjour

Merci pour les descriptif je vais essayer de le moduler néanmoins je demandé tant de regle car j'en avais besoin mais j'vais rien de fixé j'ai juste étendu au maximun le tableau ^^

Merci pour tout je vais travailler dur a présent pour comprendre

Cordialement
Co0kii__
 

Discussions similaires

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