Premier entier manquant dans la suite des entiers naturels croissante

Slyces

XLDnaute Nouveau
Bonjour,
Pour les besoin d'un atelier de recherche mathématiques, Maths en Jeans, je voudrais créer sur excel une formule qui puisse, en une seule cellule (c'est important) faire les choses suivant :

Chercher dans deux collections de valeurs différentes, soit toutes les cellules de la même colonnes mais situées au dessus de celle où se situe la formule, et toutes les cellules de la même ligne mais situées à gauche de la cellule où se situe la formule.

Donc, dans ces deux collections, où les valeurs sont dans un ordre aléatoire et parfois en doublon, je dois trouver le premier entier manquant dans la suite des entiers naturels croissante : (un exemple)

J'ai les valeurs 0 1 4 6 7 9 8 0 4 80 38 39 89 3 9 ; Le premier entier manquant, dans l'ordre "0,1,2,3,4,5 ..." est ici 2.

Je n'ai pas réussi à résoudre ce problème avec mes propres connaissances, car je ne peux pas passer par d'autres cellules pour faire ma fonction en plusieurs fois (en effet, je dois étendre cette formule sur tout un tableau).

J'ai bien eu l'idée de faire des SI imbriqués (Je compte le nombre de 0, s'il n'y en a pas je l'affiche, sinon je compte les 1 ...) mais c'est très vite limité par le nombre d'imbrications et la lenteur d'écriture de la fonction.

En espérant que vous pourrez m'aider, ci dessous, un exemple du tableau auquel je veux parvenir (Ne vous occupez pas des deux premières colonnes et lignes, elles ne sont pas créées par la formule que je cherche), ainsi qu'un lien d'une discussion plus ou moins ressemblante mais où les solutions ne sont pas expliquées étapes par étapes et je ne peux pas les adapter.

https://www.excel-downloads.com/thr...s-manquants-dans-une-suite-excel-2007.161608/
 

Pièces jointes

  • Premier entier manquant.xlsx
    264.7 KB · Affichages: 33
Dernière édition:

job75

XLDnaute Barbatruc
Re : Premier entier manquant dans la suite des entiers naturels croissante

Re,

Ceci est plus logique et un peu plus rapide => 0,011 seconde :

Code:
Function PEM(P1, P2) 'Premier Entier Manquant
Dim ub1&, ub2&, a() As Boolean, t
Application.Volatile 'uniquement pour tester la durée
ub1 = P1.Count: ub2 = P2.Count
If ub1 > 1 Then P1 = P1 'matrice plus rapide
If ub2 > 1 Then P2 = P2 'matrice plus rapide
ReDim a(ub1 + ub2) 'base 0
On Error Resume Next 'si t > ub1 + ub2
For Each t In P1
  a(t) = True
Next
For Each t In P2
  a(t) = True
Next
For PEM = 0 To ub1 + ub2
  If Not a(PEM) Then Exit Function
Next
End Function
Fichier (3).

A+
 

Pièces jointes

  • Premier entier manquant(3).xls
    273 KB · Affichages: 24
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki