Répéter une macro sur plusieurs lignes

Résolu
Agroeco77 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Agroeco77 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai besoin d'aide! Je suis dbutant pour les macro vba sur excel. J'ai pu récupérer un code qui me permet d'afficher sur une ligne au hasard des numéro entre 1 et 6 sans répétition.
Je voudrais le faire pour 60 lignes par exemple. Ce doit être tout simle mais je ne vois pas comment faire!... Si qqun s'aurait m'aidé... Merci d'avance! :D

Voici le code :

Sub Aleatoire()
Dim plage As Range, cel As Range, alea As Double


Set plage = Range("A1:F1")
plage.Value = ""
If plage.Count > 6 Then Exit Sub
Randomize

For Each cel In plage
1     alea = WorksheetFunction.RandBetween(1, 6)
If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
Next

End Sub


Agroeco77

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Il te suffit de faire une boucle
    un truc du genre :
    Sub Aleatoire()
      Dim sh as WorkSheet
      Dim plage As Range, cel As Range, alea As Double
      Set Sh = ActiveSheet
      For l = 1 to 60
        Set plage = Sh.Range("A" & l & ":F" & l)
        plage.Value = ""
        If plage.Count > 6 Then Exit Sub
        Randomize
        For Each cel In plage
       1   alea = WorksheetFunction.RandBetween(1, 6)
          If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
        Next
      Next
    End Sub
    


    1
    1. Agroeco77 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour, merci bcp c'est exactement ça! (dsl de n'avoir pas posté au bon endroit).
      Très bonne journée,

      Agroeco77
      0
  2. julia Namor Messages postés 532 Statut Membre 33
     
    Bonjour
    comme ceci

    Sub Aleatoire()
    Dim plage As Range, cel As Range, alea As Double
    Application.ScreenUpdating = False

    Set plage = Range("A1:BF1")
    plage.Value = ""
    If plage.Count > 60 Then Exit Sub
    Randomize

    For Each cel In plage
    1 alea = WorksheetFunction.RandBetween(1, 60)
    If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
    Next
    Application.ScreenUpdating = True
    End Sub


    cdtl
    -1
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bonsoir,

      Il a demandé :

      afficher sur une ligne au hasard des numéro entre 1 et 6 sans répétition.
      Je voudrais le faire pour 60 lignes par exemple.

      Pas écrire des nombres aléatoire entre 1 et 60 sur 60 colonnes....
      0