Formule excel

Résolu
Bonjour à tous!
En colonne A j'ai des nombres compris entre 001 et 999 .Exemple
584
10
592
401
etc.
Pour savoir les nombres qui manquent je dois trier et compter. Par exemple si 1 est suivi de 4 je saurai que c'est 2 et 3 qui manquent; mais cette démarche ne me semble pas pratique et ça me prend beaucoup de temps. Ainsi est ce que je pourrais avoir en colonne B une formule qui me permet d'afficher les nombres manquant en colonne A?
Cordialement.

3 réponses

  1. Contributeur
    Non ; ce n'est pas évident !
    Si tu expliquais le contexte, afin qu'on sache de quoi il s'agit, on pourrait te suggérer d'autres approches ...
  2. Contributeur
    Bonjour

    Les numéros de ta colonne A sont ils toujours regroupés et triés dans l'ordre croissant (ou décroissant) ?
    Pourquoi commencer par zéro alors que tu demandes entre 1 et 999 ?
     Michel
    1. bonjour,
      Ils sont triés dans l'ordre croissant ; C'est que je les ai extraites sur une base de donnée. Mais ce sont les no compris entre 001 à 999 qui m’intéresse. Excuse je devais les enlever.
    2. Contributeur
      @abn279avec une macro (durée instantanée): sur 30000 lignes ,bonjour par formules, qui + est apparemment matricielles !

      Option Explicit
      '-----------------------------------
      Sub numéros_manquants()
      Dim Derlig As Long, T_colA, T_colB, Cpta As Long, Cptb As Integer, Diff As Integer, Inc As Integer

      Application.ScreenUpdating = False
      Derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
      T_colA = Application.Transpose(Range("A2:A" & Derlig))
      Range("B2:B1000000").Clear
      ReDim T_colB(1 To UBound(T_colA))

      For Cpta = 2 To UBound(T_colA)
      If T_colA(Cpta) - T_colA(Cpta - 1) > 1 Then
      Diff = T_colA(Cpta) - T_colA(Cpta - 1)
      For Inc = 1 To Diff - 1
      Cptb = Cptb + 1
      T_colB(Cptb) = T_colA(Cpta - 1) + Inc
      Next
      End If
      Next
      Range("B2").Resize(UBound(T_colB), 1) = Application.Transpose(T_colB)
      End Sub


      ton classeur en retour
      http://www.cjoint.com/c/FChjNxLK2oN
    3. @michel_mmerci michel-m ça marche même si je ne sais comment car je ne connais pas grand chose en vba.
      encore merci !!
  3. Bonsoir à tous,

    de ce que j'ai compris :

    si tes données sont en $A$3:$A$1500 (je suppose qu'il y a des répétitions donc).
    si en $C$2 tu calcules le nombre de valeurs non trouvées avec la formule
    =999-SOMMEPROD(1/NB.SI($A$3:$A$1500;$A$3:$A$1500))


    alors, en $B$3 tu saisis :
    =SI(LIGNE()-2<=C$2;PETITE.VALEUR(SI(ESTERREUR(EQUIV(LIGNE($1:$999);$A$3:$A$1500;0));LIGNE($1:$999);9^9);LIGNE()-2);"")
    que tu valides par CTRL+MAJ+ENTER.
    tu recopies ensuite cette formule jusqu'en $B$1001 (pour le cas où tu aurais 999 valeurs manquantes)

    j'ai mis une cellule intermédiaire en $C$2 pour accélérer le calcul.

    cordialement