Rechercher INDEX EQUIV en VBA

yakutake83

XLDnaute Occasionnel
Bonjour le forum.

Voilà, je cherche à faire des index + equiv, mais sous VBA!
Plus précisément:
j'ai un fichier A dans lequel j'ai beaucoup d'infos, dont une info importante dans la colonne C. Je dois aller chercher, dans un fichier B, des infos associées à la données de la colonne C du fichier A.

Je vous donne le code que j'ai réalisé, et qui bugue (en rouge, la partie qui bugue)!
Adresse est le nom du fichier B, qui est ouvert avant l'exécution.
Merci d'avance à tous!


Sub copie()
Dim PlageRecherche As Range
Dim PlageEtude As Range
Derligne = Range("A" & Application.Rows.Count).End(xlUp).Row
Worksheets("Dates").Select
Adresse = Cells(1, 1).Value
Derligne2 = Workbooks(Adresse).Worksheets("RCE").Range("A" & Application.Rows.Count).End(xlUp).Row
PlageEtude = Range(Workbooks(Adresse).Worksheets("RCE").Cells(3, 2), Workbooks(Adresse).Worksheets("RCE").Cells(Derligne2, 2))
PlageRecherche = Range(Workbooks(Adresse).Worksheets("RCE").Cells(3, 9), Workbooks(Adresse).Worksheets("RCE").Cells(Derligne2, 9))

For x = 3 To Derligne
Cells(x, 2).Value = Application.Worksheetsfunction.Index(PlageEtude, Application.Worksheetsfunction.Match(PlageRecherche, Cells(x, 3)))
Next x
End Sub


note : je n'ai pas mis la suite en rouge, puisque je n'arrive pas à aller plus loin!
note2 : il y a des espaces en trop, c'est dû uniquement au forum!
 

pierrejean

XLDnaute Barbatruc
Re : Rechercher INDEX EQUIV en VBA

bonjour yakuyake83

a mon avis:

2 options

soit:
Code:
[COLOR=#ff0000]PlageRecherche = Range(Workbooks(Adresse).Worksheets("RCE").Cells(3 , 9[COLOR=black]).Value[/COLOR], Workbooks(Adresse).Worksheets("RCE").Cells(Derligne2, 9[COLOR=black]).Value[/COLOR])[/COLOR]

soit
Code:
[COLOR=#ff0000]PlageRecherche = Range(Workbooks(Adresse).Worksheets("RCE").Cells(3 , 9[COLOR=black]).Address[/COLOR], Workbooks(Adresse).Worksheets("RCE").Cells(Derligne2, 9[COLOR=black]).Address[/COLOR])[/COLOR]
 

yakutake83

XLDnaute Occasionnel
Re : Rechercher INDEX EQUIV en VBA

re!
Bon, ça marche mieux en mettant set :) Merci bien!
j'ai vu aussi une erreur dans mon Worksheetsfunction... c'est WorksheetFunction (y'a pas de s à Worksheet)
en revanche, ça me renvoie une erreur "incompatibilité de type"...
j'ai fait une conversion pour que ma valeur recherchée soit bien un nombre, comme dans la plage de recherche, mais ça ne donne rien...
quelqu'un a une idée?

je vous mets la partie du code en question:

For x = 3 To Derligne
Numero = CLng(Worksheets("Feuil3").Cells(x, 3).Value)
Cells(x, 2).Value = Application.WorksheetFunction.Index(PlageEtude, Application.WorksheetFunction.Match(PlageRecherche, Numero))
Next x
 

fred-bene

XLDnaute Occasionnel
Re : Rechercher INDEX EQUIV en VBA

Salut.

Utilise les fonctions suivantes :

recherche d'un minimum : min = Application.min(data) où data est un vecteur dans lequel j'ia mis des données.

fonction equiv : rang = Application.Match(min, data, 0)

En grosça donne ça :

--------------------------------

Dim i, nbval As Integer
Dim data(), data1(), min, rang As Variant

i = 1
'
' comptage des données
'
Do Until IsEmpty(Cells(i, 1))

i = i + 1

Loop

nbval = i - 2

'
' redimentionnement des vecteurs
'

ReDim data(nbval - 1)

'
' récupération des données de la colonne 1 pour les mettre dans un vecteur
'

For i = 1 To nbval

data(i - 1) = Cells(i + 1, 1)

Next i

'
' recherche du mini
'

min = Application.min(data)
'
'' recherche du rang du min
'
rang = Application.Match(min, data, 0)

-----------------------------
 

Sylvain

XLDnaute Occasionnel
Re : Rechercher INDEX EQUIV en VBA

Bonjour à tous,

je pense que l'erreur vient du fait que toutes les valeurs d'un fichier ne sont pas dans l'autre. Ce qui mettrait une simple erreur dans une cellule (#N/A) provoque un arrêt du programme en VBA.

il me semble qu'il faudrait modifier le programme dans le for comme suit :
Code:
on error resume next
 ligne=aplication.worksheetfunction.match(........)
if err.number=0 then
  ............index........
else
  cells (...).value="Non trouvé"
endif
 on error goto 0
 

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg