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

Formule de "suites"

  • Initiateur de la discussion Initiateur de la discussion JJ1
  • Date de début Date de début

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 !

J

JJ1

Guest
Bonjour,

Dans mon exemple joint, je souhaiterais avoir en colonne AR 1 s'il n'y a pas 4 nombres à la suite ou deux fois 3 nombres par rapport à la référence en ligne1.

merci de votre aide car ce n'est pas simple.

Bonne soirée
 

Pièces jointes

Re : Formule de "suites"

Bonsoir JJ1,

Un essai (avec ce que j'en ai compris)

Une fonction vba Function Suite(xWhat As Range, xIn As Range, xTail As Long) As Long qui renvoie le nombre de suite de xWhat au sein de xIn, la suite étant de longueur xTail.

Le code:
Code:
Function Suite(xWhat As Range, xIn As Range, xTail As Long) As Long
Dim tWhat, tIn, i As Long, j As Long, k As Long

tWhat = xWhat.Value
tIn = xIn.Value
Suite = 0

For i = 1 To UBound(tWhat, 2) - xTail + 1
  For j = 1 To UBound(tIn, 2) - xTail + 1
    For k = 1 To xTail
      If tWhat(1, i + k - 1) <> tIn(1, j + k - 1) Then Exit For
    Next k
    If k = xTail + 1 Then
      Suite = Suite + 1
      j = j + xTail - 1
      i = i + xTail - 1
    End If
  Next j
Next i
End Function

La formule pour obtenir un 0 ou 1 est dans la cellule AR2 :
Code:
=SI(suite($Y2:$AG2;$AV$1:$BZ$1;4)>=1;0;SI(suite($Y2:$AG2;$AV$1:$BZ$1;3)=2;0;1))
 

Pièces jointes

Re : Formule de "suites"

Bonjour à tous,

Pour le fun, une autre version de la fonction Suite (Suite_bis), qui pour une taille N donnée de série ôte toutes les séries de taille supérieure à N avant de compter les séries de taille N ce que ne faisait pas la fonction Suite.

ex : si nous avons une série de 4 et une série disjointe de 3, Suite donnait une série de 4 et deux série de 3 alors que Serie_bis donnera une suite de 4 et une suite de 3 (voir ligne 10 des feuilles "Feuil1" et "Feuil2").

VB:
Function Suite_bis(xWhat As Range, xIn As Range, xTail As Long) As Long
' Nombre de suites de xtail après avoir ôté toutes les suites
' de taille supérieure

Dim tWhat, tIn, i As Long, j As Long, k As Long, n As Long, m As Long

tWhat = xWhat.Value
tIn = xIn.Value
If xTail < 1 Then Exit Function
Suite_bis = 0

' on ôte les suites de taille supérieure ou égale à xtail+1
For n = UBound(tWhat, 2) To xTail + 1 Step -1
  For i = 1 To UBound(tWhat, 2) - n + 1
    For j = 1 To UBound(tIn, 2) - n + 1
      For k = 1 To n
        If tWhat(1, i + k - 1) <> tIn(1, j + k - 1) Then Exit For
      Next k
      If k = n + 1 Then
        For m = i To i + n - 1
          tWhat(1, m) = Chr(135)
        Next m
        j = j + n - 1
        i = i + n - 1
      End If
    Next j
  Next i
Next n

' on calcule le nombre de suite de xTail
Suite_bis = 0
For i = 1 To UBound(tWhat, 2) - xTail + 1
  For j = 1 To UBound(tIn, 2) - xTail + 1
    For k = 1 To xTail
      If tWhat(1, i + k - 1) <> tIn(1, j + k - 1) Then Exit For
    Next k
    If k = xTail + 1 Then
      Suite_bis = Suite_bis + 1
      j = j + xTail - 1
      i = i + xTail - 1
    End If
  Next j
Next i
End Function
 

Pièces jointes

Dernière édition:
Re : Formule de "suites"

Bonjour Mapomme,

Encore merci à toi pour cette fonction pas simple du tout, je l'ai insérée dans un module: OK

Bonne soirée
ps: j'ai pris la première qui me convient bien, le but étant d'avoir le plus de nombres dispersés parmi les 9 dans la liste (et peu de suite).
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
760
Réponses
2
Affichages
283
Réponses
10
Affichages
395
Réponses
3
Affichages
315
Réponses
16
Affichages
933
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…