Vlookup avec boucle et inserer des lignes de données

Bonjour,

Je m'excuse par avance. ::(Je ne connais pas du tout VBA même en regardant des tutos je tourne en rond et n'y arrive pas. Je ne sais pas par où commencer.

En fait, j'ai 2 feuilles dans mon fichier :

feuille 1 "besoin" à la maille site/article

feuille 2 "surstock" à la maille site/article

Je souhaite alimenter les sites qui ont des besoins par les sites qui ont des surstocks.

Un couple site/article avec du besoin ne pas être en surstock.

Pour un couple site/article avec un besoin je peux avoir plusieurs site/article en surstock pour combler mon besoin.

Il faut donc dans mon tableau feuille "besoin" que dans certains cas j'insère des lignes qui me permettront de savoir sur quel site j'ai du surstock et quelle quantité.

j'espère qu'avec la maquette en pièce jointe ce sera plus explicite.

j'espère également que vous êtes patient et très pédagogue.

Merci .

11et-surstock.xlsm (16.18 Ko)

Bonjour,

Cette histoire de lignes à insérer tu peux oublier... et VLookUp également...

L'idée c'est de partir de la liste des besoins pour chaque référence

Et de comparer avec la liste des surstock pour cette même référence.

Quand il y a un bingo on commence une liste des mouvements à faire jusqu'a ce que le besoin soit comblé ou toute la liste des surstock pour chaque référence balayée. In fine s'il y a encore du manquant on le note.

Quand toutes les manquants et les échanges à faire on été listés. Et ces échanges effectués YAPUKA faire les mouvements de stocks...

Bon ça c'est l'idée. MAis je ne vais pas m'amuser à programmer ça sur un exemple bidon pour recommencer après avec des documents corrects...

De plus ça suppose un minimum de logique : S'il y a un gros manque quelque part, il faut commencer par le combler avec le plus gros surstock. On va pas le combler avec une ribambelle de +2, +3, +5 s'il en manque 200 et que quelque part il y en a 300 de disponible...

Bon YA quand même du TAF Hein...

A+

Effectivement il y a du taf mais je suis rassuré car tu as parfaitement compris mon besoin et c'était pas gagné...

T'as raison c'est plus logique de combler le plus gros besoin avec le plus gros surstock pour éviter de faire de l'épicerie.

Sachant que le fichier de besoin peut contenir environ 400000 lignes et que le fichier de surstock aussi. Dans tous les cas je peux réduire le secteur géographique pour diminuer le nombre de lignes.

Je prépare un nouveau fichier avec plusieurs milliers de lignes pour demain soir. Je souhaite pouvoir utiliser cette macro quelque soit le nombre de lignes.

Mon objectif est de comprendre le code pour pouvoir l'utiliser et si besoin le modifier. (oui je sais, j'ai le droit de réver)

Merci à +

Attention si tu réduis à un ou plusiurs secteurs...

Le secteur géographique est-il potentiellement une clef pour les échanges ? Tronquer la base de données ne doit pas ne doit pas interférer sur la programmation : Doit-on aussi tenir compte de l'éloignement géographique (donc du secteur) pour les échanges ?

c'est à dire préférer les échanges intra-secteur plutot que externes ?

A+

Bonjour,

Je pense faire l'extraction du fichier de base sur les secteurs ou les régions de mon choix et ramener uniquement la notion de site car c'est la maille la plus fine.

Les échanges se font entre sites je ne pense pas que les secteurs et régions soient utiles pour la suite. D'autant plus que je dois avoir le distancier de site à site en minutes. Je vais essayer de le retrouver et de le mettre dans un onglet du nouveau fichier. Si tu penses pouvoir l'intégrer ce serait top et répondrait à la problématique d'éloignement géographique.

a+

Je n'en sais rien ! Il faut déjà voir la bête... Mais bon si je n'y arrive pas peut-être que ça passionnera d'autres...

De plus je serai éloigné de l'ordi dès vendredi et pour au moins une semaine. Par contre comme c'est les vacances d'autres seront sans doute plus disponibles...

De toute façon il vaut mieux avoir toutes les billes pour commencer, parce que une fois que le programme est fait, en général on n'aime pas trop être obligé de recommencer parce que on a oublié un détail...

A+

Bonjour,

Je comprends, pas de souci.

Voici le fichier avec les 3 onglets.

a+

Bonsoir,

Je donne ici un aperçu de ma réflexion... Ce n'est pas complètement abouti et terriblement long (environ 1 minute pour traiter la totalité. Rien que la MFC prend 30 " à elle toute seule.

Les 30 autres secondes c'est le programme proprement dit. Il est possible de l'accélérer en utilisant des Dico mais pour la mise au point j'ai préféré des Array "plus Visuel" (notamment au débogage).

Cependant l'essentiel y est tous les transferts sont traités en privilégiant le minimum de transferts. La distance est indiquée Cependant je n'en ai pas tenu compte comme critère de transfert car c'est tout de suite plus complexe...

A partir de quel moment doit on privilégier une distance plus courte si ça augmente le nombre de transferts ???

Pour l'instant ce n'est qu'un pré-traitement car il faut bien garder une trace des mouvements pour les effectuer (physiquement) réellement...

A cette fin j'ai prévu une dernière colonne "R" pour valider les transferts... OUPA !

Bon je me suis un peu dépêché parce que je vais partir quelques jours... Si quelqu'un veut se pencher la dessus : Faut pas se priver. J'ai toujours adoré sous traiter le boulot...

Sinon : RV dans quelques jours !

Remarque : Une question se pose déjà : Le système profite essentiellement au premier site dans l'ordre des besoins (156) Ce dernier à le plus de chance de purger l'essentiel des surstock, les autres se contenteront des restes...

A+

5surstock-vg1.xlsm (964.12 Ko)

bonjour,

J'ai regarder plein de tuto et je ne retrouve pas grand chose dans ton code.

Meme si tu dis que ce n'est pas abouti c'est parfait pour moi.

Pour le temps, si je pars d'une page vierge après le reset et que le lance le pré traitement ça met 30 secondes. Pour moi c'est hyper rapide. Quand je vois le temps que ça met quand je fais une pauvre rechercheV sur un fichier Excel.

Merci pour la colonne R

je fais un test demain avec d'autres données et plus de lignes

je te tiendrai au courant

Encore merci.

a+

Bonjour,

J'ai un peu optimisé la bête, nettoyé le code, limité l'affichage aux lignes pertinentes... Ce qui améliore considérablement l'ergonomie. Il reste encore à vérifier la pertinence des chiffres !

On devrait sans doute encore gagner beaucoup de temps en utilisant des Dicos.

Mébon c'est tout ce que je peux faire avant de boucler mes valises !

Remarque :

L'affichage des distances est approximative. En effet dans la base de données la distance est parfois différente selon qu'on prend la distance aller ou retour ! J'ai laissé le hasard décider...

Le code est conçu pour des "iD Sites" numériques de 100 à 999 : En dehors de ces limites le programme doit être modifié en conséquence...

A+

8surstock-vg2.xlsm (963.54 Ko)

bonjour,

j'ai remplacé les IDsite texte en numérique dans tous les onglets.

Lorsque je lance le pré traitement j'ai un message "

capture message vba

puis dans le code

capture message vba

Je ne fais peut-être pas comme il faut ??

Passe de bonnes vacances a+

capture code

C'est prévu pour des Strings Taille 3 (3 caractères de 100 à 999...)

Même si on outrepasse le tri, ça coincera ailleurs...

C'est l'inconvénient de ne pas travailler sur de vrais documents : Un programme est une pièce d'horlogerie !

A+

si ça fonctionne chez toi c'est que je ne fais pas ce qu'il faut.

si je prends ton fichier sans rien modifier et que je lance le pré traitement j'ai le message du mail précédent.

si je modifie les sitecode de texte en numérique dans les onglets besoin surstock et distance et que je trie les besoins du + au 1 par site et les surstock du + au - par article j'ai le message erreur d’exécution 424.

message vba 2

juste pour rappel mon niveau est proche du 0

hier avec la version précédente j'arrivais à le faire tourner.

je te mets le fichier en pj

merci de ton aide

Sur ton fichier original, et sur la VG2 que je t'ai joint, dans les 3 feuilles (besoin,surstock et distance)

Les colonnes A et B sont alignées à gauche : Excel les considère comme du texte. Pas parce qu'ils sont alignés à gauche mais probablement parce qu'ils proviennent d'une importation quelconque (ERP...)

De plus dans mon classeur chaque feuille reçoit un nom de baptême invisible sauf depuis VBA.

C'est ce nom qui est utilisé dans la programmation... (Pour éviter des bricolages accidentels !

vbaproj

Dans Excel et dans chaque feuille ont été créées ou modifiés des plages nommées...

gnoms

De plus dans VBA (Outils > Références...) doit être coché Microsoft Scripting Runtime...

il faut donc vérifier tous ces points ou utiliser mon classeur !

A+

j'utilise ton classeur.

le VG1 fonctionne si je fais reset et que je relance le traitement, pas de problème.

le VG2 j'y arrive pas...pour l'instant. je vais faire ma requete avec les siteid directement en numérique.

je te tiendrai au courant.

bonnes vacances a+

Ça ne peut pas marcher en numérique.

Pour moi le mode numérique n'a aucun intérêt sinon m'obliger à reprogrammer partiellement...

Ça ne peut marcher qu'en mode texte "brut de décoffrage" comme dans ton fichier initial...

Au niveau programme il n'y a pas de différence fondamentale entre le VG1 et le VG2 : La seule différence entre les 2 est une différence d'aspect final :

Dans la V2 les lignes ou il n'y a pas de transfert ne sont pas affichées. Ce qui fait qu'il ne reste que les transferts effectifs.

Je n'aurai pas de liaison internet pendant quelques jours, mais je réfléchi déjà à une autre solution, plus interactive ou l'opérateur aura ou non le choix d'accepter chaque transaction.

Je pense que vu tes difficultés, tu aurais peut-être intérêt à me donner des extractions intégrales brutes et non retouchées pour que je te fasse du "clef en main".

Comme ça ne passera plus par la messagerie du forum tu déposeras le fichier sur cjoint ou un hosteur qui accepte les gros fichiers et tu nous donneras le lien. Eventuellement tu peux me mettre le lien en MP (messagerie privée) si tu préfères que cette extraction reste confidentielle.

A+

J'ai profité de ces quelques jours pour réfléchir à la question.

Le fichier joint devrait fonctionner en Numérique comme en Texte

J'en ai profité pour l'optimiser maintenant il devrait tourner en 20 secondes (avec les données actuelles) De plus il est censé tourner avec un nombre de données plus important moyennant bien sur un allongement proportionnel du temps de traitement...

J'ai poussé beaucoup plus loin la réflexion pour exploiter les résultats, mais cela demande une mise au point que je ne peux pas faire seul.

Dans l'ensemble à partir de la feuille résultat, quelqu'un qui maitrise un peu les TCD est capable de finaliser les transferts. Etant entendu qu'il faut notifier par votre canal habituel aux intéressés les envois qu'ils doivent préparer (et faire) et prévenir les autres des envois en cours...

A+

10surstock-vg5.xlsm (625.08 Ko)

Bonjour,

Merci d'avoir avancé. Des que j'ai accès à mon ordinateur normalement samedi je te tiendrai au courant de mon test.

A+

bonjour,

Les vacances sont terminées me voici de retour.

j'ai enregistré ton fichier sur mon bureau.

j'ai pas touché aux onglets besoin surstock et distance.

je vais dans l'onglet résultat qui est vide et je clique sur pré traitement. J'ai le message ci-dessous.

capture 2608

S'il s'agit de la VG5, voir dans VBA Outils > Référence et décocher la référence déclarée manquante.

Rechercher des sujets similaires à "vlookup boucle inserer lignes donnees"