Problème double boucle vba

Fermé
hezpae - Modifié par hezpae le 22/07/2012 à 02:30
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 juil. 2012 à 08:22
Bonjour,
J'ai fait une double boucle sur VBA pour chercher à convertir des données.
Dans ma colonne A j'ai une liste de données selon une certaine nomenclature, je veux leurs correspondance dans la colonne B pour chaque ligne.

Dans la colonne C et D j'ai l'ancienne nomenclature et la nouvelle cote à cote, donc ma clef de référence.

Je demande donc à VBA de regarder quand il trouve le même numéro que la cellule iA dans la colonne C, qu'il regarde alors ce qu'il y a dans la meme ligne dans la colone D, puis qu'il copie cette valeur dans la colonne B (je sais pas si je sui très clair..)

En gros ma double boucle ressemble à ça


Dim i as integer
Dim j as integer
For i = 2 to 30226 ' la liste que je cherche à convertir (avec des doublons)
For j=2 to 19010 ' la liste complète
if cells(i,1)=cells(j,4) then ' quand il trouve le même code dans la colonne A et C
cells(i,2)=cells (j,5) ' copier la valeur de la colonne D en B
endif
next
next



Mais dès que je la lance vba ne répond plus et je ne parvient pas à voir le résultat.
Je comprends pas : cette boucle est-elle infinie pour faire planter vba? si oui comment résoudre?

Il y a t'il y moyen de l'écrire plus simplement?

Merci!

A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
22 juil. 2012 à 08:22
Bonjour

+ simplement, je ne pense pas mais + rapidement et efficacement certainement

Que fait on des doublons dans la colonne A ? suppression ou recherche dans C?
que fait on si la cellule en Ai ne trouve rien dans C : on garde l'ancienne ou on annule l'ancienne ?

Met un extrait de ton classeur pour qu'on soit + efficace
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse

0