Comparateur de Base de données de Prix N-1 / N-2

Bonjour à Tous,

Après plusieurs recherches, je n'arrive pas à trouver mon bonheur et je vous demande donc votre aide.

Je dois entrer une base de produits dans une caisse enregistreuse électronique, pour notre magasin de vente au détail.

Nous avions jusqu’à présent une caisse sans code barre.

J'ai l'ancien fichier que nous appellerons BASE OLD qui date de 2016.

Les colonnes sont A/ code barre , B/ Famille Caisse, C/ Catégories, D/ Marques, E/ Désignation, F/ Contenance, G/ Prix d'achat ht, H/ Prix de vente TTC

ces colonnes sont importantes, pour les rentrer dans la base de la caisse enregistreuse.

Depuis 2017, nous avons modifier des produits et les prix ont évolués.

Nous venons de scanner tous les produits du magasin et avons un second fichier que nous appellerons BASE NEW.

Les colonnes sont A/ Code Barre, B/ Marque, C/ Désignation, D/ contenance, E/ Prix d'achat ht, F/ prix de vente TTC

Cela représente environ 2500 produits donc codes barres.

Ne connaissant rien en macro, pourriez vous m'aidez avoir une feuille excel qui permet

d'obtenir une troisième feuille prenant les mêmes colonnes de OLD avec les actions suivantes :

1/ Cherche dans la colonne A les correspondances entre OLD ET NEW et qui met à jour sur une troisième feuille le Prix d'achat et le prix de vente, en se basant sur NEW si écart avec OLD, tout en gardant le détail des colonnes b/c/d/e/f de OLD

2 / Cherche dans NEW, les nouvelles références ( code barre) non présente dans OLD, et les ajoute à la troisième feuille avec les éléments B/C/D de new

3/ Intégrer dans la troisième feuille les articles présents dans OLD et/ou NEW, sans code barre dans A ou avec un code erroné #valeur et reporter dans la troisième feuilles les rubriques B/C/D/E/F/G/H de old ou B/C/D/E/F de NEW.

Pour synthétiser, mettre à jour les dernier fichier sur la base de l'ancien.

Espérant avoir été clair.

Je vous remercie énormément par avance.

A bientot David

Bonsoir,

Oui c'est clair !

Une précision à apporter toutefois, la 3e feuille étant sur le modèle OLD, les ajouts provenant de NEW, pour les colones B C D, devraient donner :

B new —› D old

Cnew —› Eold

Dnew —› Fold

à confirmer.

Et il ne te reste plus qu'à fournir un fichier modèle avec 2 feuilles et un échantillonnage de données illustrant les différents cas indiqués à partir duquel on te bâtira une procédure générant cette 3e feuille...

Cordialement.

Bonjour,

Merci pour ce premier retour ultra rapide.

Voici 2 modèles de fichiers OLD ET NEW, avec des exemples de :

> Produits identiques mais avec des prix d’Achats et ou de ventes différents entre les 2

> Produits présents dans old mais non scannés dans new ( ref à renregistrer quand meme si rupture stock momentanée, idéalement sans le prix de vente)

> Produits présents dans NEW, mais absents dans old ( nouvelle gamme 2017), à intégrer directement dans le troisième fichier

Je peux faire mon affaire des autres colonnes dont je ne vous ai pas parlé de OLD, mais si elle peuvent etre rapportées dans la troisième c'est la cerise sur le gâteau !!

Merci et bonnes fêtes à tous !

39modele-old.xlsm (122.56 Ko)
57modele-new.zip (13.54 Ko)

Bonjour,

Il faut bien préciser la situation dans laquelle on opère... tu parlais de feuilles, ici on a 2 classeurs, enregistrés sous des formats différents, dont le OLD présente des bizarreries dont j'aimerais bien savoir comment elles ont été obtenues...

Est-ce bien la situation de départ ?

Opère-t-on à partir d'un 3e classeur pour obtenir le résultat dans ce dernier ?

Dans tes classeurs, les codes-barres sont des nombres à 9 chiffres.

Est-ce bien rigoureusement la même chose dans tes classeurs réels ?

On se fout des données qui peuvent être tout à fait fictives, mais pour que ça fonctionne elles doivent présenter les même caractéristiques que les données réelles : nombres ou texte, composition, longueur. Et tes cellules doivent être aux mêmes formats que dans les classeurs réels...

Cordialement.

Bonjour,

Voici les précisions :

Le fichier OLD est le modèle exact de ma base de données que j'ai constitué fin 2016 pour construire un inventaire informatisé et la base de données pour l'insérer dans la future caisse enregistreuse informatisée le 010118.

C'est pour cela que les diverses colonnes et sont nécessaires dans le fichier final.

Les nombres des codes barres sont factices en longueur.

Les vrais nombres sont de longueurs normales pour des codes barres soient 13 chiffres pour la plupart.

Le fichier NEW est le modèle exact utilisé pour scanner via l'application SCANPET sur Android les produits présents en magasin.

New est tiré à la base de OLD, mais en version allégée permettant juste de vérifier sur le smartphone le code barre, la marque, la désignation, la contenance, le prix d'achat, de vente.

New devrait aussi être utilisé début janvier pour faire l'inventaire d'où les quantités que nous pouvons rentrer.

En effet ce ne sont pas des feuilles mais des fichiers.

Si vous pouvez travailler sur 2 fichiers et en créer un 3 ème c'est parfait.

Si le résultat doit aller sur un seconde feuille dans le fichier New, c'est top.

Si je dois faire un copier coller des 2 feuilles des 2 fichiers pour avoir le résultat sur une troisième feuille ça ira également.

Le plus simple pour vous sera le meilleur pour moi car toujours plus rapide que de me taper mes 2500 références à la main !

😁😁😁

On peut opérer à partir du fichier New (mais alors converti au nouveau format, et donc en .xlsm) ou à partir d'un 3e fichier. C'est tout à fait équivalent et ne dépend que de tes préférences...

Les deux points restants à préciser :

1) la réponse à ma question sur les codes-barres : nombre ou texte ? et quel format de cellule ?

Dans tes fichiers transmis :

  • pour Old, c'est donnée texte, et cellule au format Texte, il suffit d'ôter l'alignement forcé à droite, et le contenu va se cadrer à gauche, indiquant du texte...
  • pour New, c'est donnée numérique (on ôte l'alignement et ça se cadre à gauche), et cellule au format Nombre sans décimales...
Il faut donc établir ce qu'il en est et unifier préalablement...

2) le nombre de colonnes de Old à prendre en compte et lesquelles est à confirmer, car le fichier ne correspond pas très exactement à la description de ton post initial, une précision absolue est requise en la matière...

Cordialement.

Bonjour,

Pour répondre à tes questions :

Partons sur un 3 eme fichier pour agréger old et new.

1/ De mémoire les codes barres étaient rentrés au format texte, car parfois le premier chiffre est un zéro, et il me semble qu'avec un format nombre le zéro disparaissait quand il était au début.

Avec cette contrainte nous pouvons tout passer en TEXTE ou convertir en NOMBRE, comme tu le voudras.

2/ Le nombre de colonnes de OLD.

En suivant tu trouveras la photo des catégories obligatoires que j'apporte dans le logiciel de caisse pour lui faire sa base de données.

En comparant avec le fichier OLD cela correspond aux colonnes :

A, D, E, F, I, J, M, AA, AB, P, Q, T, X, Y

au final, le fichier agrégé sera ensuite transformé en .txt, pour etre entré dans la caisse ( format demandé par le logiciel)

Espérant avoir été assez précis, sinon n’hésite pas !

David

Tu indiques 14 colonnes, il y 15 zones dans ton doc pdf, la supplémentaire semble être CATEGORIE (zone 4) qui double CATEGORIES... On reste à 14 ?

Si je me fie à tes indications, la 3e feuille reprend ces 14 colonnes dans l'ordre que tu indiques, laissant de côté celles qui ne figurent pas dans cette liste.

Pour New ne sont servies que : 1 5 6 7 11 12 (dans l'ordre de ta liste).

Le code barre servant d'identificateur entre Old et New : à part les prix (à mettre à jour), les autres rubriques sont supposées identiques : doit-on le vérifier ? et qu'en est-il s'il apparaît des différences ?

Cordialement.

Oups,

j'ai oublié en effet "catégorie" soit A, D, E, G, F, I, J, M, AA, AB, P, Q, T, X, Y soit 15 colonnes et 15 zones

Désolé.

La 3 eme feuille doit reprendre ces 15 zones, pour pouvoir alimenter les infos de la caisse.

New ne reprends que partiellement les informations donc plusieurs scénaris sont possibles :

Si code barre présent dans OLD ET NEW :

1/ les informations de NEWS priment TOUJOURS sur OLD et les remplacent si EXISTANTES et les autres Zones complémentaires de OLD viennent compléter les informations partielles de NEW

2/ SI des zones de NEW sont vides, alors on reprend toutes les infos dispo des 15 zones de OLD SAUF le prix d'achat et de vente qui doivent rester vides pour être mise à jour manuellement via la caisse.

3/ Si des zones de OLD sont vides et que l'on peut les compléter partiellement avec NEW, alors on prends les prix de new, les infos dispo de OLD ( sauf les prix ) et on complète avec les DISPO complémentaire de NEW.

SI code barre present dans OLD mais ABSENT dans NEW :

(cela peut-etre le cas pour des pdt en rupture temporaire donc non scannés dans mon inventaire des dernières semaines)

4/ Idem 2/ précédent : toutes les infos sauf les prix ( A & Vte)

Si des codes barres sont ABSENT dans OLD et PRESENT dans NEW :

( nouveau produits récemment référencés)

5/ On crée une nouvelle ligne avec les informations partielle de NEW, que je completerai ensuite manuellement ( catégorie / famille / catégories etc..) sur les zones manquante de new / Old.

Voila voila voila, j'espère que toutes ces précisions ne rendent pas ca trop compliqué.

a bientot

Ok ! Il va falloir un peu jongler avec les colonnes qui baladent, mais je ferai ça à tête reposée...

A+

Génial bon courage !

Bonjour,

Voilà le résultat à tester :

Sub Synthèse_OldNew()
    Dim chD$, wb As Workbook, d As Object, Tbl(), Tmq()
    Dim kOld, kNew, k, dln&, n&, i&, m%, j%
    chD = ThisWorkbook.Path & "\"
    Set d = CreateObject("Scripting.Dictionary")
    kOld = Array(1, 4, 5, 7, 6, 9, 10, 13, 27, 28, 16, 117, 120, 24, 25)
    Application.ScreenUpdating = False
    'Traitement fichier OLD
    Set wb = Workbooks.Open(chD & "MODELE OLD.xlsm")
    With wb.Worksheets(1)
        dln = .Cells(.Rows.Count, 1).End(xlUp).Row
        ReDim Tbl(14, dln)
        For i = 2 To dln
            If VarType(.Cells(i, 1)) = vbString Then
                d(.Cells(i, 1).Value) = n
                For j = 0 To 14
                    Tbl(j, n) = .Cells(i, kOld(j))
                Next j
                n = n + 1
            Else
                If Not IsEmpty(.Cells(i, 1)) Then
                    ReDim Preserve Tmq(14, m)
                    Tmq(0, m) = "ref manque"
                    For j = 1 To 14
                        Tmq(j, m) = .Cells(i, kOld(j))
                    Next j
                    m = m + 1
                End If
            End If
        Next i
    End With
    wb.Close False
    ReDim Preserve Tbl(14, n - 1)
    kNew = Array(0, 5, 6, 7, 11, 12)
    'Traitement fichier NEW
    Set wb = Workbooks.Open(chD & "MODELE NEW.xlsm")
    With wb.Worksheets(1)
        dln = .Cells(.Rows.Count, 1).End(xlUp).Row
        'Conversion des données de la col. A et changement format cellules prix
        With .Range("A2:A" & dln)
            k = .Value
            .NumberFormat = "@"
            For i = 1 To dln - 1
                If k(i, 1) <> "" Then k(i, 1) = k(i, 1) & ""
            Next i
            .Value = k
            .Offset(, 4).Resize(, 2).NumberFormat = "# ##0.00"" €"""
        End With
        'Traitement des données
        For i = 2 To dln
            If VarType(.Cells(i, 1)) = vbString Then
                k = d(.Cells(i, 1).Value)
                If k <> "" Then
                    k = CLng(k)
                    For j = 1 To 5
                        If .Cells(i, j + 1) <> "" Then Tbl(kNew(j), k) = .Cells(i, j + 1)
                    Next j
                Else
                    ReDim Preserve Tbl(14, n)
                    For j = 0 To 5
                        Tbl(kNew(j), n) = .Cells(i, j + 1)
                    Next j
                    n = n + 1
                End If
            Else
                If Not IsEmpty(.Cells(i, 1)) Then
                    ReDim Preserve Tmq(14, m)
                    Tmq(0, m) = "ref manque"
                    For j = 1 To 5
                        Tmq(kNew(j), m) = .Cells(i, j + 1)
                    Next j
                    m = m + 1
                End If
            End If
        Next i
    End With
    wb.Close False
    'Affectation des données dans le classeur3
    k = n + m
    With ThisWorkbook.Worksheets(1)
        With .Cells(2, 1).Resize(k)
            .NumberFormat = "@"
            .Offset(, 11).Resize(, 2).NumberFormat = "# ##0.00"" €"""
        End With
        .Cells(2, 1).Resize(n, 15).Value = WorksheetFunction.Transpose(Tbl)
        .Cells(n + 2, 1).Resize(m, 15).Value = WorksheetFunction.Transpose(Tmq)
        .Activate
    End With
End Sub

J'ai ajouté quelques explications dans le fichier. La mise au point avec les fichiers modèles a présenté quelques points épineux, notamment avec NEW. J'espère que les fichiers réels ne présenteront pas de divergences qui feraient que les solutions ajustées en pas mal d'essais sur les modèles jusqu'à arriver à une solution qui fonctionne, ne fonctionneraient pas sur les fichiers réels. C'est maintenant à toi de tester !

Bonne fin d'année et Meilleurs voeux 2018...

Salut,

Avant tout merci beaucoup pour ton aide !

Je te souhaite une très bonne année 2018 remplie de bonheur.

Concernant ton fichier, il faut que je le teste.

Il y avait des messages d'erreur sur des pbm de compatibilité.

Je fais donc un petit travail d'harmonisation ( différents formats sur mes colonnes de prix à premiere vue)... Et je reviens vers toi ensuite.

À plus

Rechercher des sujets similaires à "comparateur base donnees prix"