Aléatoire avec condition

  • Initiateur de la discussion Initiateur de la discussion Roseline
  • Date de début Date de début

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 !

Roseline

XLDnaute Occasionnel
Bonjour,
J'ai besoin d'aide concernant mon fichier. Si j'inscrit un chiffre dans la colonne C, par exemple 32, je désire que ma commande vba me sorte 32 chiffres aléatoire dans la colonne B. Également si dans ma colonne D, le chiffre est 1020, je veux que ma commande me donne 32 chiffres aléatoire compris entre 0 et 1020. Merci de votre aide
 
Bonjour,

En Vba par exemple,
VB:
Sub tirage()
Dim i As Long, Dlig As Long, Vmax As Long
Application.ScreenUpdating = False
With ActiveSheet

'Effacement des valeurs existantes
    Dlig = .Range("B" & Rows.Count).End(xlUp).Row
    .Range("B2:B" & Dlig).ClearContents
 
' Génération des nombres aléatoires
    Vmax = .Range("D1").Value
    For i = 1 To .Range("C1").Value
        .Range("B" & i + 1) = Application.WorksheetFunction.RandBetween(0, Vmax)
    Next i
End With
Application.ScreenUpdating = True
End Sub

Edit : Bonjour Dranreb, évidemment, nous ne jouons pas dans la même cour
 
Dernière édition:
Bonjour.
Voyez si ça convient.

Édition: Bonjour Gardien de phare
Bonjour Dranreb, c'est exactement ce que je cherchais à faire et tu me sauves énormément de travail. Il me resterait seulement une petite chose, si tu regardes mon fichier, mon nombre de ligne aléatoire correspond au chiffre que j'indique dans la cellule B4. Est-ce qu'il est possible que les colonnes C et E donne le même nombre que la colonne D.
 
Comme ça :
VB:
Sub GenereSerieAleatoireSansDoublons()
Dim LA As New Classe1, T(1 To 100000, 1 To 1), LMax As Long, L As Long
LA.Init ActiveSheet.[B3].Value + 1
LMax = ActiveSheet.[B4].Value
For L = 1 To LMax: T(L, 1) = LA.Aléat(L) - 1: Next L
ActiveSheet.[C6].Resize(100001, 3).ClearContents
ActiveSheet.[C6].Resize(LMax).FormulaR1C1 = "=IF(R2C2,R2C3,"""")"
ActiveSheet.[D6].Resize(LMax).Value = T
ActiveSheet.[E6].Resize(LMax).FormulaR1C1 = "=RC3&""-""&TEXT(RC4,""00000"")"
End Sub
Il m'aurait été agréable que le nom du type d'objet ListeAléat ne soit pas changé en Classe1.
 
Dernière édition:
Comme ça :
VB:
Sub GenereSerieAleatoireSansDoublons()
Dim LA As New Classe1, T(1 To 100000, 1 To 1), LMax As Long, L As Long
LA.Init ActiveSheet.[B3].Value + 1
LMax = ActiveSheet.[B4].Value
For L = 1 To LMax: T(L, 1) = LA.Aléat(L) - 1: Next L
ActiveSheet.[C6].Resize(100001, 3).ClearContents
ActiveSheet.[C6].Resize(LMax).FormulaR1C1 = "=IF(R2C2,R2C3,"""")"
ActiveSheet.[D6].Resize(LMax).Value = T
ActiveSheet.[E6].Resize(LMax).FormulaR1C1 = "=RC3&""-""&TEXT(RC4,""00000"")"
End Sub
Il m'aurait été agréable que le nom du type d'objet ListeAléat ne soit pas changé en Classe1.
 
Merci beaucoup Dranreb, ta formule est magique c'est en plein ce qui me manquait. Un dernier point que je comprend pas c'est qui si je demande par exemple 20 lignes aléatoire, elle m'en met toujours une vide au travers? as-tu une idée de la raison.
Désolée également d'avoir changer le tout pour classe1.
Merci encore de ton aide aussi rapide.
 
Je n'ai pas constaté ce phénomène chez moi.
En revanche je n'ai rien fait pour les formats de cellules.
Peur être qu'en mettant sous forme de tableau ça irait mieux…
Rebonjour Dranreb,
J'ai besoin de ton aide concernant mon fichier avec la commande aléatoire. Si en B2 je me 2500 et que je fais activer aléatoire, elle me sort 24 lignes, jusque là tout va bien. Quand je met 1000 par exemple en B2 et bien là elle me sort des zéro sur les lignes que je n'ai pas besoin. Je sais que tu auras la solution que moi je ne vois pas du tout. Merci
 
- 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
5
Affichages
546
Réponses
15
Affichages
743
Réponses
6
Affichages
295
Retour