Ligne pas ligne + Index et Equiv conditionnel

Signaler
Messages postés
3
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
19 janvier 2009
-
Messages postés
3
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
19 janvier 2009
-
Bonjour le forum,


Je cherche a faire une boucle qui :

1. pour chaque ligne (jusqu'à la dernière), si une cellule de la colonne D prend pour valeur "Fr"


2.   alors (seconde boucle)
       Si la cellule de la colonne E prend la valeur "P"


3. alors excel recherche une info dans un tableau a l'aide d'INDEX et de EQUIV dans une feuille Tarif3

et l'écrit dans la colonne J (J1 pour la ligne 1 etc...)

Code:
Pour vérifier si on a la valeur FR, je fais cela :
For Each K In [D2:D9]
valtest = "FR"
If w Like valtest2 Then

Comment lui indiquer de faire cette boucle de E2 jusqu'au dernier E de ma feuille ?

Code:
Pour vérifier si on a la valeur P, je fais cela :
For Each w In [F2:F9]
valtest2 = "P"
If w Like valtest2 Then

Sans passer par une boucle, pour Index et Equiv, je me sert de ça :

Code:
Range("J9").Value = Application.Index(Worksheets("Tarif3").Range("B3:N100"), Application.Match(Worksheets("AgencesTfe").Range("B9"), Worksheets("Tarif3").Range("A3:A105"), 0), Application.Match(Worksheets("AgencesTfe").Range("D9"), Worksheets("Tarif3").Range("B1:E1"), 1))

Comment le faire pour qu'il le fasse pour chaque ligne ? (en
gros, le B9 et le D9 doivent changer en B10 et D10 etc ... , le reste
restant les mêmes)


Merci beaucoup !

4 réponses

Messages postés
156
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
2 mars 2009

Salut,

Ton message est un peu ambigüe car je n'arrive pas à déterminer si tu programme en vb.net (ex visual studio à partir duquel tu piloterais un tableur comme excel) où si tu programmes en vba via Microsoft  Office ?

LC
Messages postés
3
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
19 janvier 2009

effectivement, je me suis bien mal exprimé .... mea maxima culpa !

il s'agit de vba excel v 2003 .......

donc je resume, j'ai une liste entre 50 000 Lignes et 60 Lignes
chaque ligne comporte une quinzaine de colonnes

je dois faire une boucle de la première ligne à la dernière
puis pour chaque ligne je dois vérifier si telle cellule de telle colonne a une valeur (colonne D si j'ai la valeur "FR")

puis rebelotte pour la colonne F et la valeur "P"

et enfin j'utilise dans une seconde feuille un tableau et, grace a Index et Equiv, je recupére une valeur.

C'est donc cette première boucle qui me chagrinne mais aussi pour récuperer la valeur de la ligne et l'utilier pour ma fonction Equiv et Index.

j'espère etre plus clair maintenant ...
Messages postés
156
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
2 mars 2009

Re,

En effet c'est plus clair maintenant mais j'ai besoin de quelques précision pour t'aider:

-Le nombre de ligne à traiter varie t'il ? Si oui quel est la colonne dans laquelle il n'y aura jamais aucune cellules vide jusqu'à la dernière ligne à traiter ( ai-je été clair?....)

Le cas échéant,

le code devrait être comme tel:

Je considère je la colonne n'est jamais vide jusqu'à la fin,

Sub test()
For i = 1 To Range("A1").End(xlDown).Row
    If Range("D" & i).Value = "Fr" Then
        If Range("E" & i).Value = "P" Then
        'ici ton code où tu feras ta recherche dans ton tableau
        'avec index et equiv ainsi que la récupération des valeurs
        'Pense bien à switcher entre tes feuilles ;)
        End If
    End If
Next i
End Sub
Messages postés
3
Date d'inscription
mardi 2 décembre 2008
Statut
Membre
Dernière intervention
19 janvier 2009

Merci beaucoup pour ton aide !!

la colonne A ne sera effectivement jamais vide jusqu'à la fin.