Vba: serie de nombre aleatoire entre bornes
Résolu/Fermé
LeMANIMAK
Messages postés
12
Date d'inscription
samedi 22 février 2020
Statut
Membre
Dernière intervention
5 juillet 2023
-
4 juil. 2023 à 16:43
LeMANIMAK Messages postés 12 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 5 juillet 2023 - 5 juil. 2023 à 16:35
LeMANIMAK Messages postés 12 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 5 juillet 2023 - 5 juil. 2023 à 16:35
A voir également:
- Vba: serie de nombre aleatoire entre bornes
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
3 réponses
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 424
4 juil. 2023 à 17:28
4 juil. 2023 à 17:28
Bonjour
Une solution pour éviter les doublons (il y en a d'autres)
https://www.cjoint.com/c/MGepBYrpyAB
Cdlmnt
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 424
5 juil. 2023 à 16:21
5 juil. 2023 à 16:21
Bonjour
Option Explicit Const celn = "$B$2" ' adresse cellule n Const celr = "$A$5" ' adresse première cellule résultat Public Sub ok() Dim k As Long, n As Long Dim t() ' tableau qui contiendra les entiers de 1 à n Dim a As Long, b As Long, c As Long Randomize ' récupération de n n = Range(celn).Value ' dimensionner t et ' remplissage de t avec les entiers de 1 à n ReDim t(1 To n) For k = 1 To n t(k) = k Next k ' on mélange t ' en permutant 3*n fois les lignes a et b de t ' on peut augmenter le nombre de ces permutations ' j'ai mis 3*n pour tester For k = 1 To 3 * n a = 1 + Int(n * Rnd) b = 1 + Int(n * Rnd) c = t(a): t(a) = t(b): t(b) = c Next k ' nettoyage de la plage A5:A10000 Range(celr).Resize(10000, 1).ClearContents ' redimensionner A5 en plage à n lignes et 1 colonne ' et copie de t (transposé : excel considère qu'un tableau ' à une dimension est à 1 ligne) Range(celr).Resize(n, 1) = Application.Transpose(t) End Sub
Cdlmnt
LeMANIMAK
Messages postés
12
Date d'inscription
samedi 22 février 2020
Statut
Membre
Dernière intervention
5 juillet 2023
5 juil. 2023 à 16:35
5 juil. 2023 à 16:35
Merci infiniment ccm81... je peux clore la discussion
5 juil. 2023 à 12:50
Bonjour ccm81. Solution idouane par contre est-il possible d'avoir des éclairages pour chaque ligne de code afin que je comprenne
Merci d'avance