VBA : Entrer un valeur non existante dans une variable

Afin de m'amélioré sur excel et VBA je méne quelques petits projets personnel en dehors de mon boulot.

En ce moment je bloque sur un détail:

J'ai une sélection de cellule (E4:E52). dans cette seléction seront compris des nombre entre 1 et 48 (les doublons ne sont pas génant à ce stade) mais certaine seront vide.
J'aimerais avec VBA remplir automatiquement toutes mes cellules vide avec la plus petites valeur entre 1 et 48 qui ne soit pas déjà utiliser dans cette selection.

J'utilise déjà la boucle for que je répéte 48 fois pour trouver mes cellules vides mais une fois trouver je ne sais pas comment repérer les valeurs déjà utilisé.

Je pense utilisé une autre boucle pour vérifier l'existence des valeurs en commençant par la valeur 1 mais je trouve cela un peu lourd. Existerait il pas des formules plus simple?

Merci.

Bonjour themmanuel,

Essaie peut-être cela :

Sub remplir()
    For i = 4 To 52
        If Cells(i, 5) = "" Then
            For nb = 1 To 48
                If Application.WorksheetFunction.CountIf(Range("E4:E52"), CStr(nb)) = 0 Then
                    Cells(i, 5) = nb
                    Exit For
                End If
            Next nb
        End If
    Next i
End Sub

Bonne soirée

bonjour,

basé sur l'idée de Patty5046

Sub remplir()
    pn = 1
    For i = 4 To 52
        If Cells(i, 5) = "" Then
            For nb = pn To 48
                If Application.WorksheetFunction.CountIf(Range("E4:E52"), CStr(nb)) = 0 Then
                    Cells(i, 5) = nb
                    pn = nb + 1
                    Exit For
                End If
            Next nb
        End If
    Next i
End Sub

Merci pour ses réponses.

Je vais tester tout ça et chercher aussi ce que font les fonctions que vous me proposez.
Si je dois les réutilisez autant les comprendre aussi .

Bonsoir

Note que dans la plage e4:e52 il y a 49 cellules.

En effet...

Vos propositions fonctionnent à merveille. Un grand merci. Cela me servira pour de prochain ligne de code.

Aprés quelques recherche, j'ai compris à quoi sert le "Application.WorksheetFunction.CountIf" que vous me proposez. J'ai aussi compris à quoi sert le CStr mais je ne comprends pas son utilité dans la ligne de code... Pourquoi vouloir changer la valeur de pn en texte?

J'ai essayé en enlevant cette fonction le CStr et cela fonctionne trés bien. Egalement.

Sinon merci. ça allége énormément mes lignes par rapport à ce que j'allais faire.

Rechercher des sujets similaires à "vba entrer valeur existante variable"