Possibilité de rendre ce code VBA plus compacte ? Bcp de lignes et peu d'actions

tweedi

XLDnaute Nouveau
Bonjour à toutes, bonjour à tous,

J'essaie de faire des petits exercice pour m'améliorer en VBA, j'ai fais une simulation de lancé de dé sur 6 colonnes, chaque colonne à 1000 lancés. Ensuite je souhaite compter le nombre de 1 dans les colonnes 1 à 6 (séparément), puis le nombre de 2 dans chaque colonne, de 3, de 4, ...

Ca fonctionne mais ça prend énormément de place et je me demande si on ne peut pas rendre ce code un peu moins encombrant.

Je met le fichier en PJ

Merci Beaucoup !

Tweedi
 

Pièces jointes

  • exercices.xlsx
    35.1 KB · Affichages: 18
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Possibilité de rendre ce code VBA plus compacte ? Bcp de lignes et peu d'actions

Bonjour tweedi

Petit exercice sur les tableaux

Code:
Sub test()
Randomize
tablo = Range("A1:F1000")
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 2) To UBound(tablo, 2)
    tablo(n, m) = Int(6 * Rnd + 1)
  Next
Next
Range("A1").Resize(1000, 6) = tablo
Dim tablo1(1 To 6, 1 To 6)
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 2) To UBound(tablo, 2)
    l = tablo(n, m)
    tablo1(m, l) = tablo1(m, l) + 1
  Next
Next
Range("K2").Resize(6, 6) = tablo1
End Sub
 

Pièces jointes

  • exercices.xlsm
    43.9 KB · Affichages: 19

Si...

XLDnaute Barbatruc
Re : Possibilité de rendre ce code VBA plus compacte ? Bcp de lignes et peu d'actions

salut

une toute autre façon : utiliser les formules passées en VBA

Code:
Option Explicit
Private Sub CommandButton1_Click()
  Dim L As Byte
  [A1:F1000].FormulaR1C1 = "=RANDBETWEEN(1,6)"
  [A1:F1000] = [A1:F1000].Value
  For L = 2 To 7
      Range("K" & L & ":P" & L).FormulaR1C1 = "=COUNTIF(C" & L - 1 & ",R1C)"
  Next
  [K2:P7] = [K2:P7].Value
End Sub
 

Pièces jointes

  • Formules en VBA.xlsm
    22.2 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
312 245
Messages
2 086 570
Membres
103 247
dernier inscrit
bottxok