Coder un équivalent SUM.SI.ENS entre deux feuilles d'un même classeur

Bonjour à tous.

Je suis en train d'essayer d'automatiser un classeur par un codage VBA... pour apprendre à coder VBA. J'ai deux feuilles. Une feuille dans laquelle j'ai une liste de références en colonne B. Ensuite chaque colonne de C à XX représente une semaine. Dans l'autre feuille J'ai un tableau, qui, pour chaque jour (en colonne) va lister la référence mise en stock dans une cellule (sous le jour de la mise en stock) et la quantité mise en stock dans la cellule à sa droite.

J'aimerais donc dans la première feuille, pour chaque ligne correspondant à une référence mettre la quantité mise en stock par semaine (donc dans la bonne colonne) en allant chercher les infos dans la deuxième feuille.

J'en suis au stade où je sais identifier la plage de la deuxième feuille correspondant à la semaine que je veux remplir (un bon début), je sais faire le total de mise en stock cette semaine là pour une ref donnée . Je sais identifier la plage des références de la première feuille. Mais:

- peut-on faire des boucles (For each) en switchant d'une feuille à l'autre?

- comment lui dire que pour la première référence de la plage identifiée dans la première feuille, ligne 4 (par exemple) il doit me mettre le total (issu de la plage de la deuxième feuille) sur cette ligne 4 mais à la colonne E (par exemple) qui correspond à la même semaine?

Bon c'est mon premier codage VBA, je sais aussi que ce fichier n'est pas conçu pour être codé, mais c'est le seul exemple super concret que j'ai trouvé pour apprendre.

Par avance merci pour votre aide et vos conseils

Bonjour,

Bien sur que non.

Ça ne sert à rien de coder si c'est pour faire plus lent qu'Excel.

Donc on va faire des trucs plus speed. Selon le type de données et les quantités on à différentes méthodes :

Les dictionnary et les Array : En gros, ça consiste à travailler sur la mémoire plutôt que sur les feuilles.

Pour des explications plus concrètes fournir un classeur.

A+

Merci pour ta réponse.

Le bien sûr que non répond à ma question "peut-on faire des boucles (For each) en switchant d'une feuille à l'autre?"?

J'ai acheté Programmation VBA pour Excel pour les Nuls et il dit bien qu'Excel fait beaucoup de choses très bien et que c'est pas la peine de coder pour faire moins bien. Je comprends.

Je te joins le fichier tel qu'il est mal fait sans aucun code VBA. Je voulais automatiser le remplissage des colonnes vertes de la Feuil2

Malheureusement ce fichier est suffisamment complexe pour que le non initié n'y comprenne rien.

De plus tes explications ne sont guère précises... Première feuille, Deuxième feuille n'est guère un langage Excel et encore moins VBA.

Je te suggère de me donner les quelques lignes qui correspondent à ce codage que tu as fait :

- comment lui dire que pour la première référence de la plage identifiée dans la première feuille, ligne 4 (par exemple) il doit me mettre l

ça me permettra de me faire une idée plus précise de ce qui est attendu.

Pour l'instant je comprend que tu essaie de remplacer le SUMSIENS de Feuil2 par les valeurs récupérées dans la feuille "données_mise en stock"

Mais il semble qu'il manque des colonnes dans "données_mise en stock" ??

EDIT :

Plus simplement tu pourrais aussi enregistrer les 2 ou 3 premier remplacements et me donner ce bout d'enregistrement. Cela sera sans doute plus significatif que ton propre codage.

A+

Merci encore pour ton aide. Je vais chercher à m'entrainer sur un exemple plus simple.

Bonjour,

Comme je vous sens motivé je vous propose un exercice relativement simple de comparaison/rapprochement.

11exocod.xlsm (217.99 Ko)

A+

Merci :). Je vais m'y coller.

Reste que je ne vois pas comment comparer des listes entre deux worksheets (c'est comme ça qu'on dit en VBA?)

Il n'y a pas une solution mais... beaucoup !

Au niveau initiation tu peux commencer avec une boucle For Each...

Il faut évaluer le nombre de lignes et de colonnes à parcourir dans chaque feuille et stocker ces renseignement dans des variables.

Pour chaque ligne de la feuille A chercher une égalité avec la feuille N si on ne trouve pas de correspondance marquer un "O" dans la colonne Statut.. et passer à la ligne suivante.

Voir aussi message en MP (Message privés en haut de cette page à droite)

A+

Une proposition de solution pour l'exo. Relativement longue à exécuter environ 10 " mais il y a 2 x 2000 x 2000 boucles en moyenne à exécuter...

9exocodvg.xlsm (274.12 Ko)

Travailler avec un Dictionnary ou avec PQ seraient beaucoup plus rapide mébon ce n'est pas le but de l'exercice !

A+

Rechercher des sujets similaires à "coder equivalent sum ens entre deux feuilles meme classeur"