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

bobocamcam Messages postés 2 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 7 novembre 2013 - 7 nov. 2013 à 11:05
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 7 nov. 2013 à 23:07
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 nov. 2013 à 11:14
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 nov. 2013 à 23:07
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)


0
Rejoignez-nous