Enregistrer une base de données + code-barre

Salut à tous ! Je suis nouveau sur ce forum, pour me présenter je suis débutant sur Excel Étant en alternance logistique, je dois réaliser un projet et je souhaiterais savoir s’il est possible de scanner le code barre d’un article et qu automatiquement, toute une série d'informations apparaît (désignation, emplacement, quantité,...)

Mercii !!!

Bonjour,

Je ne connais rien aux douchettes mais si le code scanné par la douchette se trouve dans une base de données, il sera possible de rapatrier les données liées !

En attendant plus de précisions, bonne soirée !

Bonjour!

Merci pour votre réponse ! Oui, lorsque je scanne, le code barre apparaît bel et bien sur Excel. Donc sauriez-vous comment faire pour enregistrer des données (4 ou 5 pour chaque code barre) et qu’elles apparaissent directement lors du scan ?

A ce jour, absolument rien n’est enregistré, c’est justement le but de mon projet ^^

Les données que tu souhaites enregistrer sont donné par le scan du produit ? ça me semble bizarre ça ! Les données sont stockées quelque par (un autre fichier par exemple) ?

Non, non, justement pour le moment absolument rien n’est créé. N’apparaît seulement les chiffres du code barre lorsque celui ci est scanné depuis une étiquette.

Je voudrais justement créer une base de données pour lorsque je scanne le code barre, apparaissent en plus des chiffres, la désignation du produit, l’emplacement, la quantité et une ou 2 autres informations.

Mais je ne sais absolument pas comment faire...

Bonjour,

Dans un premier temps, il te faut créer ta base de données c'est à dire inscrire toutes les valeurs afférentes à tes différents produit en commençant par le code du produit (qui est unique) en colonne A (c'est dans cette colonne que vont s'effectuer les recherches) et sur les cellules à droite les valeurs que tu désires stocker. Comme je n'ai jamais utilisé de douchette, je ne sais pas si la procédure événementielle "Change()" est exécutée quand cette dernière inscrit le code dans la cellule mais voici à quoi ça pourrait ressembler, code à mettre dans le module de la feuille où seront inscrit les résultats des scan :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Plage As Range
    Dim Cel As Range
    Dim Col As Long

    'seulement si modif dans une seule cellule et sur la colonne A
    If Target.Count > 1 Then Exit Sub
    If Target.Column > 1 Then Exit Sub

    With Worksheets("Base de données")

        'défini la plage sur la colonne A de la feuille "Base de données" à partir de A2
        Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)):

        'effectue la recherche...
        Set Cel = Plage.Find(Target.Value, , xlValues, xlWhole)

        '...si trouvé, défini le nombre de colonnes à récupérer par rapport aux entêtes (ligne 1)
        'et inscrit les valeurs dans les cellules de droite
        If Not Cel Is Nothing Then

            Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Target.Resize(1, Col).Value = Cel.Resize(1, Col).Value

        End If

    End With

End Sub

La feuille qui va servir de base de données s'appelle, dans mon code, "Base de données" (original non ? )

Voici le classeur exemple :

Sur la feuille nommée "Scan", entres la série de chiffres 123456789 ou 987654321, valides avec Entrée et regardes le résultat !

Wahhhh c’est super sympas Merci beaucoup !!! Il n’empêche que ça m’a l’air hyper hyper complexe à faire pour un semi-debutant

Je ne sais même pas par où commencer ni ou aller

T’aurais pas un tuto vidéo par hasard ?

Encore merci beaucoup!!!

Tu peux partir du classeur que je t'ai fourni sachant que la seule contrainte est que les codes produits donc, les identifiants (les mêmes que la douchette va ramener dans la feuille "Scan", feuille que tu peux renommer sans souci) soient uniques et situés en colonne A (si ils sont ailleurs, il faudra modifier le code).

Tu peux modifier les entêtes de colonnes, en rajouter si le nombre ne suffit pas car la ligne de code ci-dessous :

Col = .Cells(1, .Columns.Count).End(xlToLeft).Column

permet de récupérer toutes les valeurs qui peuvent se trouver sur la même ligne que l'identifiant, que tu ais 5 champs ou 20, le résultat sera pareil, il ne manque aucune information sur le produit scanné !

Si tu cherches des tutos, il doit y en avoir une multitude sur le Net mais déjà, sous ton post tu as des sujets similaires qui te sont proposés et que tu peux parcourir pour te faire une idée !

Oh lala c’est énorme ça marche à la folie t’es un génie!!!!

Merci infiniment t’as pas idée à quel point ça va m’aider t’as géré de ouf

Bonjour,

Content de t'avoir aidé et si tu as encore besoin, tu reviens

Ah ba pour le coup je n’hésiterai pas!!

D’ailleurs au passage, il me manque une colonne je souhaiterais en rajouter une, pourrais-tu me dire ?

Merci à toi

Bonjour,

Comme je te l'ai dis dans mon précédant message, tu peux rajouter autant de colonnes que tu le souhaites, il te faut juste faire en sorte que tu ai les mêmes entêtes dans les deux feuilles !

Salut ! Une question par rapport à la base de données que tu m’as faite (qui fonctionne très très bien au passage), je souhaiterais lorsque je scan plusieurs fois le même article, celui-ci ne se mette pas en doublon et que la quantité s’ajuste en fonction du nombre de fois qu’il est scanné, ça doit être une simple formule à rentrer ou un code vba ?

Merciiii

Bonjour,

Testes ce code pour voir si il te convient !

Private Sub Worksheet_Change(ByVal Target As Range)

    '*** <--- ce qui a été ajouté !

    Dim Plage As Range
    Dim PlgScan As Range '***
    Dim Cel As Range
    Dim CelScan As Range '***
    Dim Col As Long

    'seulement si modif dans une seule cellule et sur la colonne A
    If Target.Count > 1 Then Exit Sub
    If Target.Column > 1 Then Exit Sub

    With Worksheets("Base de données")

        'défini la plage sur la colonne A de la feuille "Base de données" à partir de A2
        Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))

        'effectue la recherche...
        Set Cel = Plage.Find(Target.Value, , xlValues, xlWhole)

        '...si trouvé, défini le nombre de colonnes à récupérer par rapport aux entêtes (ligne 1)
        'et inscrit les valeurs dans les cellules de droite
        If Not Cel Is Nothing Then

            'défini la plage sur la feuille "Scan" en colonne A à partir de A2
            With Worksheets("Scan"): Set PlgScan = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With '***

            'effectue la recherche...
            Set CelScan = PlgScan.Find(Target.Value, Target, xlValues, xlWhole) '***

            '...si trouvé, ajoute +1 à la quantité existante
            If Not CelScan Is Nothing Then '***

                CelScan.Offset(, 3).Value = CelScan.Offset(, 3).Value + 1 '***
                Target.Value = "" '***

                'si la quantité doit être modifiée dans la base de données, ajoute +1
                'Cel.Offset(, 3).Value = Cel.Offset(, 3).Value + 1 '***

            'sinon, récupère les valeurs dans la feuille "Base de données"
            Else '***

                Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
                Target.Resize(1, Col).Value = Cel.Resize(1, Col).Value

            End If '***

        End If

    End With

End Sub

Bonjour,

Ok j'arrive à rentrer le code vba, mais ensuite rien ne se passe, je dois mal exécuter ou ne pas faire la bonne manip après à mon avis.

Je vais essayer de trouver à partir de ton code, merci beaucoup une nouvelle fois

Il n'existe pas une simple formule par hasard ? (au lieu d'un code VBA qui est plus complexe à mettre en place)

Merci!

Rechercher des sujets similaires à "enregistrer base donnees code barre"