Comparaison de 2 plages de cellules

inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011 - 16 avril 2008 à 15:32
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011 - 21 avril 2008 à 09:37
debutant en VBA, Je voudrais comparer une plage de cellule X avec une autre Y et prendre la valeurs  de la cellule Z qui est juste apres Y où on a X=Yet la mettre dans la cellule W. 
vous comprendrez mieux sur cette exemple

            X                   W                   Y                 Z
         
            1                     A                    5                 E
            2                     B                    9                  I
            3                     C                    6                 F
                                                          1                 A
                                                          4                 D
                                                          2                 B
                                                          8                 H
                                                          3                 C
                                                         10                 J
                                                          7                 G                                         

donc pour cela j'ai fait le code suivant, qui marche sans souci

Sub analyse()
Dim i As Long, j As Long, k As Long
k = 2
i = 2
j = 2
For i = 2 To 8 
   Do While Cells(i, 1).Value <> Cells(j, 3).Value   'faire Tant que X est different de Y
            For j = 2 To 15
                    If Cells(i, 1).Value = Cells(j, 3).Value Then   'si X=Y
                                   Cells(k, 2).Value = Cells(j, 4).Value         'W=Z
                                   Exit For
                     End If
             Next j
   Loop
k = k + 1
Next i
End Sub

Maintenant je voudrais appliquer cet exemple pour un vrai probleme, j'ai un tableau de valeur dans X qui correspond a une position d'une piece, un autre dans Y qui correspond a une position mesurée de la piece et dans Z sa force mesurée.
 les valeurs qui sont dans les tableaux sont des reels à 2 chiffres apres la virgule, donc comment je pourrais comparer  ses valeurs meme s'il sont pas egaux a 100%.
exemple:

en X j'ai  -281.22            

et en Y j'ai les valeurs   
              Y                        Z    
<colgroup><col style=\"WIDTH: 60pt\" width=\"80\" /><col style=\"WIDTH: 76pt; mso-width-source: userset; mso-width-alt: 3693\" width=\"101\" /></colgroup>----
-282.3, 0.68, ----
-281.9, 0.68, ----
-281.5, 0.68, ----
-281.1, 0.68, ----
-280.7, 0.68

Ca veux dire que je doit prendre la valeur de Z (0.68) qui correspond a la valeur de Y(-281.1)  qui s'approche le plus a ma valeur X(-281.22) et la mettre dans W.

si queqlqu'un peu m'aider ca serait super, j'y est passer bcp de temps.
Merci d'avance

        

5 réponses

inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
16 avril 2008 à 16:10
j'ai trouvé une formule qui fait la meme chose que ce que je veux

=RECHERCHEV(A3;C2:D2500;2)

mais je c'est pas comment je pourrais l'utiliser dans ma macro
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 avril 2008 à 17:17
Salut,

"mais je c'est pas comment je pourrais l'utiliser dans ma macro"
comme ceci :

Sub analyse()
    Dim MaValeur As Variant
    MaValeur = Application.WorksheetFunction.VLookup(A3, C2:D2500,2, False)
    MsgBox MaValeur
End Sub

Attention dans VBA les point-virgules doivent etre remplacés par des virgules

A+
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
17 avril 2008 à 10:16
j'ai essaié ta methode mais j'ai une erreur d'execution, impossible de lire la proprieté de Vlookup, cette fonction n'existe peut etre pas dans VBA, j'ai cherché sur l'aide et il l'a reconnait pas
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
17 avril 2008 à 15:59
...

Sub analyse()
    Dim MaValeur As Variant
    MaValeur = Application.WorksheetFunction.VLookup(range("A3"), range("C2:D2500"),2, False)
    MsgBox MaValeur
End Sub

si la valeur recherhée en A3 n'a pas ete trouver tu auras une erreur 1004 donc faudra gerer ce cas si
tu ne veux avoir de probleme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
21 avril 2008 à 09:37
oui t'as raison ca marche quand il trouve la meme valeur, mais dans mon cas la valeur de A3 ne sera jamais egale a 100% une des valeurs de C2:D2500, est ce qu'il y a un moyen de recuperer la valeur la plus proche.
Merci bigfish_le vrai
0
Rejoignez-nous