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

XL 2019 formule simple

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ferbank

XLDnaute Occasionnel
Bonjour; comment formuler une syntaxe du genre rechercher par cellule une serie de 2 n° sortis le plus frequemment , dans une colones definie et contenant tous les tirages du loto ou euromillon. dans une autre une colonne avec date.

Pour compliquer avec 3n° .

Par exemple les n° 41
Merci pour vos idées
 

Pièces jointes

Bonjour Ferbank, le forum,
Bonjour; comment formuler une syntaxe du genre rechercher par cellule une serie de 2 n° sortis le plus frequemment ,
Voyez si le fichier joint et ces 2 macros correspondent à ce que vous voulez :
VB:
Sub Frequence_max_2_numeros()
Dim dest As Range, d As Object, dd As Object, tablo, i&, s, ub%, j%, k%, x$, maxi&, a, b, resu$(), n&
Set dest = [F14] '1ère cellule de destination, à adapter
Set d = CreateObject("Scripting.Dictionary")
Set dd = CreateObject("Scripting.Dictionary")
tablo = [B14].CurrentRegion.Resize(, 3) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    s = Split(tablo(i, 3), "-")
    ub = UBound(s)
    For j = 0 To ub - 1
        If s(j) <> "" Then
            For k = j + 1 To ub
                If s(k) <> "" Then
                    x = s(j) & "-" & s(k)
                    d(x) = d(x) + 1 'comptage
                    dd(x) = dd(x) & "-" & tablo(i, 1) 'dates
                End If
            Next k
        End If
Next j, i
'---restitution---
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
If d.Count Then
    maxi = Application.Max(d.items)
    a = d.keys
    b = dd.items
    ReDim resu(1 To UBound(a) + 1, 1 To 2)
    For i = 0 To UBound(a)
        If d(a(i)) = maxi Then
            n = n + 1
            resu(n, 1) = a(i)
            resu(n, 2) = Mid(b(i), 2)
        End If
    Next i
    dest.Resize(n, 2) = resu
End If
dest.Offset(n).Resize(Rows.Count - n - dest.Row + 1, 2).ClearContents 'RAZ en dessous
dest(0) = "Fréquence max 2 numéros : " & maxi
End Sub

Sub Frequence_max_3_numeros()
Dim dest As Range, d As Object, dd As Object, tablo, i&, s, ub%, j%, k%, m%, x$, maxi&, a, b, resu$(), n&
Set dest = [F14] '1ère cellule de destination, à adapter
Set d = CreateObject("Scripting.Dictionary")
Set dd = CreateObject("Scripting.Dictionary")
tablo = [B14].CurrentRegion.Resize(, 3) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    s = Split(tablo(i, 3), "-")
    ub = UBound(s)
    For j = 0 To ub - 2
        If s(j) <> "" Then
            For k = j + 1 To ub - 1
                If s(k) <> "" Then
                    For m = k + 1 To ub
                        If s(m) <> "" Then
                            x = s(j) & "-" & s(k) & "-" & s(m)
                            d(x) = d(x) + 1 'comptage
                            dd(x) = dd(x) & "-" & tablo(i, 1) 'dates
                        End If
                    Next m
                End If
            Next k
        End If
Next j, i
'---restitution---
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
If d.Count Then
    maxi = Application.Max(d.items)
    a = d.keys
    b = dd.items
    ReDim resu(1 To UBound(a) + 1, 1 To 2)
    For i = 0 To UBound(a)
        If d(a(i)) = maxi Then
            n = n + 1
            resu(n, 1) = a(i)
            resu(n, 2) = Mid(b(i), 2)
        End If
    Next i
    dest.Resize(n, 2) = resu
End If
dest.Offset(n).Resize(Rows.Count - n - dest.Row + 1, 2).ClearContents 'RAZ en dessous
dest(0) = "Fréquence max 3 numéros : " & maxi
End Sub
Ces macros sont très rapides car elles utilisent des tableaux VBA et 2 Dictionary.

A+
 

Pièces jointes

Par exemple les n° 41
Je me suis demandé ce que vous vouliez dire, en fait c'est un numéro cible, voyez ce fichier (2) :
VB:
Sub Frequence_max_2_numeros()
Dim numcible$, dest As Range, d As Object, dd As Object, tablo, i&, s, ub%, j%, k%, x$, y$, maxi&, a, b, resu$(), n&
numcible = "*-" & IIf([J11] = "", "*", [J11]) & "-*" 'n° cible encadré + caractère générique *
Set dest = [F14] '1ère cellule de destination, à adapter
Set d = CreateObject("Scripting.Dictionary")
Set dd = CreateObject("Scripting.Dictionary")
tablo = [B14].CurrentRegion.Resize(, 3) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    s = Split(tablo(i, 3), "-")
    ub = UBound(s)
    For j = 0 To ub - 1
        If s(j) <> "" Then
            For k = j + 1 To ub
                If s(k) <> "" Then
                    x = s(j) & "-" & s(k)
                    y = "-" & x & "-" 'texte encadré
                    If y Like numcible Then
                        d(x) = d(x) + 1 'comptage
                        dd(x) = dd(x) & "-" & tablo(i, 1) 'dates
                    End If
                End If
            Next k
        End If
Next j, i
'---restitution---
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
If d.Count Then
    maxi = Application.Max(d.items)
    a = d.keys
    b = dd.items
    ReDim resu(1 To UBound(a) + 1, 1 To 2)
    For i = 0 To UBound(a)
        If d(a(i)) = maxi Then
            n = n + 1
            resu(n, 1) = a(i)
            resu(n, 2) = Mid(b(i), 2)
        End If
    Next i
    dest.Resize(n, 2) = resu
End If
dest.Offset(n).Resize(Rows.Count - n - dest.Row + 1, 2).ClearContents 'RAZ en dessous
dest(0) = "Fréquence max 2 numéros : " & maxi
End Sub

Sub Frequence_max_3_numeros()
Dim numcible$, dest As Range, d As Object, dd As Object, tablo, i&, s, ub%, j%, k%, m%, x$, y$, maxi&, a, b, resu$(), n&
numcible = "*-" & IIf([J11] = "", "*", [J11]) & "-*"  'n° cible encadré + caractère générique *
Set dest = [F14] '1ère cellule de destination, à adapter
Set d = CreateObject("Scripting.Dictionary")
Set dd = CreateObject("Scripting.Dictionary")
tablo = [B14].CurrentRegion.Resize(, 3) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    s = Split(tablo(i, 3), "-")
    ub = UBound(s)
    For j = 0 To ub - 2
        If s(j) <> "" Then
            For k = j + 1 To ub - 1
                If s(k) <> "" Then
                    For m = k + 1 To ub
                        If s(m) <> "" Then
                            x = s(j) & "-" & s(k) & "-" & s(m)
                            y = "-" & x & "-" 'texte encadré
                            If y Like numcible Then
                                d(x) = d(x) + 1 'comptage
                                dd(x) = dd(x) & "-" & tablo(i, 1) 'dates
                            End If
                        End If
                    Next m
                End If
            Next k
        End If
Next j, i
'---restitution---
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
If d.Count Then
    maxi = Application.Max(d.items)
    a = d.keys
    b = dd.items
    ReDim resu(1 To UBound(a) + 1, 1 To 2)
    For i = 0 To UBound(a)
        If d(a(i)) = maxi Then
            n = n + 1
            resu(n, 1) = a(i)
            resu(n, 2) = Mid(b(i), 2)
        End If
    Next i
    dest.Resize(n, 2) = resu
End If
dest.Offset(n).Resize(Rows.Count - n - dest.Row + 1, 2).ClearContents 'RAZ en dessous
dest(0) = "Fréquence max 3 numéros : " & maxi
End Sub
Quand J11 est vide on se retrouve dans le cas du fichier (1) du post #2.
 

Pièces jointes

Bonjour et grand merci pour votre aide, en fait je voulais connaitre les séries les plus sorties;
Serie à 2 ou 3 ou 4 n°
je joins le tableau modifié pour l'année 2022.
j'utilise en référence votre tableau que j'ai emménagé avec différentes formules de recherche pour les stats.
 

Pièces jointes

RE je vous joins le tableau que j'utilise pour mes stats n'hésitez pas à me demander le but des recherches.
C'est vous qui me l'avez conçu je l'ai simplement emménagé à mes besoins.
Quand j'incrémente un résultât dans les colonnes Cà K: les tirages recopiés dans les feuilles de STAT Triplets le pc met un certain temps à recalculer pourquoi?
Voilà mon tableau et j'en suis fortement reconnaissant de me l'avoir conçu en VB.

 
Concernant le post #5 et votre fichier :
Quand j'incrémente un résultât dans les colonnes Cà K: les tirages recopiés dans les feuilles de STAT Triplets le pc met un certain temps à recalculer pourquoi?
Parce qu'il y a des formules qui se recalculent dans la feuille mais c'est quand même assez rapide.

Par contre la macro Workshet_Change dans la 1ère feuille prend trop de temps.

Quand je modifie la cellule T11 l'exécution se fait chez moi en 8,6 secondes.

Pour y remédier il faut passer en calcul manuel avec les Application.Calculation, donc utilisez :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Recherche As Range, NC As Range, P As Range, Dates As Range, Complement As Range, R As Range, c As Range, Q As Range
Set Recherche = [T11:X11]
Set NC = [Y11] 'recherche du numéro complémentaire
Set P = [E:I]
Set Dates = [D:D]
Set Complement = [J:J]
If Intersect(Target, Union(Recherche, NC)) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual 'mode de calcul manuel
On Error Resume Next 'si aucune SpecialCell
'Recherche.Offset(1).Resize(Rows.Count - Recherche.Row, Recherche.Columns.Count + 2).Delete xlUp 'RAZ
Recherche.Offset(1).Resize(Rows.Count - Recherche.Row, Recherche.Columns.Count + 2).ClearContents 'RAZ

If NC = "" Then
    Set R = P
Else
    Complement.Replace NC, "#N/A", xlWhole
    Set R = Complement.SpecialCells(xlCellTypeConstants, 16)
    If R Is Nothing Then GoTo 1
    R = NC
    Set R = Intersect(R.EntireRow, P)
End If
For Each c In Recherche
    If c <> "" Then
        P.Replace c, "#N/A", xlWhole
        Set Q = Nothing
        Set Q = P.SpecialCells(xlCellTypeConstants, 16)
        If Q Is Nothing Then GoTo 1
        Q = c
        Set Q = Intersect(Q.EntireRow, P)
        Set R = Intersect(Q, R)
    End If
Next
'---résultat---
R.Copy Recherche(2, 1)
Intersect(R.EntireRow, Complement).Copy NC(2)
Intersect(R.EntireRow, Dates).Copy NC(2, 2)
1 Application.Calculation = xlCalculationAutomatic 'rétablit le calcul automatique
End Sub
Maintenant l'exécution se fait chez moi en 1,2 seconde.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
55
Affichages
1 K
Réponses
10
Affichages
244
Réponses
2
Affichages
360
Réponses
10
Affichages
655
Réponses
4
Affichages
183
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…