Macro Excel : Associer catégories

FSpring Messages postés 5 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 23 octobre 2009 - 23 oct. 2009 à 22:38
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011 - 26 oct. 2009 à 16:02
Bonjour à tous

Je travaille présentement sur une base de données en Excel et j'ai à associer des catégories avec d'autres. Je vous averti d'avance que je n'ai pas souvent utilisé les macros VB dans Excel.

Voilà : le tout se passe dans une seule « Sheet » (Sheet1).
Dans ma colonne A, j'ai plus de 90 000 catégories variées, pour un total de 3440 (après avoir éliminé les doublons).
On retrouve dans la colonne C ces 3440 catégories triées en fonction de « catégories-ensembles » qui se trouvent dans la colonne D. Après élimination des doublons, il y?a exactement 125 catégories-ensembles.

Mon but : de lire une par une les cellules de la colonne A, de trouver dans la colonne C une cellule identique, et lorsque c'est fait, il copie, dans la même position-ligne dans la colonne B, la valeur de la colonne D associée à cette catégorie.

J'ai tenté un petit programme, le voici :

---------------------------------
Sub Macro1()

Dim CompareRange As Variant, x As Variant, y As Variant, z as Variant

Set CompareRange = Range("C1:C3440") /* Colonne C, contenant les catégories compatibles avec Colonne A
Set z = Range("D1:D3440") /* Colonne D, contenant les catégories d'ensembles

For Each x In Selection /* Boucles imbriquées ; recherche des valeurs identiques
For Each y In CompareRange /*
If x y Then x.Offset(0, 1) ??? /* Ici, ça fait défaut ... je ne sais quoi mettre ... (0,1) pour colonne B
Next y
Next x

End Sub
-----------------------------------
Malheureusement, il ne marche pas ? même pire, il démarre, mais le programme n'arrête jamais. Auriez-vous un bon script à me proposer ? Suis-je dans le champ avec cette tentative ci-dessus ?

Je vous remercie d'avance,


FSpring

1 réponse

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
26 oct. 2009 à 16:02
Hello,

On peut tenter ceci :


for each cell in range("A1:A90000")
'1ere boucle sur les 90000 entrées de la colonne A
for each cellbis in range("C1:C3440")
'2nde boucle sur les catégories

if cellbis.value = cell.value then
'test pour retrouver la categorie
cell.offset(0,1).value=cellbis.offset(0,1).value
'dès que trouvé on reporte ce qui est contenu dans la colonne D, dans la colonne B sur la ligne de A concernée
end if
next cellbis
next cell

A tester
BR
USERRRQI115
Simple user
Great brain
0
Rejoignez-nous