Excel et le scan
Résolu
santi1
-
santibella Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
santibella Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour, j'ai un petit soucis je dois faire un inventaire de plus 100 références avec leur quantités et cela avec une douchette et lorsque je scanne des codes-barres de ma référence s'affiche bien dans ma cellule Excel mais le problème que je dois déplacer la souris dans la deuxième case pour la quantité donc il m'a demandé du temps , hors je souhaiterai que après chaque scanne le déplacement des cases se fait automatiquement ,en fait j'ai besoin seulement de deux colonnes une pour le référence et l'autre pour la quantité et je veux scanner sans utilisé la souris pour le déplacer (A1 pour le premier scan B1 pour le 2ème scan puis A2...) . Si quelqu'un a des suggestions.
Merci d'avance.
Bonjour, j'ai un petit soucis je dois faire un inventaire de plus 100 références avec leur quantités et cela avec une douchette et lorsque je scanne des codes-barres de ma référence s'affiche bien dans ma cellule Excel mais le problème que je dois déplacer la souris dans la deuxième case pour la quantité donc il m'a demandé du temps , hors je souhaiterai que après chaque scanne le déplacement des cases se fait automatiquement ,en fait j'ai besoin seulement de deux colonnes une pour le référence et l'autre pour la quantité et je veux scanner sans utilisé la souris pour le déplacer (A1 pour le premier scan B1 pour le 2ème scan puis A2...) . Si quelqu'un a des suggestions.
Merci d'avance.
A voir également:
- Scanner excel
- Liste déroulante excel - Guide
- Scanner qr code pc - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
4 réponses
Salam santi1.
Je pense que cette macro fera l'affaire :
Tiens-nous au courant si ça marche ou pas :)
Je pense que cette macro fera l'affaire :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Cells(Target.Row, 2).Select
If Target.Column = 2 Then Cells(Target.Row + 1, 1).Select
End Sub
Tiens-nous au courant si ça marche ou pas :)
bonjour
en fait j'ai une autre demande si possible ,je veux ajouter à ce fichier une bouton on l'appel entré lorsque je clique il n'emmène à une autre fichier excel ou je vais transférer mes données à ce fichier et qui fait la somme des quantités si on trouve la même référence ,et je veux le premier fichier soit actualisé pour un nouveau scan est possible ? je suis débutante en VBA ,en fait je fais une auto-formation pour aider un magasinier qui fait beaucoup de travail et qui perde beaucoup de temps
merci d'avance
en fait j'ai une autre demande si possible ,je veux ajouter à ce fichier une bouton on l'appel entré lorsque je clique il n'emmène à une autre fichier excel ou je vais transférer mes données à ce fichier et qui fait la somme des quantités si on trouve la même référence ,et je veux le premier fichier soit actualisé pour un nouveau scan est possible ? je suis débutante en VBA ,en fait je fais une auto-formation pour aider un magasinier qui fait beaucoup de travail et qui perde beaucoup de temps
merci d'avance
Salam santibella.
Soit le fichier de scan que nous appellerons "FichierEntrées.xlsm" (contient le code macro) et le fichier stock que nous appellerons "FichierStock.xlsx". Ces deux fichiers doivent être tous les deux ouverts.
Procédons comme suit :
1 - Créer un bouton de commande sur la feuille de scan.
2 - Copier le code suivant :
3 - Clic-droit sur le bouton de commande puis clic sur "Visualiser le code".
4 - Faire CTRL+V pour coller le code ci-dessus.
5- Retourner à la feuille de scan et tester si le clic sur le bouton créé transfère bien les quantités scannées vers le fichier stock.
Exemple de fichiers entrées et stock : https://www.cjoint.com/c/EDCnLwPZOqo
Fais-moi signe en cas de problème ;)
Soit le fichier de scan que nous appellerons "FichierEntrées.xlsm" (contient le code macro) et le fichier stock que nous appellerons "FichierStock.xlsx". Ces deux fichiers doivent être tous les deux ouverts.
Procédons comme suit :
1 - Créer un bouton de commande sur la feuille de scan.
2 - Copier le code suivant :
Dim LigneEntrées, LigneStock, LigneFinStock As Integer
Dim Trouve As Boolean
With Workbooks("FichierStock.xlsx").Worksheets("Feuil1")
LigneFinStock = .Range("A1").End(xlDown).Row
While Range("A2") <> ""
LigneStock = 2
Trouve = False
While LigneStock <= LigneFinStock And Not Trouve
If Range("A2") = .Range("A" & LigneStock) Then
.Range("B" & LigneStock) = .Range("B" & LigneStock) + Range("B2")
Trouve = True
Else
LigneStock = LigneStock + 1
End If
Wend
Rows(2).Delete
Wend
End With
3 - Clic-droit sur le bouton de commande puis clic sur "Visualiser le code".
4 - Faire CTRL+V pour coller le code ci-dessus.
5- Retourner à la feuille de scan et tester si le clic sur le bouton créé transfère bien les quantités scannées vers le fichier stock.
Exemple de fichiers entrées et stock : https://www.cjoint.com/c/EDCnLwPZOqo
Fais-moi signe en cas de problème ;)
Pour pouvoir ajouter un nouvel article qui n'existe pas dans le fichier stock, il faut ajouter ce bout de code :
Pour récapituler, l'ensemble du code sera ainsi :
J'espère que cela vous sera utile.
If Not Trouve Then
.Range("A" & LigneStock) = Range("A2")
.Range("B" & LigneStock) = Range("B2")
LigneFinStock = .Range("A1").End(xlDown).Row
End If
Pour récapituler, l'ensemble du code sera ainsi :
Private Sub BoutonTransférerEntrées_Click()
Dim LigneStock, LigneFinStock As Integer
Dim Trouve As Boolean
With Workbooks("FichierStock.xlsx").Worksheets("Feuil1")
LigneFinStock = .Range("A1").End(xlDown).Row
While Range("A2") <> ""
LigneStock = 2
Trouve = False
While LigneStock <= LigneFinStock And Not Trouve
If Range("A2") = .Range("A" & LigneStock) Then
.Range("B" & LigneStock) = .Range("B" & LigneStock) + Range("B2")
Trouve = True
Else
LigneStock = LigneStock + 1
End If
Wend
If Not Trouve Then
.Range("A" & LigneStock) = Range("A2")
.Range("B" & LigneStock) = Range("B2")
LigneFinStock = .Range("A1").End(xlDown).Row
End If
Rows(2).Delete
Wend
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Cells(Target.Row, 2).Select
If Target.Column = 2 Then Cells(Target.Row + 1, 1).Select
End Sub
J'espère que cela vous sera utile.
Lors du transfert vers le fichier stock, pour ne pas prendre en compte le premier caractère qui est "P" pour la référence ou "A" pour la quantité, il faut modifier la ligne suivante :
par celle-ci :
et aussi remplacer ces lignes :
par celles-ci :
.Range("B" & LigneStock) = .Range("B" & LigneStock) + Range("B2")
par celle-ci :
.Range("B" & LigneStock) = .Range("B" & LigneStock) + right(Range("B2"),len(Range("B2"))
et aussi remplacer ces lignes :
.Range("A" & LigneStock) = Range("A2")
.Range("B" & LigneStock) = Range("B2")
par celles-ci :
.Range("A" & LigneStock) = Right(Range("A2"), Len(Range("A2")) - 1)
.Range("B" & LigneStock) = Right(Range("B2"), Len(Range("B2")) - 1)
merci monsieur redaiwa pour toutes vos efforts ça m'a vraiment aidé
Re Salam.
Ok, j'ai trouvé l'erreur.
Dans le code suivant
remplace
par
NB: j'ai pris en compte la 1ère colonne de chaque date.
Ok, j'ai trouvé l'erreur.
Dans le code suivant
While LigneStock <= LigneFinStock And Not Trouve
If Trim(Right(Range("A" & LigneEntrées), Len(Range("A" & LigneEntrées)) - 1)) = Trim(.Range("A" & LigneStock)) Then
.Cells(LigneStock, ColonneJour) = Right(Range("B" & LigneEntrées), Len(Range("B" & LigneEntrées)) - 1)
Trouve = True
Else
LigneStock = LigneStock + 1
End If
Wend
remplace
.Cells(LigneStock, ColonneJour) = Right(Range("B" & LigneEntrées), Len(Range("B" & LigneEntrées)) - 1)
par
.Cells(LigneStock, ColonneJour) = .Cells(LigneStock, ColonneJour) + Right(Range("B" & LigneEntrées), Len(Range("B" & LigneEntrées)) - 1)
NB: j'ai pris en compte la 1ère colonne de chaque date.
1- Sélectionner le code de la macro ci-dessus et faire CTRL+C (pour le copier)
2- Clic-droit sur l'onglet de la feuille excel pour ouvrir l'éditeur VBA.
3- Faire CTRL+V pour coller le code dans VBA.
4- Faire ALT+F11 pour retourner au fichier excel
5- Travailler comme d'habitude et voir si ça fonctionne.
Salam.