[Excel] VB traitement d'une grille

Fermé
LeTom46 Messages postés 30 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 15 mai 2008 - 13 mars 2008 à 11:06
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 17 mars 2008 à 18:30
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
A voir également:

3 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
13 mars 2008 à 13:04
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
LeTom46 Messages postés 30 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 15 mai 2008
13 mars 2008 à 15:39
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
LeTom46 Messages postés 30 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 15 mai 2008
14 mars 2008 à 14:25
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
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
17 mars 2008 à 18:30
Je ne sais pas ! Ici, ça marche. Est ce que F9 résout le problème ?
0