Voilà le code pour aller jusque 20 éléments en 5 caractères
attention il faut un laps de temps pour l'execution totale
Public Sub Combinaison5()
Dim intI1 As Integer, intI2 As Integer, intI3 As Integer
Dim intI4 As Integer, intI5 As Integer, intN As Integer
Dim strTab As String
strTab = UCase(InputBox("Saisissez les éléments : ", "Saisie", "ABCDEFGHIJKLMNOPQRST"))
col = 1
intI1 = 1
Do Until Cells(1, intI1).Value = ""
intI1 = intI1 + 1
Loop
Cells(1, intI1).Select
intN = Len(strTab)
ActiveCell.Value = strTab
For intI1 = 1 To intN
For intI2 = 1 To intN
If intI2 <> intI1 Then
For intI3 = 1 To intN
If intI3 <> intI1 And intI3 <> intI2 Then
If Len(strTab) = 3 Then
ActiveCell.Value = Mid(strTab, intI1, 1) & Mid(strTab, intI2, 1) & Mid(strTab, intI3, 1)
If ActiveCell.Row >= 50000 Then
col = col + 1
Cells(1, col).Select
End If
ActiveCell.Offset(1, 0).Select
Else
For intI4 = 1 To intN
If intI4 <> intI1 And intI4 <> intI2 And intI4 <> intI3 Then
If Len(strTab) > 4 Then
For intI5 = 1 To intN
If intI5 <> intI1 And intI5 <> intI2 And intI5 <> intI3 And intI5 <> intI4 Then
ActiveCell.Value = Mid(strTab, intI1, 1) & Mid(strTab, intI2, 1) & Mid(strTab, intI3, 1) _
& Mid(strTab, intI4, 1) & Mid(strTab, intI5, 1)
If ActiveCell.Row >= 50000 Then
col = col + 1
Cells(1, col).Select
End If
ActiveCell.Offset(1, 0).Select
End If
Next
Else
ActiveCell.Value = Mid(strTab, intI1, 1) & Mid(strTab, intI2, 1) & Mid(strTab, intI3, 1) & Mid(strTab, intI4, 1)
If ActiveCell.Row >= 50000 Then
col = col + 1
Cells(1, col).Select
End If
ActiveCell.Offset(1, 0).Select
End If
End If
Next
End If
End If
Next
End If
Next
Next
End Sub
Salutations
@+++++
RGI
__________________________
PS: VBA pour EXCEL est maintenant dans Bureautique
merci de poser vos questions VBA à cet endroit
salutations
RGI
Un MERCI en retour c'est sympa
et ne pas oublier le tag :après résolution.
En cherchent impeu sur le net j ai trouver ceci pour l'erreur #Nom$
Excel ne reconnaît pas le texte présent dans une formule.
• La macro complémentaire utilitaire d'analyse n'est pas chargée alors que la formule contient une fonction faisant partie de cette macro complémentaire.
• La formule intègre un nom de cellule ou de plage inexistant.
• La formule contient un nom de fonction ou de cellule mal orthographié.
• Vous avez oublié le double point dans la référence à une plage de cellules
Solutions
• Chargez la macro complémentaire Utilitaire d'analyse. Choisissez la commande Outils-Macros complémentaires et cochez l'option Utilitaire d'analyse.
• Encadrez par des guillemets le texte qui doit être affiché tel quel.
Par exemple : ="Somme : " & A5+A6.
• Dans l'adresse d'une plage, séparez par un double point l'adresse des cellules limites.
Par exemple : =SOMME(D5:D67).
J'ai fait le test chez moi en désactivent "l'utilitaire d'analyse " et ca ma donner l'erreur.Je l'ai ré activer , cela re fonctionne .
Aprés recherche du non fonctionnement sur sur la version 2007 je viens de trouver
il faut seulement revalider la fonction de départ dans le fichier X9 ou se trouve la fonction ayant besoin de ce complément et ça fonction comme sur la version 2003
Merci d'avoir éveillé ma curiosité
RGI
__________________________
PS: VBA pour EXCEL est maintenant dans Bureautique
merci de poser vos questions VBA à cet endroit
salutations
RGI
Un MERCI en retour c'est sympa
et ne pas oublier le tag :après résolution.
Merci a vous pour l intérêt que vous portez a mon projet.
Vous me dite que le programme "se heurte à la limite "Précision numérique 15 chiffres"" , cela veut il dire que ce je veut ne peut pas fonctionner avec excel?
D'autre part je me disais que vus la durée que cela prend ,je ferais peut etre mieux de m'orienter ver un programme en C ou C++ , D'apres vous??