XL 2013 Créer tableur Excel

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 !

Michel54000

XLDnaute Nouveau
Bonjour à tous,

Pour les besoins de ma boîte, j'aurais besoin de générer chaque mois une bonne centaine de codes à 4 chiffres.
J'ai commencé à le faire manuellement, mais c'est très fastidieux.

Ma question est la suivante: étant une buse avérée en macro, auriez-vous la gentillesse de me dépanner, svp? Ce serait formidable!

Merci d'avance pour vos retours.
 
Dernière édition:
Bonjour Michel54000, joss56,

Un essai dans le fichier joint (en VBA). Renseigner B1 et B2 puis Hop !

Le code est dans le module de la feuille "Feuil1" :

VB:
Sub Tirage1()
Dim i&, j&, k&, m&, t$(1 To 1000), nbOK&, SomCombi&, NbrCombi&, aux$

   SomCombi = Range("b1"): NbrCombi = Range("b2")
   ' stocker dans t tous les 4uplets à somme égale à SomCombi
   For i = 0 To 9
      For j = 0 To 9
         For k = 0 To 9
            For m = 0 To 9
               If i + j + k + m = SomCombi Then
                  nbOK = nbOK + 1
                  t(nbOK) = i & j & k & m
               End If
            Next m: Next k: Next j: Next i

   Range("d:d").ClearContents
   ' tirer NbrCombi au hasard et les afficher en colonne D
   If nbOK > 0 Then
      If nbOK < NbrCombi Then m = nbOK Else m = NbrCombi
      If m > 0 Then
         Randomize
         For i = 1 To m
            j = 1 + Int(Rnd * nbOK)
            aux = t(i): t(i) = t(j): t(j) = aux
         Next i
         Range("d1").Resize(m).NumberFormat = "@"
         Range("d1").Resize(m).HorizontalAlignment = xlRight
         Range("d1").Resize(m) = Application.Transpose(t)
      End If
   End If
End Sub

Edit : v1b avec possibilité de tri de la colonne résultat.
 

Pièces jointes

Dernière édition:
Tout d'abord, un grand bravo et un énorme merci car vous me faites tous gagner énormément de temps avec vos différentes propositions!
C'est amplement suffisant pour ce que j'ai besoin de faire, mais en comparant les résultats de mapomme et de mécano41, je me suis rendu compte qu'on obtenait davantage de résultats sur le tableur de mapomme car il intègre (je crois) la possibilité de double zéro avec comme code, par exemple: 0049, 0067, ayant pour clé le nombre 13.
Mais encore une fois, je suis plus que satisfait!

Bonne journée à vous tous. 😉
 
Bonjour à tous,

J'ai considéré qu'on devait obtenir des codes constitués de 4 chiffres de 0 à 9 tout comme un code de canedas à chiffres. De ce fait, je n'ai aucune contrainte que la somme imposée des quatre chiffres du code. La différence entre mécano 41 (que je salue 🙂) et ma macro est que j'autorise les codes commençant par 0, 00 ... Somme toute, c'est juste une question d'interprétation.
 
Salut,

Oui, il suffit d'ailleurs dans mon code de remplacer

Code:
For Nombre = 1000 To 9999  par   For Nombre = 1 To 9999

et de lancer le code, puis de rajouter les zéros nécessaires en tête lorsque le nombre a moins de 4 chiffres

On devrait obtenir la même chose

Cordialement
 
- 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

Discussions similaires

Réponses
8
Affichages
1 K
Réponses
4
Affichages
1 K
Retour