Problème double boucle vba
hezpae
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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!
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:
- Problème double boucle vba
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
- Double boot - Guide
1 réponse
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
+ 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