VB Script : Générer toutes les combinaisons avec répétition
Résolu
Manudu44
Messages postés
2
Statut
Membre
-
Manudu44 Messages postés 2 Statut Membre -
Manudu44 Messages postés 2 Statut Membre -
L'objectif est de coder un script, sauvegardé au format .vbs, qui est capable d'énumérer toutes les combinaisons avec répétition d'une liste de caractères, en pouvant choisir la longueur des combinaisons.
Le résultat doit pouvoir être exploité sans le sauvegarder dans un fichier log.txt, afin, par exemple, de créer des dossiers qui serviront à ranger des documents (dans ce cas là, il est conseillé que la liste de caractère ne soit pas volumineuse).
Le résultat doit pouvoir être exploité sans le sauvegarder dans un fichier log.txt, afin, par exemple, de créer des dossiers qui serviront à ranger des documents (dans ce cas là, il est conseillé que la liste de caractère ne soit pas volumineuse).
A voir également:
- VB Script : Générer toutes les combinaisons avec répétition
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Vb - Télécharger - Langages
- Script cmd - Guide
1 réponse
Sujet résolu !
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
txt_File_Location = fso.GetParentFolderName(wscript.ScriptFullName) + "\Permutations avec répétition.txt" 'Emplacement du fichier .txt de sauvegarde des résultat
If fso.FileExists(txt_File_Location) Then fso.DeleteFile txt_File_Location 'S'il existe déjà, le supprimer pour vider la liste de résultat
Set txt_File = fso.OpenTextFile(txt_file_location, ForWriting, true)
Longueur = InputBox("Entrez la longueur du résultat" + vbNewLine + vbNewLine + "Pour des raisons de code et de temps de calcul, vous êtes limité à 10 caratères." + vbNewLine + vbNewLine + vbNewLine + "Les caractères en trop seront tout simplement ignorés des opérations", "Entrée de la longueur du résultat", "3")
If Longueur = "" OR Longueur = "0" Then Erreur = WshShell.Popup("Veuillez entrer une valeur au dessus de 0", 5, "ERROR", 0 + 64) : WScript.Quit 'Si la variable n'a pas de valeur, quitter
Elements = Trim(InputBox("Entrez vos éléments, séparés par des virgules" + vbNewLine + vbNewLine + "Pour des raisons de code et de temps de calcul, vous êtes limité à 10 éléments." + vbNewLine + vbNewLine + vbNewLine + "Les éléments en trop seront tout simplement ignorés des opérations", "Entrée des éléments", "A, B, C"))
If Elements = "" Then Erreur = WshShell.Popup("Veuillez entrer une liste d'éléments" + vbNewLine + "comportant entre 1 et 10 caractères", 5, "ERROR", 0 + 64) : WScript.Quit 'Si la variable n'a pas de valeur, quitter
Elements = Replace(Elements, " ", "")
Cut = Split(Elements, ",")
If Len(Elements) = 1 Then txt_File.WriteLine Cut(0) : WScript.Quit 'S'il n'y a qu'un élément, l'écrire et quitter
Chaine = Cut(0) + Cut (0) + Cut (0) + Cut (0) + Cut (0) + Cut (0) + Cut (0) + Cut (0) + Cut (0) + Cut (0)
Chaine = Left(Chaine, Longueur)
For i = 1 to (UBound(Cut) + 1) ^ Longueur
txt_File.WriteLine Chaine 'Ecrire le résultat
If Left(Chaine, 1) = Cut(UBound(Cut)) Then
Number_Left_1 = 0
If Mid(Chaine, 2, 1) = Cut(UBound(Cut)) Then
Number_Left_2 = 0
If Mid(Chaine, 3, 1) = Cut(UBound(Cut)) Then
Number_Left_3 = 0
If Mid(Chaine, 4, 1) = Cut(UBound(Cut)) Then
Number_Left_4 = 0
If Mid(Chaine, 5, 1) = Cut(UBound(Cut)) Then
Number_Left_5 = 0
If Mid(Chaine, 6, 1) = Cut(UBound(Cut)) Then
Number_Left_6 = 0
If Mid(Chaine, 7, 1) = Cut(UBound(Cut)) Then
Number_Left_7 = 0
If Mid(Chaine, 8, 1) = Cut(UBound(Cut)) Then
Number_Left_8 = 0
If Mid(Chaine, 9, 1) = Cut(UBound(Cut)) Then
Number_Left_9 = 0
If Mid(Chaine, 10, 1) = Cut(UBound(Cut)) Then
Number_Left_10 = 0
Else
Number_Left_10 = Number_Left_10 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_9 = Number_Left_9 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_8 = Number_Left_8 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_7 = Number_Left_7 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_6 = Number_Left_6 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_5 = Number_Left_5 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_4 = Number_Left_4 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_3 = Number_Left_3 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_2 = Number_Left_2 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Else
Number_Left_1 = Number_Left_1 + 1
Chaine = Cut(Number_Left_1) + Cut (Number_Left_2) + Cut (Number_Left_3) + Cut (Number_Left_4) + Cut (Number_Left_5) + Cut (Number_Left_6) + Cut (Number_Left_7) + Cut (Number_Left_8) + Cut (Number_Left_9) + Cut (Number_Left_10)
Chaine = Left(Chaine, Longueur)
End If
Next
Fin = WshShell.Popup("Fin des opérations", 5, "Traitement", 0 + 64)