Boucle imbriquées et doublons

Bonjour à tous,

Je reviens demander votre aide car je n’arrive pas à finir cette macro. Je ne dois pas être loin (j’espère) mais ne comprends pas ce qui bloque.

(cf fichier en PJ pour exemple).

Le problème :

  • J’ai une base de ventes historique (affaires en cours, signées, perdues)
  • Je fais une mise à jour hebdo et veux comparer et mettre à jour automatiquement la base historique
  • MAIS il y a des doublons, erreurs, etc… dans la requête de base (erreurs humaines, impossible de les éviter). Donc je fais un traitement en 2 feuilles :
o Base validée : la base historique dans laquelle j’ajoute les nouvelles affaires et mets à jour celles modifiées

o Maj : feuille dans laquelle j’intègre la mise à jour hebdo brute

Les conditions :

  • Une affaire (numéro d’affaire) peut correspondre à plusieurs produits uniques
  • Une affaire a un produit, un client et un statut

Les cas rencontrés :

  • Affaire doublée (même numéro, même produit, même statut)
  • Affaire mise à jour (même affaire, même produit, changement de statut)
  • Nouveau produit dans même affaire (même affaire, produit différent, statut indifférent)
  • Nouvelle affaire (nouveau numéro d’affaire, produit indifférent, statut indifférent)

J’ai essayé plusieurs versions (cf module 1, 2 et 3), et si la mise à jour des lignes existantes fonctionne bien (les changements de statut), la copie des nouvelles affaires fonctionne TROP bien ! En gros, toutes les lignes sont copiées, et je ne comprends pas pourquoi puisque j’ai placé plusieurs conditions

Merci de partager votre savoir

Julien

12test.zip (15.09 Ko)

Bonjour,

A tester

25test.zip (20.33 Ko)

A+

Génial!

Merci beaucoup.

Je suis curieux de savoir ce qui manquait, quand je regarde le code il y a du nettoyage (et tu réalignes les variables), mais le principe reste le même j'ai l'impression.

Bonne journée.

Julien

PAs tout à fait quand même

Regarde en particulier cette partie

For i = 2 To bn

For j = 2 To bo

If affnew(i) = affold(j) Then

If prodnew(i) = prodold(j) Then

If statnew(i) > statold(j) Then

Worksheets("maj").Rows(i).Copy

Worksheets("base validée").Rows(j).PasteSpecial xlPasteAll

Worksheets("base validée").Rows(j).Interior.Color = RGB(255, 255, 0)

A+

Rechercher des sujets similaires à "boucle imbriquees doublons"