Saisie cellule

Bonjour à tous,

Comment procéder pour que lors de la saisie d'une cellule et enter puiise faire appel à une Macro?

Merci de votre soutien

Amicalement

Noel

bonjour Noël

Est-ce que le sujet qui est ici répond à ta question (en changeant simplement le >0 par autre chose

https://forum.excel-pratique.com/excel/code-pour-appliquer-une-macro-t18056.html

Cordialement

28classeur1.zip (6.16 Ko)

RE,

Bonjour Amadeus,

Je l'avais sur le forum trouvé ce code et testé.

J'ai essayé d'impliquer ma macro "enter" elle continue à tourner en boucle m'inscrivant que sur une colonne. C'est en faisant "ESC" que j'arrête la maro.

Je dois avoir un problème de disposition de la macro par

Application.run "Enter"

La macro "Enter"

Sub enter()

Range("f1").Copy

With Sheets("caisse")

.Range("i65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues

End With

 Range("b1").Copy
    With Sheets("caisse")
            .Range("h65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
    Range("e1").Copy
    With Sheets("caisse")
            .Range("g65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
        'Stock les ventes
        Range("a1").Copy
  With Sheets("Vente")
            .Range("a65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With

 Range("b1").Copy
    With Sheets("Vente")
            .Range("b65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
    Range("e1").Copy
    With Sheets("Vente")
            .Range("c65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
        Range("f1").Copy
    With Sheets("Vente")
            .Range("d65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
        Range("h1").Copy
    With Sheets("Vente")
            .Range("e65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With

          'Stock les ventes Journalières
        Range("a1").Copy
  With Sheets("Vente_Jour")
            .Range("a65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With

 Range("b1").Copy
    With Sheets("Vente_Jour")
            .Range("b65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
    Range("e1").Copy
    With Sheets("Vente_Jour")
            .Range("c65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
        Range("f1").Copy
    With Sheets("Vente_Jour")
            .Range("d65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With
        Range("h1").Copy
    With Sheets("Vente_Jour")
            .Range("e65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
        End With

Range("a2") = Range("a2") + Range("f1")
Range("A1") = ""
 Range("e1") = 1
    Range("A1").Select

End Sub

Ce code en le faisant par un bouton il marche très bien mais en passant par

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If [a1] <> "" Then
        MsgBox "En changeant dans le Code la ligne MsgBox...par Call MaMacro, la macro MaMacro est lancée"
        End If
End Sub

comme je te l'avais dit plus haut il tourne en boucle.

Merci de ton aide

Amicalement

Noel

Bonjour Noël

En fin de Macro, tu resélectionnes A1avec

Range("A1").Select

et ceci redéclanche le Private Sub, qui redéclenche la Macro

Sélectionne une autre cellule en fin de Macro et reteste.

Cordialement

Re,

Concrètement comment dois-je placer ma macro "enter"

call ... ici que dois-je inscrire pour qu'il prenne en compte ma macro?

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If [a1] <> "" Then

call

End If

End Sub

Merci d'avoir attirer mon attention sur cette sélection. Mais à chaque je dois reselectionner "A1" pour saisir avec une douchette le scan du code barre. Dans ce cas comment dois-je me prendre pour éviter une boucle.

Merci de ton aide.

Amicalement

Noel

Bonjour Noël

Call enter

Cordialement

Re,

Malgré que je sélectionne une autre cellule exp ici "A3" le code boucle toujours

J'ai essayé de plusieurs façons à savoir ;

A1="" - A1=0 - A1<>"" - A1<>0

Cela me boucle toujours

Je compte beaucoup sur toi pour m'aider à résoudre ce proplème.

Merci d'avance

Amicalement

Noel

Bonjour,

Il est tout à fait logique que ton code tourne en boucle, tu ne testes pas la cellule qui est modifiée, mais tu ne fais que tester la valeur de la cellule A1 à CHAQUE changement dans la feuille....

Or, à la fin, tu mets cette ligne :

Range("a2") = Range("a2") + Range("f1")

Il y a un changement, donc il contrôle de nouveau la valeur de A1, qui n'est toujours pas vide, donc c'est reparti pour un tour...

si tu modifies la cellule A1 uniquement, fais un test pour savoir si c'est bien celle-là qui est modifiée :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    If [A1] <> "" Then
        Call MaMacro
    End If
End If
End Sub

Bonne journée

Re,

Bonjour Cousinhub,

Je ne sais pas ce qui se passe j'ai éliminer la ligne Range("a2") = Range("a2") + Range("f1")

ça continue de boucler. Je dois zapper quelque chose mais quoi?

Mon fichier est trop volumineux pour pouvoir le mettre sur le forum il fait 1450K°

Je pense il me reste que ce problème à résoudre sur ce projet.

Comment faire.

Merci de me donner une solution pour la suite

Avec mes remerciements

Amicalement

Noel

Re-,

est-ce que tu as également modifié l'évènement :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

comme proposé ci-dessous?

à te relire

Re,

Oui j'ai même fait un copier/coller

à te relire

@+

Amicalement

Noel

Re-,

avec ces codes, ça ne boucle pas, chez moi....(j'ai un peu simplifié ton code....)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    If [a1] <> "" Then
        Call MaMacro
    End If
End If
End Sub

et :

Sub MaMacro()
Dim ShCaisse As Worksheet, ShVente As Worksheet, ShVenteJour As Worksheet
Set ShCaisse = Sheets("caisse")
Set ShVente = Sheets("Vente")
Set ShVenteJour = Sheets("Vente_Jour")
Application.ScreenUpdating = False
Range("a1").Copy
    ShVente.Range("a65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVenteJour.Range("a65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
Range("b1").Copy
    ShCaisse.Range("h65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVente.Range("b65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVenteJour.Range("b65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
Range("e1").Copy
    ShCaisse.Range("g65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVente.Range("c65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVenteJour.Range("c65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
Range("f1").Copy
    ShVente.Range("d65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVenteJour.Range("d65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
Range("h1").Copy
    ShVente.Range("e65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    ShVenteJour.Range("e65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
Range("a2") = Range("a2") + Range("f1")
Range("A1") = ""
Range("e1") = 1
Range("A1").Select
Application.CutCopyMode = False
End Sub

Un gremlin's?

Re,

Ca fonctionne à merveille.

J'ai du rajouter une ligne de code.

Maintenant il me reste quand un produit est vendu plusieurs fois soit 4 fois j'aurais aimé avoir le temps de pouvoir saisir le chiffre 4 avec mon clavier numérique virtuel.

Actuellement il me copie les données automatiquement sans me laisser le temps d'entrer le nombre à l'exception de 1 unité qui se fait par code à l'ouverture du projet.

Y a t'il une solution?

Merci beaucoup, j'ai pas mal avancé.

A te relire

@ bientôt

Amicalement

Noel

Re-,

Euh, dans quelle cellule, tu veux entrer la quantité?

Si dans la cellule E1, par exemple, tu changes la condition pour déclencher le code :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("E1")) Is Nothing Then
    If [A1] <> "" Then
        Call MaMacro
    End If
End If
End Sub

ainsi, les copies ne vont se faire que lorsque tu auras mis ta quantité dans la cellule E1

Cette cellule doit être effacée à la fin des copies

Pour éviter les boucles, met ceci à la fin de la macro :

Range("a2") = Range("a2") + Range("f1")
Range("A1") = ""
Range("E1") = ""
Range("A1").Select
Application.CutCopyMode = False

Bonne journée

Re,

CousinHub, je suis désolé apparemment ma réponse n'est pas partie.

Je me vois dans l'obligation de recommencer toute l'explication.

Je disais qu'une vendeuse souvent n'a pas beaucoup de temps, afin de a faciliter la saisie il faudrai qu'elle a le moins de chose à faire.

Ta première solution me semble la bonne pour cela. Quant au 2ème il faut qu'elle rentre le chiffre en "E1" pour que la copie se fasse automatiquement. Je voulais savoir si lors de cette copie on pouvait utiliser les sigles "-" er "+" pour ajouter ou diminuer le derneir nombre rentré dans la colonne"G" ainsi de changer le Total en colonne "I" et de plus le rajouter en "A2" qui cumul le montant qu'aura à régler le client.

Je te donne aussi l'explication au niveau de la feuille du projet qui l'accompagne.

Je te remercie de m'avoir signaler ce manquement qui n'en ai pas un mais j'ai peut-être après avoir ecrit le message je ne l'ai pas expédié.

A te relire à très bientôt

Amicalement

Noel

31cfncaixxe2-xls.zip (51.53 Ko)

Re-,

D'après ce que j'ai compris, tu entres un code barre grâce à une douchette...

As-tu le tableau d'équivalence de tes codes barre avec les produits et les prix concernés?

tout ceci, afin de faire gagner du temps, en entrant le code barre, on obtient directement le produit, ainsi que le prix...

Si tu as ce tableau, peux-tu le poster, en remplaçant les produits par des données bidons, ainsi que les prix?

De plus, l'utilisation d'un userform pourrait peut-être être judicieux....

@ te relire

Re,

Effectivement j'ai ce tableau que j'ai été obligé de supprimer tout de suite il me fait passer à 1,5M° donc je ne peux pas te l'envoyer.

Ce tableau c'est une seconde feuille nommée "ARTICLE" avec les prix et les % d pratiqués ainsi que le calcul de la tva.

Le tableau séparé fait 1,2M° même vierge donc je ne peux pas te l'envoyer.

Il suffit de préparer une autre feuille nommé "Article" Avec P.U, Marge, TVA PUTTC.

J'ai recrée un tableau plus ou moins vierge surtout de tout calcul.

Concernant l'USERFORM je l'ai crée mais quand j'ai voulu faire la copie dans les tableaux correspondants JE N'AI PAS RÉUSSI à basculer les données dans les feuilles concernées.

Si tu pouvais voir ça

Je te remercie d'avance

Amicalement

Noel

32cfncaixxe3-xls.zip (56.49 Ko)

Re-,

Euh, quand je vois ton USF, je ne pense pas que la caissière ait besoin de toutes ces données....

On est bien d'accord, ce que tu veux, c'est suite à un scan, ton code barre s'affiche dans la cellule A1

Ensuite, tu voudrais que la désignation ainsi que le prix s'affichent...

La caissière n'aurait qu'à rentrer la quantité, à préciser si c'est une entrée ou une sortie, et valider?

C'est bien ça?

@ te relire

Re,

Effectivement c'est bien ça.

Je te parlais moi de la création de la fiche article c'est l'userforme que je t'ai envoyé.

Sinon on peut faire la saisie par USERFORM dans le formulaire CAISSE comme tu proposes.

La saisie du code barre dans l'USERFORM ne posera pas problème si effectivement qu'a chaque scan tout est enregistré dans les feuilles appropriées et qu'a chaque fois tu donneras l'information en quantité ces éléments seront repris dans les tableaux vente et vente du jour comme prévue dans "MaMacro".

Grace à toi j'avance à grand pas.

Merci de toute ton énergie.

@+

Amicalement

Noel

Re-,

dans le fichier joint, dès que tu modifies la valeur de la cellule A1, tu as l'usf.

Te reste à rentrer la quantité, tu peux modifier le prix, tu valides, ça rentre sur le ticket

Je n'ai pas fait la sauvegarde journalière, tu devrais t'en sortir...

A la fin de la commande, tu quittes l'usf, tu peux imprimer le ticket, et tu créés un nouveau client....

Bon W-E

52cfncaixxe2-v1.zip (53.67 Ko)
Rechercher des sujets similaires à "saisie"