FSpring
Messages postés5Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2009
-
23 oct. 2009 à 22:38
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDerniè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 ?
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDerniè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