j'ai besoin d'aide en VBA pour écrire une fonction

A

aneessa

Guest
Bonjour,

Je dois absolument écrire une fonction dans Excel en VBA et je n'ai jamais programmé en VBA.

ma fonction doit prendre en paramètre plusieurs chiffres, par exemple 1, 2, 3, 4 et 5 et doit me donner dans des colonnes différentes toutes les combinaisons possibles de ces chiffres:
1 2 3 4 5
1 2 3 5 4
1 2 4 5 3
1 2 4 3 5
etc....


SVP aidez moi.

Merci beaucoup
 

Staple1600

XLDnaute Barbatruc
Avec google: mot clé : vba permutation
Un exemple de ce que l'on trouve

Source:
http://vbfrance.com/code.aspx?ID=6725
VB:
'Auteur: Alain PROVISTE
Option Base 1 
  
Private Sub AnnaGramme(mot As String, ByRef tablo() As String) 
  
    Dim longueur As Byte 
    Dim i As Byte 
    Dim l As Double 
    Dim k As Byte 
    Dim j As Double 
    Dim motTab() As String * 1 
    Dim annaTab() As String 
    Dim tempmot As String 
    Dim temptab() As String 
    Dim lenTab As Double 
    Dim pos As Double 
    Dim Find As Boolean 
    
    longueur = Len(mot) 
     
    If longueur = 1 Then 
        ReDim tablo(1) 
        tablo(1) = mot 
        Exit Sub 
    End If 
     
    ReDim motTab(longueur) 
     
    For i = 1 To longueur 
         
        motTab(i) = Mid(mot, i, 1) 
         
    Next i 
     
    lenTab = Fac(longueur) 
     
    ReDim annaTab(lenTab) 
     
    For i = 1 To longueur 
         
        tempmot = vbNullString 
         
        Find = False 
         
        For k = 1 To longueur 
            If Find Then 
                tempmot = tempmot & motTab(k) 
            Else 
                If motTab(k) = motTab(i) Then 
                    Find = True 
                Else 
                    tempmot = tempmot & motTab(k) 
                End If 
            End If 
        Next k 
        If Len(tempmot) = 1 Then 
            ReDim temptab(1) 
            temptab(1) = tempmot 
        Else 
            Call AnnaGramme(tempmot, temptab()) 
        End If 
        For j = 1 To lenTab / longueur 
            For l = 1 To UBound(temptab()) 
                annaTab(l + pos) = motTab(i) & temptab(l) 
            Next l 
            DoEvents 
        Next j 
        pos = pos + lenTab / longueur 
    Next i 
    tablo() = annaTab() 
End Sub 
  
Private Function Fac(Number As Byte) As Double 
Dim i As Byte 
Dim a As Double 
    a = 1 
    For i = 1 To Number 
        a = a * i 
    Next i 
    Fac = a 
End Function
 
Dernière édition:

Hellboy

XLDnaute Accro
re Staple1600

Belle trouvaille !

Je crois que aneessa ( si je dis vrai quelle vise genre la lotterie), va avoir des doublons de combinaison. Mais si c'est pas le cas, je n'ai pas testé la macro, mais elle semble tout a fait ce que aneessa cherche.


a+
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 351
Membres
103 526
dernier inscrit
HEC