Formule affichant écart en cellules entre deux cellules d' une même colonne

Henriett

XLDnaute Occasionnel
Bonjour,

Je cherche une formule ou macro affichant le nombre minimum de cellules comprises entre deux cellules ayant le même contenu et étant dans une colonne identique. J' ai joint un fichier expliquant un peu plus clairement mon problème.

Cordialement,
 

Pièces jointes

  • Classeur1.xls
    31 KB · Affichages: 121
  • Classeur1.xls
    31 KB · Affichages: 122
  • Classeur1.xls
    31 KB · Affichages: 120
Dernière édition:

Henriett

XLDnaute Occasionnel
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Bonsoir,

Ce que je cherche, c' est une formule qui donne le nombre ( minimum ) de cellules comprises entre deux cellules. Ces deux cellules sont dans la même colonne et contiennent le même chiffre.

Voici un autre fichier ci-joint.

Cordialement,
 

Pièces jointes

  • Classeur3.xls
    34.5 KB · Affichages: 84
  • Classeur3.xls
    34.5 KB · Affichages: 82
  • Classeur3.xls
    34.5 KB · Affichages: 76

job75

XLDnaute Barbatruc
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Bonjour Henriett, tbft,

Voyez cette fonction macro dans Module1 (Alt+F11) :

Code:
Function ECARTMIN(x As Variant, p As Variant) As Variant
Dim ub As Long, i As Long, j As Long
ECARTMIN = ""
p = Application.Transpose(p) 'matrice, plus rapide
ub = UBound(p)
For i = 1 To ub
  If p(i) = x Then
    For j = i + 1 To ub
      If p(j) = x Then
        ECARTMIN = Application.Min(IIf(ECARTMIN = "", j - i - 1, ECARTMIN), j - i - 1)
        i = j - 1
        Exit For
      End If
    Next
  End If
Next
End Function
Utilisée dans cette formule en D1 à tirer vers le bas :

Code:
=ECARTMIN(A1;A$1:A$16)
Fichier joint.

A+
 

Pièces jointes

  • ECARTMIN(1).xls
    39 KB · Affichages: 95
Dernière édition:

job75

XLDnaute Barbatruc
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Bonjour le fil, le forum,

Une autre manière de faire avec 2 tableaux auxiliaires t1 et t2 :

Code:
Function ECARTMIN(x As Variant, p As Variant) As Variant
Dim ub&, t1&(), t2() As Variant, i&, n&
ECARTMIN = ""
p = Application.Transpose(p) 'matrice, plus rapide
ub = UBound(p)
ReDim t1(ub - 1): ReDim t2(ub - 1)
For i = 1 To ub
  If p(i) = x Then
    t1(n) = i
    If n Then t2(n - 1) = i - t1(n - 1) - 1
    n = n + 1
  End If
Next
If n > 1 Then ECARTMIN = Application.Min(t2)
End Function
Peut-être est-ce plus rapide.

Fichier (2).

A+
 

Pièces jointes

  • ECARTMIN(2).xls
    45 KB · Affichages: 68

job75

XLDnaute Barbatruc
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Re,

J'ai testé les 2 fonctions avec une boucle de 100 000 itérations :

- version (1) => 16 secondes

- version (2) => 12 secondes

Donc avec les tableaux c'est plus rapide.

A+
 

Henriett

XLDnaute Occasionnel
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Bonjour,

JBOBO, j' ai essayé ta formule, mais ça n' a pas l' air de marcher.

Job75, j' ai testé ta formule dans une nouvelle feuille et avec de nouveaux chiffres, mais il s' affiche : ?NOM#
J' ai joint le fichier.

Cordialement,
 

Pièces jointes

  • ECARTMIN Henriett.xls
    24.5 KB · Affichages: 78

job75

XLDnaute Barbatruc
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Re,

Allons Henriett, s'il n'y a pas le code VBA, comment voulez-vous que ça marche ???

Votre fichier complété avec la version (2) de la macro dans Module1 (Alt+F11).

A+
 

Pièces jointes

  • ECARTMIN Henriett(1).xls
    33.5 KB · Affichages: 80

Henriett

XLDnaute Occasionnel
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Bonjour,

Voici un autre fichier expliquant ce que j' aimerais obtenir.
 

Pièces jointes

  • Classeur4.xls
    36.5 KB · Affichages: 83
  • Classeur4.xls
    36.5 KB · Affichages: 85
  • Classeur4.xls
    36.5 KB · Affichages: 90

job75

XLDnaute Barbatruc
Re : Formule affichant écart en cellules entre deux cellules d' une même colonne

Bonjour Henriett,

Là pas besoin de VBA, formule en D1 :

Code:
=SI(NB.SI(A2:A$21;A1);EQUIV(A1;A2:A$21;0)-1;"")
à tirer vers le bas.

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 771
Membres
103 662
dernier inscrit
rterterert