Remplacement de valeurs numériques

Fermé
steve - 27 juin 2008 à 11:28
zavenger Messages postés 809 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 - 3 juil. 2008 à 09:29
Bonjour,
j'ai besoin d'un coup de main, lol

une macro est indispensable pour faire ce boulot mais mes connaissances sont très basiques.

pour simplifier le problème, imaginez dans les colonnes 1 et 2 des cellules contenants des données numériques allant de 1 à 26 distribuées aléatoirement.
dans la colonne 3 toutes les lettres de l'alphabet, une par cellule et classé par ordre alphabétique.

1 8 a
23 16 b
15 2 c
6 24 d
9 1 e
11 15 f
... ... ...

le but de la macro est de remplacer la valeur numérique par la lettre correspondant a ce rang

ex : remplacer tout les 1 par A tout les 12 par L ....

j'espere avoir était assez clair. ma vrai matrice comprends 400 colonnes et 123 lignes, vous comprenez la nécessité de faire une macro .... lol

j'ai pensé a la fonction remplacement, mais elle remplace caractere par caractere donc 12 me donne AB et non pas L.


merci par avance pour vos idées.

3 réponses

manunea Messages postés 16 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 5 janvier 2009 2
27 juin 2008 à 12:37
Bonjour,

fait ton remplacement à l'envers.
Commence par Z (26) en allant vers A(1).
Etant donné que tu vas faire le remplacement, comme cité dans ton exemple, de L(12) avant le A ou le B, le tour est joué me semble t-il!
ER
0
zavenger Messages postés 809 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 159
27 juin 2008 à 12:42
Voici une fonction toute simple

Sub replace()
For Each toto In Range("B2:D3")
If (toto.Value >= 1) And (toto.Value <= 26) Then
toto.Value = Chr(toto.Value + Asc("A") - 1)
End If
Next
End Sub

Evidement tu ajustes ta zone et si tu veux des lettres minuscules a la place des majuscules tu remplace "A" par "a"
0
merci a vous et merci zavenger. ton prog marche tres bien sauf que mon exemple était probablement pas tres pertinent.

si je dois le reformuler, il s'agirait de remplacer une valeur numérique présente dans une cellule par la cellule correspondante.

soit remplacer la cellule A57 (par exemple) comportant le chiffre X (par exemple 8) par la cellule X de la colonne D.


posez moi vos questions si necessaire

a pluch
0
zavenger Messages postés 809 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 159 > steve
2 juil. 2008 à 14:52
Sub replace()
For Each toto In Range("A1:A8")
If (toto.Value >= 1) And (toto.Value <= 26) Then
toto.Value = range("D"&toto.Value).value
End If
Next
End Sub

A toi d'ajuster la zone a parcourir ainsi que l'endroit ou tu vas chercher tes valeurs de remplacement
0
steve > zavenger Messages postés 809 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012
2 juil. 2008 à 19:54
énorme, merci, une vie sauvée a ton compteur zavenger.

c'est facile qd on voit le resultat, lol
0
zavenger Messages postés 809 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 159
3 juil. 2008 à 09:29
de rien,

Passe le status en resolu stp

Bonne journée
0