XL 2013 Créer tableur Excel

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:

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • Michel54000- combi à somme fixe- v1a.xlsm
    22.6 KB · Affichages: 31
  • Michel54000- combi à somme fixe- v1b.xlsm
    23.1 KB · Affichages: 33
Dernière édition:

Michel54000

XLDnaute Nouveau
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. ;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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.
 

mécano41

XLDnaute Accro
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
 

Discussions similaires

Réponses
15
Affichages
762
Compte Supprimé 979
C
Réponses
19
Affichages
784

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma