Je suis completement perdu, j'ai besoin de votre aide!
j'ai des numéros de lot dans la colonne A (A4 A5 ect)
Ces numéros de lot sont créer par une autre macro et il y en a beaucoup.
Je voudrais que mes scan de numéro soit comptabilisé grâce à un lecteur datamatrix (ma cellule pour scanner est G5) dans la colonne C (à partir de C4)
et surtout que chaque numéro de lot soit reconnu et comtabilisé par ligne
je donnerais volontiers un coup de main mais je n'ouvre pas d'emblée les classeurs à télécharger sauf si après un certain nombre d'échanges on arrive pas à une solution.
Le fait d'enregistrer manuellement ou avec une douchette ne change rien au problème.
Explique où se trouve la liste de ce que tu enregistres avec la douchette (plage de cellules) et affiche les procédures que tu utilises pour réceptionner chaque enregistrement et l'écrire dans la plage en question.
Pour dénombrer le nombre de cellules dans une plage, il suffit déjà d'utiliser la fonction NBVAL Exemple rapide
Pour enregistrer les pièces entrées par la douchette, j'utilise pour ma part la procédure événementielle dans une liste qui contient trois colonnes
Colonne 1 le code barre(EAN 13)
Colonne 2 Le libellé de l'article (Fonction RECHERCHEV)
Colonne 3 Le prix de l'article (Même fonction)
Le ticket de caisse est alimenté par un tableau croisé dynamique donc la procédure se limite à actualiser le tableau croisé dynamique
Voilà le code de cette procédure
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 1 Then
Me.PivotTables("pvtTicket").PivotCache.Refresh
End If
End With
End Sub
Pour cet exemple très simple, l'option de déplacement de sélection après validation est forcée vers le bas à l'activation de la feuille
Code:
Dim Direction As Integer ' Déclaration de variable en tête du module de la feuille
Private Sub Worksheet_Activate()
' Force le déplacement de sélection après validation vers le bas
With Application
Direction = .MoveAfterReturnDirection
.MoveAfterReturnDirection = xlDown
End With
End Sub
Remettre l'option dans son état initial, lorsque l'on quitte la feuille
Code:
Private Sub Worksheet_Deactivate()
Application.MoveAfterReturnDirection = Direction
End Sub
Re : Comptabiliser le nombre de scan effectué par une douchette
Bonjour,
Merci pour la réponse.
En fait je crée des numéros de lot manuellement, ceux ci s'affiche dans la colonne A, ces numéros identifient des objets que je dois laver. Je scan ces objets à chaque fois qu'ils sont laver afin de connaître le nombre de lavage.
Je souhaite donc que dès que je scan un numéro celui ci ajoute 1 dans la colonne C en face du numéro scanné.
Je vais avoir de nombreux numéro de lot et il ne faut pas qu'il y ai d'erreur.
Je viens de me mettre sur les macro je m'en suis sortie jusqu'à présent avec les codes mais là je sèche!
J'ai essayé de commencer mais je n'aboutie à rien ! je tourne en rond depuis hier.
est il possible d'avoir une solution à ce problème ?
Re : Comptabiliser le nombre de scan effectué par une douchette
Bonjour,
Pourquoi n'édites-tu pas le code que tu as réalisé en disant où tu bloques.
As-tu essayé à l'aide de la fonction NBVAL (c'est le rôle de cette fonction de dénombrer le nombre de de cellules remplies) en référençant la colonne où se trouve les codes scannés
Re : Comptabiliser le nombre de scan effectué par une douchette
Voilà ce que j'avais commencer à faire mais je ne sais pas quoi mettre pour que les cellules de la colonne A étant donné que ce sera aléatoire.
Je n'utilise pas NBVAL car il ne peut représenter que 255 arguments et j'en aura beaucoup plus.
Je n'ai pas de code pour faire en sorte qu'excel prenne directement en compte le scan sans cliquer sur un bouton
'je compare la colonne A avec la cellule H5
Dim i, Lne As Integer
For i = 1 To 8
If Range("A" & i).Value = Range("H5").Value Then Lne = i
Next i
Range("C") = Lne
Si ma cellule H5 correspond à une cellule de la colonne A alors en C de la même ligne on ajoute 1
With.Sheets("CYCLE ").Select
If (Range("H5")) = Une cellule de la colonne A Then '
Range("la cellule de la colonne C sur la même ligne que celle de la colonne A").Value = Range("la cellule de la colonne C sur la même ligne que celle de la colonne A ").Value + 1
End If
End With
End Sub
Pourquoi as-tu besoin de 255 arguments ? C'est bien la première fois que je suis confronté à une personne qui a besoin d'autant d'arguments surtout pour NBVAL. As-tu lu l'aide en ligne pour cette fonction et as-tu au moins essayé de l'utiliser ?
Code:
=NBVAL(A2:A10000)
Va renvoyer le nombre de cellules remplies dans les cellules de la plage A2:A10000
Je n'ai pas de code pour faire en sorte qu'excel prenne directement en compte le scan sans cliquer sur un bouton
Il n'y a pas de code particulier et cela ne dépends pas d'excel mais du lecteur.
Tous les lecteurs on un code barre avec la manière dont doit être envoyé la lecture. Il faut choisir le bon code qui doit envoyer le CrLf (Carriage Return Line feed)
Que dois-tu faire exactement ?
Lire le code barre dans une colonne ?
et ensuite que dois-tu faire de ces éléments lus ?
Et après faut-il effacer la colonne lue ?
et ainsi de suite.
Une bonne analyse des besoins est la première chose à faire avant de commencer à programmer.
L'exprimer ensuite par écrit te permettra d'obtenir une réponse pertinente et détaillée.
Re : Comptabiliser le nombre de scan effectué par une douchette
En effet en listant par écrit ça me semble plus claire !
NBVAL ne convient pas pour ce que je veux faire ou sinon je ne comprend pas à quoi sert cette fonction.
j'ai refais avec des exemples de numéro de lot mon fichier
Voici ce que j'ai poser par écrit :
Je scan l'étiquette de mon objet dans la cellule G5, exemple le lot V26V1 qui se trouve en A13
mon numéro est reconnu dans la colonne A soit en A13
mon scan est comptabilisé sur la même ligne mais dans la colonne C soit en C13
mon scan doit être ajouté aux scan déjà éffectué c'est à dire ici il y a 5 scan et après mon scan je passe à 6
une fois comptabiliser ma cellule G5 s'efface pour pouvoir être sur que mon scan a bien été comptabilisé
et je peux de nouveau scanner un autre numéro
Re : Comptabiliser le nombre de scan effectué par une douchette
Bonjour SANDRA2012, Philippe Tulliez,
De ce que je crois comprendre, effectivement NBVAL ne conviendrait guère (mais j'insiste sur le conditionnel!)
Si en G5 n'apparaît que le code d'un article unique, puis qu'au clic sur le bouton "Enregistrer", il faut repérer la position dudit code en colonne A et incrémenter d'une unité le nombre dans la même ligne, en colonne C, ceci (à placer dans un module standard et à associer au bouton) devrait faire le début du travail:
VB:
Sub ENREGISTRER()
With Sheets("CYCLE")
If .[G5] = "" Then Exit Sub
numLigne = Application.Match(.[G5], .[A:A], 0)
If IsNumeric(numLigne) Then Cells(numLigne, 3) = Cells(numLigne, 3) + 1
' prévoir un traitement éventuel si code inconnu
End With
End Sub
Je n'ai pas effacé le contenu de G5; il faut que tu précises s'il y a des cas particuliers à gérer (exemple un code scanné qui n'existe pas en colonne A)
Re : Comptabiliser le nombre de scan effectué par une douchette
Bonjour,
Le code fonctionne parfaitement bien ! merci beaucoup mais j'aimerais ne pas avoir à cliquer sur le bouton enregistrer afin que ça s'enregistre directement lorsque que j'ai scanné mon code que faut il ajouter?
Pourrais tu m'expliquer le code que tu m'as donner ligne par ligne s'il te plais car je ne le comprends pas trop!
j'ai une autre petite colle tu pourrais de nouveau m'aider?
merci pour ta réponse
Bonne journée
Re : Comptabiliser le nombre de scan effectué par une douchette
Bonjour,
Il est peut-être possible d'exploiter l'événement Worksheet_Change ... mais c'est à vérifier! Si on inscrit "manuellement" un code en G5, ça fonctionne, mais je ne sais pas si ce sera toujours le cas quand tu scannes
Peux-tu copier les lignes suivantes, non plus dans un module standard, mais dans la fenêtre de code de la feuille "CYCLE"
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$G$5" Then Exit Sub 'on ne passe à la suite que si c'est G5 qui est modifiée
If Target = "" Then Exit Sub 'si la cellule G5 est vide, on quitte la procédure
numLigne = Application.Match(Target, [A:A], 0) 'même chose que: =EQUIV(G5;A:A;0) ... donne le n° de ligne du code en G5
If IsNumeric(numLigne) Then Cells(numLigne, 3) = Cells(numLigne, 3) + 1 'si le code a été trouvé, on ajoute 1 à la cellule de la ligne en question, en colonne C
' prévoir un traitement éventuel si code inconnu
End Sub
Il reste toujours la question des cas particuliers à laquelle tu n'as pas répondu!?
Pour ta "petite colle", je m'attends au pire Ne devrait-elle pas faire l'objet d'un autre fil? Ce qui est certain, c'est qu'il faudra que tu prennes le temps d'expliquer en détail et de manière structurée.
Re : Comptabiliser le nombre de scan effectué par une douchette
normalement il n'y aura jamais de cas particulier les numéros sont créer automatiquement par une autre macro dans une autre feuille donc ils devraient toujours être au même format.
aller je lance une nouvelle discussion!
Re : Comptabiliser le nombre de scan effectué par une douchette
normalement il n'y aura jamais de cas particulier les numéros sont créer automatiquement par une autre macro dans une autre feuille donc ils devraient toujours être au même format.
aller je lance une nouvelle discussion!
Re : Comptabiliser le nombre de scan effectué par une douchette
les 2 codes marchent super bien sur mon petit fichier plus besoin de cliquer sur enregistrer c'est top
mais par contre quand je le met sur mon fichier final avec les autres macro ca ne fontionne plus du tout je suis en train de voir d'ou ça peut venir
Sinon oui les commentaires m'ont vraiment aider ! pas de doute!