VB Script : Générer toutes les combinaisons avec répétition
Résolu
Manudu44
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Manudu44 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Manudu44 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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
- Vb - Télécharger - Langages
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Vb cable - Télécharger - Audio & Musique
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)