[VBA Excel] taches en parallèle [Résolu]

outofbusiness 36 Messages postés dimanche 2 février 2003Date d'inscription 4 juin 2009 Dernière intervention - 13 avril 2007 à 11:06 - Dernière réponse : Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention
- 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 !!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 13 avril 2007 à 11:10
3
Merci
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:

Merci drikce06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de drikce06
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 13 avril 2007 à 11:14
0
Merci
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
Commenter la réponse de Molenn
outofbusiness 36 Messages postés dimanche 2 février 2003Date d'inscription 4 juin 2009 Dernière intervention - 13 avril 2007 à 11:35
0
Merci
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 !
Commenter la réponse de outofbusiness
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 13 avril 2007 à 11:37
0
Merci
 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:
Commenter la réponse de drikce06
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 13 avril 2007 à 11:39
0
Merci
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
Commenter la réponse de cs_MPi
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 13 avril 2007 à 11:57
0
Merci
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
Commenter la réponse de Molenn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.