Changer la position d'un chiffre sur une valeur numérique

Signaler
Messages postés
2
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
7 novembre 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'aimerai savoir comment peut on faire pour changer aléatoirement la position d'un chiffre d'une valeur numérique;
Par exemple si nous avons la valeur 12345 je voudrais que le code prélève au hasard un chiffre, supposons que c'est le"4" et qu'il le réinjecte dans n'importe quelle position, le résultat final pourrai être 41235

Merci beaucoup

2 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour,
Je vais t'inviter à ouvrir ton aide VBA sur les mots :
- Len
- MID
-Randomize
-RND
A lire attentivement
Reviens ensuite, si encore en difficulté, avec le code tenté sur la base de ces lectures
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Je voulais te faire travailler un peu, bobocamcam, sur cet exercice qui me parait assez "scolaire"...
Mais force est de constater que "awa123" a ouvert exactement la même discussion "ailleurs" et qu'il y a reçu sa solution (qui utilise ce que je t'avais indiqué").
Plus rien à "perdre", dans ce cas. Et voilà alors une autre solution, plus rapide, mais dont je doute qu'un correcteur l'accepterait sans t'obliger à l'expliquer.
Cette solution-là traite par ailleurs un cas particulier que ne traite pas celle que tu as reçue ailleurs

P
rivate Function trucmuche(c As String) As String
Randomize
Dim p1 As Integer, p2 As Integer, y As String, x
x = Split(StrConv(c, vbUnicode), Chr(0))
p1 = Int(((UBound(x)) * Rnd))
p2 = p1
Do While p2 = p1
p2 = Int(((UBound(x)) * Rnd))
Loop
y = x(p1): x(p1) = x(p2): x(p2) = y
trucmuche = Join(x, "")
End Function


exemple d'appel de cette fonction :
Dim toto As String
toto = "12345"
MsgBox trucmuche(toto)