[VBA Excel] taches en parallèle

Résolu
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009 - 13 avril 2007 à 11:06
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 13 avril 2007 à 11:57
bonjour !

J'ai 2 colonnes que je parcours. pour chaque cellule de la première colonne, je parcours toute la colonne suivante pour voir si la valeur de la cellule actuelle de la 1ère colonne s'y trouve. et si c'est le cas, je passe à la cellule du dessous de la première colonne, et je recheck toute la 2è colonne etc...
j'ai une macro qui fait ça mais c'est très long.
en effet, si on a 20 000 lignes, on parcours 20000 fois la 2è colonne.

donc ma question est : est-ce qu'on peut avec excel faire ce travail de checker la 2è colonne pour plusieurs cellules en parallèle ?? afin de gagner du temps :-)
(on m'a dit que en java par exemple c'est possible)

merci pour les réponses !!

6 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
13 avril 2007 à 11:10
Salut, non ce n'est pas possible! Le thread n'existe pas en VBA!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
13 avril 2007 à 11:14
Heu, si tu veux juste savoir si le contenu d'une cellule se trouve quelque part dans une colonne, tu n'as pas besoin de macro hein, et c'est très rapide.

Exemple :
A1: Cellule que tu cherches
B:B : Colonne contenant toutes les données à vérifier.

Et bien, en C1, tu mets la formule suivante :
=RECHERCHEV(A1;B:B;1;FAUX)
Si ta valeur se trouve dans la colonne B, elle sera ré-écrite dans C1. Après, tu adaptes avec par ex. une vérification d'erreur (en effet, si ta cellule ne se trouve pas dans la colonne B, un #N/A est remonté)

Si(ESTERREUR(RECHERCHEV(A1;B:B;1;FAUX))VRAI;"";"Existe")
Tu n'as plus qu'à copier la formule dans toutes les cellules C jusqu'à hauteur de ta colonne A, et en face de chaque cellule de la colonne A, il sera marqué dans la cellule C "Existe" si la valeur se trouve dans la colonne B.

Non au codage sauvage qui n'apporte rien !

Molenn
0
outofbusiness Messages postés 36 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 4 juin 2009
13 avril 2007 à 11:35
aïe :-(

j'atteins les limites du VBA lol

Drikce 06> donc je vais faire réponse acceptée, mais quand même un
Molenn> en fait j'ai besoin de coder ça dans une macro.
merci pour les réponses !
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
13 avril 2007 à 11:37
 tu peux toujours faire une macro en combinant les deux!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
13 avril 2007 à 11:39
Et si le codage demeure essentiel pour une raison ou pour une autre, tu peux utiliser la fonction Find qui est plus rapide qu'une double-boucle.

Tu boucles donc la colonne A cellule par cellule et fais un Find de cette valeur sur la colonne B

MPi
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
13 avril 2007 à 11:57
Si tu as juste besoin de savoir si une cellule de la colonne A se trouve dans la colonne B, tu peux combiner effectivement le code avec la formule.

Tu mets la formule dans la colonne C, comme ça tu as marqué "Existe" sur les lignes qui t'intéresse.
Après, dans ton code, tu fais juste une boucle sur la colonne, et tu vérifies le contenu de la cellule, un truc du style :

For i = 1 to 20000
   if cells(i,3).value = "Existe" then
      'ton code
   end if
Next i

ou alors, la fonction .find comme le dit MPi.

Le but, c'est surtout de se simplifier au maximum, moins il y a de lignes de code, mieux c'est

Molenn
0
Rejoignez-nous