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
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
A voir également:
- Scanner excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
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
26 avril 2015 à 10:25
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 :)
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
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
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
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
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 :
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 ;)
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
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 :
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.
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
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 :
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)
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
4 mai 2015 à 10:55
merci monsieur redaiwa pour toutes vos efforts ça m'a vraiment aidé
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
5 mai 2015 à 13:11
Tout le plaisir est pour moi.
Je reste disponible en cas de besoin :)
Je reste disponible en cas de besoin :)
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
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 ?
Dans le fichier stock, il y a deux colonnes par date. Laquelle faut-il prendre en compte pour le cumul ?
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
Modifié par redaiwa le 5/05/2015 à 16:48
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.
bonjour ,
j'ai une question s'il vous plait , je peux ouvrir le deuxième fichier (FichierStock.xlsx) dans un autre pc ?
j'ai une question s'il vous plait , je peux ouvrir le deuxième fichier (FichierStock.xlsx) dans un autre pc ?
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
21 mai 2015 à 11:48
Cela nécessite une gestion réseau et une technicité que je ne possède pas.
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
21 mai 2015 à 12:21
mercii pour votre reponse ainsi pour tous le travail que vous faites
26 avril 2015 à 12:19
Modifié par redaiwa le 26/04/2015 à 14:56
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.
27 avril 2015 à 20:53