Remplacement de valeurs numériques

steve -  
zavenger Messages postés 817 Statut Membre -
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.
A voir également:

3 réponses

manunea Messages postés 16 Statut Membre 2
 
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 817 Statut Membre 161
 
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
steve
 
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 817 Statut Membre 161 > steve
 
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 817 Statut Membre
 
énorme, merci, une vie sauvée a ton compteur zavenger.

c'est facile qd on voit le resultat, lol
0
zavenger Messages postés 817 Statut Membre 161
 
de rien,

Passe le status en resolu stp

Bonne journée
0