Excel et le scan

Résolu/Fermé
santi1 - Modifié par santi1 le 24/04/2015 à 13:40
santibella Messages postés 5 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 21 mai 2015 - 21 mai 2015 à 12:21
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.
A voir également:

4 réponses

redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
26 avril 2015 à 10:25
Salam santi1.

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 :)
1
santibella Messages postés 5 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 21 mai 2015
26 avril 2015 à 12:19
MERCI REDAIWA pour votre réponse :)
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
Modifié par redaiwa le 26/04/2015 à 14:56
Pour insérer cette macro dans votre fichier, procéder comme suit :
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.
0
santibella Messages postés 5 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 21 mai 2015
27 avril 2015 à 20:53
oui ca marche :) merci beaucoup pour votre aide (y)
0
santibella Messages postés 5 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 21 mai 2015
28 avril 2015 à 11:07
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
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
28 avril 2015 à 13:24
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 :
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 ;)
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
28 avril 2015 à 15:46
Pour pouvoir ajouter un nouvel article qui n'existe pas dans le fichier stock, il faut ajouter ce bout de code :
    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.
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
28 avril 2015 à 16:36
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 :
.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)
0
santibella Messages postés 5 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 21 mai 2015
4 mai 2015 à 10:55
merci monsieur redaiwa pour toutes vos efforts ça m'a vraiment aidé
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
5 mai 2015 à 13:11
Tout le plaisir est pour moi.
Je reste disponible en cas de besoin :)
0
bonjour ,
j'ai testé les deux fichier tous ca marche bien mais il y a une problème lorsque je fais le scan pour le 2 eme fois pour le même référence il ne fait pas la somme des quantités .vous pouvez m'aider s'il vous plait
cordialement
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
Modifié par redaiwa le 5/05/2015 à 16:38
Salam santibella.
Dans le fichier stock, il y a deux colonnes par date. Laquelle faut-il prendre en compte pour le cumul ?
0
le premier colonne en fait je dois fusionner les deux colonnes
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
Modifié par redaiwa le 5/05/2015 à 16:48
Re Salam.
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.
0
bonjour ,
j'ai une question s'il vous plait , je peux ouvrir le deuxième fichier (FichierStock.xlsx) dans un autre pc ?
0
redaiwa Messages postés 351 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 25 janvier 2024 119
21 mai 2015 à 11:48
Cela nécessite une gestion réseau et une technicité que je ne possède pas.
0
santibella Messages postés 5 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 21 mai 2015
21 mai 2015 à 12:21
mercii pour votre reponse ainsi pour tous le travail que vous faites
0