Macro pour attribuer des codes aléatoires
Résolu/Fermé
ADBJ
Messages postés
11
Date d'inscription
dimanche 14 août 2016
Statut
Membre
Dernière intervention
21 octobre 2016
-
14 sept. 2016 à 15:31
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 16 sept. 2016 à 11:14
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 16 sept. 2016 à 11:14
A voir également:
- Macro pour attribuer des codes aléatoires
- Codes ascii - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Codes secrets pour débloquer tous téléphones mobiles - Guide
- Macro logiciel - Télécharger - Organisation
5 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 sept. 2016 à 16:37
14 sept. 2016 à 16:37
Bonjour
une autre manière (VBA aussi)
http://www.cjoint.com/c/FIooKcywJvJ
une autre manière (VBA aussi)
http://www.cjoint.com/c/FIooKcywJvJ
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
Modifié par ccm81 le 14/09/2016 à 17:06
Modifié par ccm81 le 14/09/2016 à 17:06
Bonjour à tous les deux
Un exemple
http://www.cjoint.com/c/FIopcR4XzUq
Zut, entre temps michel est arrivé ;-)
donc bonjour à tous les trois
Cdlmnt
Un exemple
http://www.cjoint.com/c/FIopcR4XzUq
Zut, entre temps michel est arrivé ;-)
donc bonjour à tous les trois
Cdlmnt
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
14 sept. 2016 à 20:21
14 sept. 2016 à 20:21
et pour gagner quelques centièmes de seconde
Bonne soirée
Option Explicit
Const cocas = "A"
Const cocod = "B"
Const lideb = 2
Const codmaxi = 9999
Const codmini = 1000
Const nbres = 100
Public Sub OK()
Dim t(), k1 As Long, k2 As Long, k As Long
Dim nbcod As Long, c As Long
' dimensionner le tableau t des codes
nbcod = codmaxi - codmini + 1
ReDim t(codmini To codmaxi)
'remplissage tableau des codes
For k = codmini To codmaxi
t(k) = k
Next k
' mélange de t
For k = 1 To 3 * nbcod
k1 = 1000 + Int(Rnd * nbcod)
k2 = 1000 + Int(Rnd * nbcod)
c = t(k1)
t(k1) = t(k2)
t(k2) = c
Next k
' redimensionner le tableau t avec nbres cases
ReDim Preserve t(codmini To codmini + nbres - 1)
' affichage t
Range(cocod & lideb).Resize(nbres, 1) = Application.Transpose(t)
End Sub
Bonne soirée
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
15 sept. 2016 à 15:02
15 sept. 2016 à 15:02
alors michel, un coup de blues ;-) ???
ADBG> http://www.cjoint.com/c/FIpnbanGWIq
Cdlmnt
ADBG> http://www.cjoint.com/c/FIpnbanGWIq
Cdlmnt
ADBJ
Messages postés
11
Date d'inscription
dimanche 14 août 2016
Statut
Membre
Dernière intervention
21 octobre 2016
15 sept. 2016 à 15:36
15 sept. 2016 à 15:36
Ah merci! Je n'aurais pas trouvé je pense. Ma méthode ne pouvait s'appliquer que pour rechercher du texte non?
En tout cas, c'est parfait ;)
En tout cas, c'est parfait ;)
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
14 sept. 2016 à 15:33
14 sept. 2016 à 15:33
Bonjour,
Via formule ou via macro ?
Via formule ou via macro ?
ADBJ
Messages postés
11
Date d'inscription
dimanche 14 août 2016
Statut
Membre
Dernière intervention
21 octobre 2016
Modifié par ADBJ le 14/09/2016 à 16:21
Modifié par ADBJ le 14/09/2016 à 16:21
Une macro serait le plus propre je présume. Après, les nombres sont amenés à changer assez rarement, donc si c'est vraiment plus simple une formule peut aussi faire l'affaire!
Merci de l'intérêt porté à mon sujet en tout cas ;)
Merci de l'intérêt porté à mon sujet en tout cas ;)
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
14 sept. 2016 à 16:06
14 sept. 2016 à 16:06
En VBA .. pour générer un nombre aléatore c'est RND (et non ..alea)
Pour envuite vérifier que ce nombre n'est pas déjà utilisé... tu peux très bien utiliser la méthode FIND pour le chercher dans ta feuille.
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Le tout dans une boucle WHILE (tant que le nombre existe... alors je refais un random + un find.
Si le find ne me retourne rien.. alors c'est bon je peux continuer mon cde
Int ((999 - 100 + 1) * Rnd + 100) 'Result: random number between 100 and 999
Pour envuite vérifier que ce nombre n'est pas déjà utilisé... tu peux très bien utiliser la méthode FIND pour le chercher dans ta feuille.
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Le tout dans une boucle WHILE (tant que le nombre existe... alors je refais un random + un find.
Si le find ne me retourne rien.. alors c'est bon je peux continuer mon cde
While condition Actions Wend
ADBJ
Messages postés
11
Date d'inscription
dimanche 14 août 2016
Statut
Membre
Dernière intervention
21 octobre 2016
15 sept. 2016 à 12:48
15 sept. 2016 à 12:48
J'ai compris vos méthodes, et je veux peaufiner un peu le truc.
Je souhaiterais pouvoir vérifier si un code est déjà pris. Par exemple, un client me dit qu'il aimerait avoir le numéro 5632. J'ai crée une macro, je tape sur le bouton générer. Je peux alors taper ce code 5632. Il doit me dire si ce numéro est dispo. Je pensais avoir bien compris la commande find,mais visiblement non. Ma méthode find semble me retourner toujours "nothing".
Je ne comprends pas trop ce qui cloche.
Voici mon fichier, avec ma macro :)
http://www.cjoint.com/c/FIpkTd1fQQl
Je souhaiterais pouvoir vérifier si un code est déjà pris. Par exemple, un client me dit qu'il aimerait avoir le numéro 5632. J'ai crée une macro, je tape sur le bouton générer. Je peux alors taper ce code 5632. Il doit me dire si ce numéro est dispo. Je pensais avoir bien compris la commande find,mais visiblement non. Ma méthode find semble me retourner toujours "nothing".
Je ne comprends pas trop ce qui cloche.
Voici mon fichier, avec ma macro :)
http://www.cjoint.com/c/FIpkTd1fQQl
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
>
ADBJ
Messages postés
11
Date d'inscription
dimanche 14 août 2016
Statut
Membre
Dernière intervention
21 octobre 2016
15 sept. 2016 à 14:08
15 sept. 2016 à 14:08
et si on fait ce que tu demandes, que demanderas tu ENCORE après....?
taillable et corvéable à merci....
taillable et corvéable à merci....
ADBJ
Messages postés
11
Date d'inscription
dimanche 14 août 2016
Statut
Membre
Dernière intervention
21 octobre 2016
15 sept. 2016 à 15:01
15 sept. 2016 à 15:01
Je ne cherche qu'à apprendre, et j'ai fais l'effort de proposer une solution. Je ne comprends pas pourquoi mon projet ne fonctionne pas. Ça doit être une subtilité du "Find", commande gentillement proposée par Jordane.
J'avoue ne pas trop comprendre cette agressivité soudaine. Mais si quelqu'un de bienveillant pouvait jeter un oeil et m'orienté, je lui serait très reconnaissant.
S'il est interdit de poser deux questions successives sur ce forum d'aide, qu'on me le dise, je m'excuserai...
J'avoue ne pas trop comprendre cette agressivité soudaine. Mais si quelqu'un de bienveillant pouvait jeter un oeil et m'orienté, je lui serait très reconnaissant.
S'il est interdit de poser deux questions successives sur ce forum d'aide, qu'on me le dise, je m'excuserai...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
16 sept. 2016 à 11:14
16 sept. 2016 à 11:14
Bonjour à tous,
Même si le sujet est résolu, je te propose une solution un peu différente.
Je ne cherche qu'à apprendre,
Voilà donc une solution avec un formulaire qui te permettra de voir ce qu'il est possible d'obtenir.
https://www.cjoint.com/c/FIqjnJnorBl
Bon test.
Même si le sujet est résolu, je te propose une solution un peu différente.
Je ne cherche qu'à apprendre,
Voilà donc une solution avec un formulaire qui te permettra de voir ce qu'il est possible d'obtenir.
https://www.cjoint.com/c/FIqjnJnorBl
Bon test.
14 sept. 2016 à 16:48