[Excel] VB traitement d'une grille

LeTom46 Messages postés 30 Statut Membre -  
Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un tableau excel qui a cette forme :


                  colonneA  colonne B  colonne C
ligne1            2               3             
ligne2            3               1       
ligne3            2               4
ligne4            ...             ...

Je voudrai que dans la colonne C il y ai un résultat en fonction des 2 autres colonne.
Sauf que c'est un traitement un peu particulier.J'ai la grille suivante :

                 4       2   3   4   4
ColonneA         3       2   3   3   4
                 2       1   2   2   3
                 1       1   1   1   2   

                         1   2   3   4
                           ColonneB

Donc pour mon exemple on aurait comme résultat :
                  colonneA  colonne B  colonne C
ligne1            2               3          2          
ligne2            3               1          2
ligne3            2               4          3


Je ne sais pas comment faire ce traitement...
Il faut que cela soit automatisé, donc que je ne rentre que les valeurs dans colonneA et colonneB.

J'ai donc 2 problèmes :
- le premier : comment faire pour sélectionner les lignes et lui dire de passer à la suivante à chaque fois.
- le deuxième faire le traitement : j'avais pensé à faire une série de if mais bon à mon avis ça risque d'être lourd...

Je vous remercie.

Sportivement
Tom

3 réponses

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Salut LeTom,
    est-ce que tu viens de Savoie ?

    ci-dessous une proposition pour ton problème, en passant par une fonction personnalisée :

    Dans ta grille de correspondances telle que tu la présentes, COLVALA est la colonne des valeurs de A et LIGVALB est la ligne des valeurs de B

    4 2 3 4 4
    ColonneA 3 2 3 3 4
    2 1 2 2 3
    1 1 1 1 2

    1 2 3 4
    ColonneB

    Function INTERSECTION(VALEURA As Integer, VALEURB As Integer) As Integer
    Dim COLVALA As Range, LIGVALB As Range

    Set COLVALA = Columns(3) 'à adapter
    Set LIGVALB = Rows(1) 'à adapter

    VALEURA = COLVALA.Find(VALEURA, , , xlWhole, xlByColumns).Row 'trouve la ligne corresondant à la valeur chechée
    VALEURB = LIGVALB.Find(VALEURB, , , xlWhole, xlByRows).Column ' trouve la colonne correspondant à la valeur cherchée

    INTERSECTION = Cells(VALEURA, VALEURB).Value ' renvoie la valeur à l'intersection

    End Function

    Après, dans ta colonne C, tu tapes ta formule avec ta fonction personnalisée :

    colonneA colonne B colonne C
    ligne1 2 3 =INTERSECTION(A2;B2)
    ligne2 3 1 =INTERSECTION(A3;B3)
    ligne3 2 4 =INTERSECTION(A4;B4)

    C'est peut-être pas le plus simple, mais ça devrait marcher.
    I.
    1
    1. LeTom46 Messages postés 30 Statut Membre
       
      Merci pour ton aide:)

      Ca marche nikel.

      En revanche non je ne viens pas de savoie. C'est pour mon pseudo?
      46 = Très grand pilote moto...

      Allé je vous aide... Ca commence par Val...... et ça fini par ROSSI!!!!:)
      0
  2. LeTom46 Messages postés 30 Statut Membre
     
    Re,

    J'ai un problème avec ta fonction.

    Elle marche bien seulement quand je change la valeur d'une cellule, on dirait que la fonction ne se réexécute pas.
    En fait je suis obligé de sélectionner la case et de faire valider pour que cela traite avec la nouvelle valeur.
    Sinon ça met #VALEUR à la place de la valeur.

    Comment faire pour "actualiser" les cellules?

    MERCI

    Tom
    0
  3. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Je ne sais pas ! Ici, ça marche. Est ce que F9 résout le problème ?
    0