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.
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. manunea Messages postés 15 Date d'inscription   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
  2. 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
    1. 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
      1. 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
      2. 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
  3. zavenger Messages postés 817 Statut Membre 161
     
    de rien,

    Passe le status en resolu stp

    Bonne journée
    0