CODE VBA très complexe

Re BsAlv,

Je suis désolée, mais c'est trop compliqué pour moi,

Je n'arrive pas à comprendre les résultats reçus, serait il possible d'extraire sur une nouvelle feuille les colonnes entières s'il vous plaît?

Et si c'est compliqué, que me conseillez vous pour que je puisse avoir mon résultat souhaité? (access,Python etc...?)

Merci d'avance pour vos réponses

re,

c'est assez difficile pour chercher des matches dans toutes les feuilles des 2 classeurs. Donc je copie tout cela et je je transpose& colle dans la feuille "Filtres", ce que vous voyez horizontallement dans ces feuilles des 2 classeurs et maintenant verticallement, une feuille en dessous de l'autre dans cette feuille et vous voyez l'origine dans les 3 premières colonnes. Je dois transposer parce qu'on n'a que 16.000 colonnes sur une feuille et dans un des exemples précédents, je pense qu'on avec 35.000 lignes. En plus, comme çà, tout en colonnes, on peut utiliser des filtres, un outil extremement puissant pour cela.

Concernant le terme "colonnes", une colonne pour excel, c'est toutes les cellules verticallement l'un en dessous de l'autre. Je pense que là, nous ne parlons pas le même langage.

J'espère que vos connaissez les filtres d'excel. Bon, on l'appliquera sur ce tableau. Par exemple, vous avez pour Vis & ref1 "21,32,6". Bon on choissit la fleche a côté de "Vis" (cellule D8) et on coche uniquement 6, 21 et 32 (et si un de ces chiffres ne se présente pas, c'est parce que ce chiffre ne se trouve pas dans les cellules en dessous cette cellule). Vous comprenez cette méthode. Donc tout ce que je fais maintenant avec de filtres, le résultat sera le même qu'avec ces formules en VBA d'avant-hier. Il fau juste tourner votre oeil 90 degrees. Essayez-le. Si vous ne le comprenez pas encore, je l'essayerai de l'expliquer d'une manière différente.

re,

il y avait une faute dans mon fichier précédent, maintenant on a presque 38.000 lignes de données et la macrov ous indique une première solution avec des chiffres manquant pour les colonnes Vis et Clou.

Maintenant, vous pouvez aussi manipuler les filtres pour chaque colonne. Vous pouvez clicquez sur la fleche d'une cellule de la ligne 8 pour modifier ce filtre d'une manière normalle. Mais avec un double-clic dans une cellule de la plage D1:M7, vous pouvez assigner le contenu de cette cellule au filtre de cette colonne. Donc, je pense que c'est assez facile pour vous pour simuler des recherches. Si vous faitez un double-clic dans A1, on remet tous les filtres à zéro.

3article-1-1.zip (964.58 Ko)

Re,

ça n'ira pas avec mes fichiers, car dans mon dossier avec les vrais données j'ai 40 fichiers et dans chaque fichiers j'ai à peu près 40 pages de 15000 colonnes.

J'avais déjà transposé, et filtré avant de demander de l'aide, j'ai tout essayé en utilisant les outils excel mais l'analyse est super longue pour avoir mes 5 colonnes.

C'est pour ça qu'un code VBA aurait été top pour analysé tous mon dossier et me faire ressortir sur une nouvelle feuille les 5 colonnes entières.

re,

oubien on doit demander de l'aides aux spécialistes PQ oubien on crée autant de feuilles (40*40*15.000/1.000.000 = 24 ?) pour autant de tableaux ... .

Pour le moment la question principale, comme çà, cela pourrait fonctionner, si on ne considère pas ce problème du nombre de tableaux ?

C'est vraiment "chercher une aiguille dans une botte de foin"

C'est pour ça que je fais appel au forum, mais parcontre j'ai toujours pas compris le résultat que vous m'avez donné, pour moi c'est très compliqué

Bonjour à tous, Bonjour Mafraise

Je reviens sur ce fil de discussion pour savoir si l'un d'entre vous pouvez m'aider.

J'ai ouvert un sujet de discussion concernant ma demande mais malheureusement je n'ai pas eu le résultat souhaité

C'est une demande très complexe, c'est pour ça que je vais expliquer étape par étape.

J'ai un tableau "vis" dans mon fichier "Article".

Ce tableau comprend 5 références et chaque référence correspond à 3 nombres.

J'ai d'autres fichiers qui correspond au résultats que chaque sites m'ont envoyé.

L'extrait de un de ses fichiers est "classeur 1" et "classeur 2".

Est ce que je peux avoir un code VBA qui me créé une nouvelle feuille ensuite, il recherche dans la ligne 21 des classeurs, une seule valeur de chaque référence du tableau "Vis", et enfin il me colle les colonnes entière dans la nouvelle feuille, mais la nouvelle feuille il l'a laisse ouverte car je veux moi même l'enregistrer manuellement?

Je vous joins les fichiers et vous remercie encore pour votre aide

j'étais que vous avez compris la 1ère étape et je vous remercie pour l'aide que vous allez m'apporter

2article.xlsx (10.89 Ko)
2classeur-1.zip (131.10 Ko)
2classeur-2.zip (128.08 Ko)

re,

c'est plus simple de recommencer à étape 1. Clicquez ce bouton bleu.

Avec ces 2 fichiers et seulement "Vis", on a 37.852 lignes de données qui vous voyez là, à partir de la ligne 9. Puis la macro commence à chercher les données avec 21, 32 ou 6, donc ref1. C'est la même chose que filtrer sur ces 3 valeurs dans D8. Cela donne 1.981 lignes de 37.852. Donc on a trouvé au minimum un match et la macro s'arrête.

Comme j'ai expliqué plus haut, si vous faitez maintenant un double-clic dans une des cellules D1:D7, c'est la même chose qu'utiliser le filtre pour Ref1, ou Ref2 ou ... - Ref5 ou tous et vous verrez dans la cellule A6 le nombre de cellules filtrées. Vous pouvez vérifier cela avec les données dans les 3 premières colonnes.

Comme çà, j'ai la possibilité de filtrer +1.048.000 lignes. Si cela est insuffisant, on crée un tableau supplémentaire sur une feuille supplémentaire et on est parti pour 2.096.000, etc

5article-1-1.zip (265.10 Ko)

re,

cela fonctionne comme il faut ?

Re,

Je ne comprends rien au résultat, ce n'est malheureusement pas le résultat que je souhaite car pou moi c'est très compliqué

re,

vous demandez une réponse, alors vous ne regardez que la première ligne filtrée, pour le moment, je crois, ligne 48, qui représente K21 de la feuile "Feuil2" de "classeur-1" avec vis=21. Oubliez les 1.980 lignes filtrées suivantes.

Mais dans l'étape suivant, vous demanderez la même chose pour "Tournevis", la colonne suivante dans cette feuille mais comme ce sont des données transposées, vos lignes 22 des vos feuilles. A ce moment, c'est bien possible que K21 ne remplit pas la nouvelle condition supplémentaire et que, à ce moment, ce sera une de lignes suivantes qui sera la nouvelle première ligne visible (=filtrée), par exemple, la ligne 78 (maintenant la 3eme ligne visible) et en réalité la cellule AO21 de la même feuille Feuil2 de classeur1. Si dans un étape suivant, vous ajouterez encore une 3eme colonne (=ligne 23 pour vos feuilles), que la première ligne visible change de nouveau. C'est comme on a un groupe de 1.000 personnes, et on commence à éliminer, par exemple, seulement les femmes, puis celles de 20 à 30 ans, puis celles avec des cheveux blondes, puis poids entre 60-80 kg, puis ... . Le groupe diminue à chaque nouvelle condition et par conséquent le premier choix change de temps en temps.

Donc, n'avez-pas peur de ce que vous dites, que c'est trop compliqué, pour le moment ne regardez que la première ligne visible en dessous la ligne 8, c'est uniquement le résultat de cette ligne (donc pour le moment la cellule K21 de Feuil2 de Classeur-1) qui sera copiée et collée dans votre nouvelle feuille.

Re,

D'accord je n'avais pas compris, donc tout d'abord on a que Vis, et cela contient tous les résultats sans le filtre, c'est bien ça? Donc il y a 1981 résultats, mais ce n'est pas significatif car il n' y a pas les éléments dans la recherche, pour le fichier que vous venez de m'envoyer, il y a tous les resultats comme si on avait filtré la colonne "Vis" c'est bien ça?

Vous ne connaissez pas les filtres, si je vous écoute bien ???? C'est çà ? (autrement lisez ceci https://www.excel-pratique.com/fr/formation-excel/filtrer )

En parcourant vos fichiers, il y avaient 37.852 colonnes dans vos 2 classeurs et 4 feuilles et on les a transposé et collé à partir de la 9eme ligne càd de la ligne 9 à 37.860.

Puis on a essayé des filtres dans la cellule D8 (voir symbole encerclé) en commençant avec les 3 chiffres de Ref1. Clicquez sur le symbol encerclé et un menu s'ouvre et si vous glissez dans ce menu, vous verrez que seulement 6, 21 et 32 sont coché, donc filtré. Si vous regardez bien les numéros des lignes, il en manque des numéros, ces lignes (en total = 37.852-1.981=35.871) sont cachées parce que leur colonne D ne contient pas un de ces 3 chiffres. Comme çà, il ne restent que 1.981 lignes visible, qui contiennent donc un de ces 3 chiffres et c'est la première ligne visible qui vous intéressera pour copier et coller vers une nouvelle feuille.

Donc on a 37.852 données pour "Vis", 35.871 sont pour la poubelle et le reste, 1.981, sont okay et maintenant on choisit la première ligne pour continuer ...

image

Re,

Si je connais les filtres, je sais filtrer des colonnes, mais vous voulez en venir ou en procédant de cette manière? c'est quoi votre but, car je crois qu'on ne c'est pas compris sur la finalité du code VBA.

Je vous ai expliqué qu'en filtrant, je n'aurais pas mon résultat souhaité et que cela ferait trop d'analyse à faire.

Je pense qu'on s'égard, j'ai besoin d'aide mais j'ai l'impression que votre façon de faire, n'est pas la bonne méthode, je pense qu'on ne c'est pas compris.

qu'avez vous compris sur le code dont j'ai besoin?

Bonjour BsAlv,

Désolé de passer par ce sujet sur le forum mais pouvez-vous répondre à mon message pv svp!

Merci bcp

re,

les données des lignes 21 de toutes ces feuilles, ils sont bien copiés et collés dans la colonne D. Oui, je suppose.

Et puis on veut voir si un des 3 chiffres de Ref1 pour "Vis" est dans ces données, donc les chiffres jaunes 21,32,6 ? Oui ?

Pour vous, la bonne réponse, ici, c'est quoi ?

Autre interprétation, vous demandez 5 lignes consécutives les 5 différents Ref, c'est çà ?

Re,

La bonne réponse est bien ce que vous avez fait pour deux tableaux.

Pour 5 tableaux le but recherché est:

- Tout d'abord qu'il analyse tout les fichiers.

- car c'est après qu'il pourra me trouver une valeur de chaque référence de chaque tableaux pour chaque ligne. pour Vis se sera la ligne 21, pour Tournevis se sera la ligne 22 etc...

- Pour cette recherche, pour avoir pluss de chance de trouver 5 colonnes compatibles entre eux, l'ordre des référence peuvent être dans le désordre, c'est à dire que: pour la 1ère colonne pour Vis, on peut par exemple trouver une des Ref4.

pour la 2ème colonne pour Vis, on peut par exemple trouver une des Ref1.

pour la 3ème colonne pour Vis, on peut par exemple trouver une des Ref5 et ainsi de suite pour Vis.

- Mais dans la même colonne, pour les autres tableaux ont peut aussi trouver les référence dans le désordre, c'est à dire que:

Dans le 1ère colonne, en dessous de l'une des valeurs de la Ref4 pour Vis, on peut trouver une des Ref2 pour Tournevis.

Dans le 2ème colonne, en dessous de l'une des valeurs de la Ref1 pour Vis, on peut trouver une des Ref5 pour Tournevis.

Dans le 3ème colonne, en dessous de l'une des valeurs de la Ref5 pour Vis, on peut trouver une des Ref1 pour Tournevis et ainsi de suite.

Et ainsi de suite pour les autres colonnes et les autres tableaux.

- Ensuite j'aimerais que ses 5 colonnes soit copié entièrement dans une nouvelle feuille pour que je puisse voir l'entête de cette colonne, car c'est l'entête des colonnes dans les feuilles des fichier "classeur 1" et "classeur 2" qui vont me permetttre de trouver ce que je veux. (l'entête des classeurs c'est la ou il y a écrite A; B; C; D; E etc...)

Avez-vous pu comprendre mon explication?

Re,

Je vous joins un exemple de résultat que je souhaite obtenir avec des annotations pour mieux comprendre.

Bonjour BsAlv,

Désolé de passer par ce sujet sur le forum mais pouvez-vous répondre à mon message pv svp!

Merci bcp

Rechercher des sujets similaires à "code vba tres complexe"