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

manipulation de nombres

danval

XLDnaute Junior
Bonjour à tous,

Voilà je suis un passionné de roulette et j’essaye de mettre en place un fichier afin de pouvoir mesurer certaines sorties et d’analyser le jeu.
J’ai réalisé un fichier sous Excel qui fonctionne bien, mais le problème c’est qu’il est avec des formules et c’est la que ça ne va plus un temps de réaction de presque 8 second donc impossible à utiliser car après il y a encore une analyse à faire par rapport à d’autres choses.

je vous explique le fonctionnement:

1 - la case B23 est sélectionnée
2 - on entre un nombre grâce à la zone rouge en haut (cela fonctionne)
3 - décalage des nombres d’un cran vers le haut pour ainsi obtenir les cinq derniers nombres entre B18 et B22 (cela fonctionne)
4- décalage des calcul plus bas d’un cran vers le haut et calcul.

voici ce que je voudrais:

1 - prendre les nombres de N18 à Q22 (donc 20 nombres)
2 - supprimer les doublons et les 50.
3 - trier par ordre croissant ce qu’il reste.

pour l’analyse:

1 - afficher les nombres uniques manquant entre deux autres dans la liste restante (ex il y a le 22 et le 24 alors on affiche le 23)
2 - afficher aussi les nombres supérieur et inférieur manquant dans une suite (ex on a dans la liste 12 13 14 alors on affiche le 11 et le 15). pour le 0 on met le 36 (pas de -1) et pour le 36 on met le 0 (pas de 37)

L’affichage des ces nombres trouvés ce fait sur la ligne 22 à partir de la colonne S
quand on introduit un nombre en B23 alors les lignes montent d’un cran comme pour la colonne B (cf 4 dans le fonctionnement) cela se fera en même temps que l’introduction du nombre (je ferais cela comme l’autre avec des copies collées).

Voilà j’espère avoir était clair.
J’ai déjà fait cela en formule dans des cases, mais trop long en calcul alors si quelqu’un peut m’aider à le mettre dans une macro se serais vraiment top.
Je fais un tout petit peu de macros, mais là cela dépasse mes compétences.

je vous joins mon fichier il est sur wetransfer car trop lourd pour le forum



à l’avance merci,

Daniel
 

Paf

XLDnaute Barbatruc
Bonjour danval

Si j'ai bien compris (??), un essai macro évènementielle déclenchée à la saisie en colonne B (B17 et >) à copier dans la feuille de code de la feuille nommée Feuil2 (attention c'est la feuille de codename Feuil1 qui porte le nom Feuil2 !!!)

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 2 And Target.Row > 21 Then
    Dim Cel As Range, Plage As Range, Dico, Dico2, i As Byte, DerL As Integer, OK As Boolean, Tablo, Temp
    Set Dico = CreateObject("Scripting.Dictionary")
    Set Dico2 = CreateObject("Scripting.Dictionary")
    DerL = Target.Row
    Set Plage = Range("N" & DerL - 4 & ":Q" & DerL)
    For Each Cel In Plage
        If Cel <> 50 Then Dico2(CStr(Cel)) = ""
    Next
    For Each clé In Dico2.keys
        If Not Dico2.Exists(CStr(clé - 1)) Then Dico(CStr(clé - 1)) = ""
        If Not Dico2.Exists(CStr(clé + 1)) Then Dico(CStr(clé + 1)) = ""
    Next
    If Dico.Exists("-1") Then
        Dico.Remove ("-1")
        Dico("36") = ""
    End If
    If Dico.Exists("37") Then
        Dico.Remove ("37")
        Dico("0") = ""
    End If

    Tablo = Dico.keys
    While Not OK
        OK = True
        For i = LBound(Tablo) To UBound(Tablo) - 1
            If CInt(Tablo(i)) > CInt(Tablo(i + 1)) Then
                Temp = Tablo(i)
                Tablo(i) = Tablo(i + 1)
                Tablo(i + 1) = Temp
                OK = False
            End If
        Next
    Wend
    Cells(DerL, 18).Resize(1, Dico.Count) = Tablo
End If
End Sub

A+
 

danval

XLDnaute Junior
le problème c'est moi j'ai copier le code et j'aii du faire une fausse manip et il y avait une erreur dedans un bout parti.

mais bon le principale c'est que tu as fait un travail au top et je t'en remercie beaucoup.

Daniel
 

Discussions similaires

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