Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion aneessa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
448
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…