créer une fonction personnalisée pour Excel

créer la fonction Nombres aléatoires distincts

description

Créer une fonction qui renvoie des nombres entiers relatifs aléatoires différents dans un intervalle donné.

Cette fonction peut être utile pour simuler des tirages simultanés.

exemples des résultats obtenus

Les étapes à suivre:

  1. Dans un classeur ouvert accéder à l'éditeur visual basic en appuyant sur Alt F11
  2. Insérer un module
  3. Saisir le code suivant:

    Function AleaEntiersDistinctsEntreBornes(BorneInf As Long, BorneSup As Long, Plage As Range)

    Dim i As Long
    Dim j As Long
    Dim NbIterationMaxi As Integer
    Dim nbValeurs As Long, nbLignes As Long, nbColonnes As Long
    Dim Tableau() As Long, Tableau2D() As Long

    Application.Volatile True
    Randomize
    nbLignes = Plage.Rows.Count
    nbColonnes = Plage.Columns.Count
    nbValeurs = nbLignes * nbColonnes
    BorneSup = BorneSup - BorneInf + 1
    If nbValeurs >= BorneSup + 1 Then End
    ReDim Tableau(1 To nbValeurs)
    Tableau(1) = Int(BorneSup * Rnd + BorneInf)
    For i = 2 To nbValeurs
    Tableau(i) = Int(BorneSup * Rnd + BorneInf)
    For j = 1 To i - 1
    If Tableau(i) = Tableau(j) Then
    NbIterationMaxi = NbIterationMaxi + 1
    j = 0
    Tableau(i) = Int(BorneSup * Rnd + BorneInf)
    End If
    If NbIterationMaxi = 100 Then
    Exit Function
    End If
    Next j
    NbIterationMaxi = 0
    Next i
    If nbColonnes = 1 Then
    AleaEntiersDistinctsEntreBornes = Application.Transpose(Tableau)
    Else
    If nbLignes = 1 Then
    AleaEntiersDistinctsEntreBornes = Tableau
    Else
    ReDim Tableau2D(1 To nbLignes, 1 To nbColonnes)
    For i = 1 To nbLignes
    For j = 1 To nbColonnes
    Tableau2D(i, j) = Tableau((i - 1) * nbColonnes + j)
    Next j
    Next i
    AleaEntiersDistinctsEntreBornes = Tableau2D
    End If
    End If

    End Function

  4. La fonction est disponible dans le classeur de la même manière qu'une fonction d'Excel.
  5. La fonction renvoie un tableau, ne pas oublier de la valider avec la combinaison des trois touches: Ctrl + Shift + Entrée
  6. Pour rendre la fonction disponible à tous les classeurs, il suffit de l'enregistrer en tant que macro complémentaire avec l'extension .xla.

Attention:

Un classeur enregistré en tant que complément doit contenir au moins une feuille. La feuille de module ne sera plus visible dans le complément pour modification.

télécharger

Le classeur AleaEntiersDistincts avec le code non protégé et quelques exemples (.zip 11 ko)

[ Accueil ]


Les documents présentés ne sont pas libres de droits. Vous pouvez les télécharger et diffuser (en indiquant la provenance) à condition de ne pas en faire un usage commercial.