VBA : Liste, trouver le plus petit élément manquant

vsan

XLDnaute Junior
Bonjour à tous,

Je cherche à trouver le plus petit élément manquant dans une liste afin d'attribuer les numéros vides!
Je m'explique, dans la liste suivante, la macro doit me répondre 2 :
  • 1
  • 3
  • 4
  • 5

Dans la suivante, c'est 4, puisque les premiers numéros sont complets...
  • 1
  • 2
  • 3

Auriez-vous des pistes pour m'aider? parce que je sèche lamentablement...
 

PrinceCorwin

XLDnaute Occasionnel
Re : VBA : Liste, trouver le plus petit élément manquant

Bonjour,

Une solution a adapter à ta situation
VB:
Function ValeurManquante(ByVal target As Range) As Integer
Dim i As Integer
i = target.Count
For p = 2 To i
    If Cells(p + 1, 1) - Cells(p, 1) > 1 Then
        temp = Cells(p, 1) + 1
        ValeurManquante = temp
        Exit Function
    End If
Next
temp = Cells(1 + i, 1) + 1
ValeurManquante = temp
End Function

Selectionne la plage de cellules pour lesquelles il faut regarder la plus petite valeur manquante.
Code:
=ValeurManquante(A2:A5)
Bonne journée
 

Habitude

XLDnaute Accro
Re : VBA : Liste, trouver le plus petit élément manquant

Bonjour à vous 2

Sur le même principe, sauf que les valeurs n'ont pas besoin d'être dans l'ordre

VB:
Function ProchaineValeur(r)
    Do: ProchaineValeur = ProchaineValeur + 1: Loop Until r.Find(ProchaineValeur, , xlValues, xlWhole) Is Nothing
End Function
Code:
=ProchaineValeur($A$1:A4)
 

Pièces jointes

  • ProchaineValeur.xlsm
    12.7 KB · Affichages: 58
Dernière édition:

vsan

XLDnaute Junior
Re : VBA : Liste, trouver le plus petit élément manquant

Re-Bonjour le Forum !

Je souhaiterai déjà vous remercier pour la fonction "prochaine valeur" qui fonctionne super.
Mon fichier ayant évolué depuis, je souhaiterai complexifier la fonction.
Dans le sens ou je souhaiterai que les prochaines valeurs soient indicées en fonction de la colonne précédente.

Dans l'exemple ci dessous, j'ai dans la colonne A, un type de fichier. Dans la colonne B le numéro du fichier correspondant.
Ce que je souhaite, c'est à partir de "prochaine valeur", réussir à combiner la recherche selon le type et la génération de la prochaine valeur vide pour ce type...
Les 3 valeurs en bleu sont par exemple les valeurs attendues lorsqu'on demande un nouveau fichier de type_A, _B ou _C.

Merci de votre aide.

Type_A -- 1
Type_B -- 1
Type_C -- 1
Type_A -- 2
Type_A -- 4
Type_C -- 32
Type_B -- 3
Type_B -- 4
Type_A -- 3
Type_B -- 2
Type_C -- 2

Pour l'instant ma macro utilise ce code :
Code:
'On identifie la dernière ligne vide en partant du bas
L = WS.Range("A65536").End(xlUp).Row + 1

With WS
'ici on calcule le numéro de la fiche
Cells(L, 6).Select
numero = WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(L, 5)), ComboBox0.Value) + 1
TextBox2.Value = Format(numero, "000")
'MsgBox numero      'Vérification, utile seulement en cas de vérification lors débuggage
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
230

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa