[RESOLU] [Calc] Execution sur tableur de prix en caisse

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
michaorleans
Membre OOrganisé
Membre OOrganisé
Messages : 59
Inscription : 09 déc. 2013 20:09

[RESOLU] [Calc] Execution sur tableur de prix en caisse

Message par michaorleans »


La modération vous a écrit: "2 PB" supprimé du titre car inutile

Bijour à tout le monde!

Pour mon boulot dans un petit magasin, j'essaie de faire un petit tableau qui permettra de gagner du temps sur la confection d'une feuille de prix de fruit et légumes à la piece, je m'explique plus clairement :

actuellement j'ai un tableau regroupant tout les fruits et légumes vendu (à l'unité ou au poids), et quand je modifie des prix d'article à l'unité (ceux au poids, ne sont pas utile en caisse) sur ce tableau je doit ensuite le réécrire sur un autre tableau qui sera imprimé et affiché en caisse pour les utiliser lorsqu'un client achete un fruit ou légume à la piéce.

Moi ce que je voudrait faire c'est un claseur avec la feuille de tout les prix, pièce ou poids ("Liste" dans document joint), et une feuille par jour pour les prix à afficher en caisse ("Lundi", "Mardi",...).

La macro servira à chercher dans "Liste", les articles vendu à la pièce, et avec un prix de vente >0 (quand on met 0 en prix de vent c'est que cet article n'est pas en magasin), un fois trouvé, il inscrit dans la feuille "Lundi" le contenu des colonnes "A" (libellé) et "I" (Prix de Vente Hors Taxes)*1.055(pour donner le TTC) dans la feuille "Lundi"

La direction ne veut pas que je touche à l'organisation, ni aux formules contenu dans "Liste".

-------------------
Mes soucis sont les suivants
-------------------

dans l'ensemble la ligne:

While prixListe.getCellByPosition(8,DebutFinZone).Type <> com.sun.star.table.CellContentType.EMPTY AND _ prixListe.GetCellByPosition(2,DebutFinZone).String = UniteeVente.string

lorsque je veut exécuter la macro un message d'erreur apparaît et me dit "Valeur de propriété incorrecte"


et lorsque je remplace "DebutFinZone" par "4" (un des nombres que j'ai choisi au hasard)
While prixListe.getCellByPosition(8,4).Type <> com.sun.star.table.CellContentType.EMPTY AND _ prixListe.GetCellByPosition(2,DebutFinZone).String = UniteeVente.string

un autre message d'erreur apparaît me disant "variable non définie" (je ne sait pas quelle variable!!!)


... Si vous apercevez d'autres erreurs je vous ecouterait
Dernière modification par michaorleans le 31 juil. 2016 08:48, modifié 7 fois.
Apache open office 4.1.2 / jre 6 /windows 10
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Calc] Execution sur tableur de prix en caisse

Message par ThierryT »

Bonjour,

Dans ton programme, la variable DebutFinZone est une structure contenant différents éléments.
CaptureAOO.PNG
La méthode getCellByPosition requiert deux paramètres de type Long mais en aucun cas une structure.

Dans le code :
- le caractère _ en fin de ligne sert à lier deux lignes pour le compilateur => le caractère doit être supprimé de la ligne.
- la variable UniteeVente est de type String

Code : Tout sélectionner

Dim UniteeVente '=> pas de type défini
UniteeVente="Unitée" ' => le type est donc un String
mais en aucun cas un objet => dans le code mettre seulement UniteeVente dans le test.
La variable UniteeVente est initialisée avec "Unitée" alors que dans la feuille "Liste" les cellules contiennent "unitée".
Remplacer aussi DebutFinZone par une variable dans la boucle While qui sera initialisée à 3 (début du tableau) et qu'on incrémente ensuite.

Tu as mis dans ton programme

Code : Tout sélectionner

Opiton Explicit
ce qui signifie que toutes les variables doivent être définies. Ce n'est pas le cas pour numeroLigne => ajouter en début de procédure

Code : Tout sélectionner

Dim numeroLigne as Integer
Le code ne teste que la première ligne car on utilise une bouche while wend donc dès qu'on n'aura pas la chaîne de caractère "unitée", on sortira de celle-ci.
Il serait plus judicieux d'utiliser une boucle For Next.
Ce qui nous donnerait :

Code : Tout sélectionner

Dim j as integer
For j = 3 to DebutFinZone.StartRow
If prixListe.getCellByPosition(8,j).Type <> com.sun.star.table.CellContentType.EMPTY AND prixListe.GetCellByPosition(2,j).String = UniteeVente Then 'pour commencer, il faut "I" ait une valeur différente de 0, et que "C" soit marqué "Unitée".

boucle:

	numeroLigne = 3

	while prixCaisseLundi.GetCellByPosition(0,numeroLigne).type <> com.sun.star.table.CellContentType.EMPTY 'si dans la feuille "Lundi", quand A4 est remplit, on passe à A5; si A5 est remplit on passe à A6; ...
	numeroLigne=numeroLigne+1

	wend 

	If prixListe.GetCellByPosition(8,j).value <> 0 then prixCaisseLundi.GetCellByPosition(1,i).value = prixListe.GetCellByPosition(8,i).value ' on inscrit la valeur de "I..." de la feuille "Liste" en "B..." de la feuille "Lundi"
'N.B 1 : je sait pas si je peut ajouter "*1,055" (pour obtenir le prix TTC) à la ligne de dessus sans provoquer d'erreurs!
'N.B 2 : je remplirait les colonnes A, C,D, et E de la feuille "Lundi" (et des autres jours) par la suite

	End If
Next i
Je ne comprends pas trop non plus ce code en fin de procédure :

Code : Tout sélectionner

exit Sub
Goto boucle

End Sub
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
michaorleans
Membre OOrganisé
Membre OOrganisé
Messages : 59
Inscription : 09 déc. 2013 20:09

Re: [Calc] Execution sur tableur de prix en caisse

Message par michaorleans »

Nikel, apparament ça mache (j'ai plus de message d'erreur)! MEEEEEEEEERCI

J'ai juste remplacer les "i" par "j" car je pense que tu as du te trompé, vu qu'il n'était pas defini, dans la correction du code que tu as posté!.

pour le "exit sub" et "goto boucle", en me baladant sur le net, ja'i vu qu'il fallait mettre ça quand on fait une boucle! (on m'aurait menti! lol)

que veut dire "exit sub", "boucle" et "goto boucle"? comment s'n sert'on?

comment as tu obtunu ce qu'on voit dans ton image (CaptureAOO.PNG)?

j'ai actualisé mon document, il est dans le premier post, à la place de PrixCaisse_V1.ods, il s'appelle : PrixCaisse_V2.ods
Apache open office 4.1.2 / jre 6 /windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Execution sur tableur de prix en caisse

Message par Piaf »

Bonsoir
Je n'ai pas compris ta macro.
Tu renseignes la colonne du prix à l'unité sans renseigner la colonne article ?

Code : Tout sélectionner

   If prixListe.GetCellByPosition(8,j).value <> 0 then
   	prixCaisseLundi.GetCellByPosition(0,j).String = prixListe.GetCellByPosition(0,j).String
   	prixCaisseLundi.GetCellByPosition(1,j).value = prixListe.GetCellByPosition(8,j).value
   	prixCaisseLundi.GetCellByPosition(3,j).Formula = "=B" & j + 1  & "*C" & j + 1
   	prixCaisseLundi.GetCellByPosition(4,j).Formula = "=D" & j +1 & "* 1.055"
peut-être.
michaorleans a écrit :que veut dire "exit sub", "boucle" et "goto boucle"?
Exit sub sort de la procédure et goto boucle Fait exécuter à la procédure les instructions situées après l'étiquette. A part dans la gestion des erreurs, il est déconseillé en règle générale d'utiliser cette instruction.
michaorleans a écrit :comment as tu obtunu ce qu'on voit dans ton image (CaptureAOO.PNG)?
Voir Xray
xray.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
michaorleans
Membre OOrganisé
Membre OOrganisé
Messages : 59
Inscription : 09 déc. 2013 20:09

Re: [Calc] Execution sur tableur de prix en caisse

Message par michaorleans »

merci Piaf pour ta reponse

Je sait que j'ai renseigné le prix sans mettre le nom de l'article, c'est tout simplement que je voulait déjà me faire la base de la macro sans erreurs, ensuite je ferait les libellés des articles! déja avoir une base correcte avant d'aller plus loin!

d'ailleur en éxécutant la macro j'ai vu un truc :

dans "Lundi" l'orsque la macro à été éxécuté, il me met autant d'espaces vides que de lignes marqué "poids", ce qui est embetant! comment 'coller' les valeurs les unes à la suites des autres?

c'est cool Xray!!! j'irais le telecharger demain (la au lit demain lever à 4h)
Apache open office 4.1.2 / jre 6 /windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Execution sur tableur de prix en caisse

Message par Piaf »

Bonsoir
J'avais lu un peu (beaucoup) trop vite la macro :oops:

Code : Tout sélectionner

numeroLigne = 3
For j = 3 to DebutFinZone.StartRow
	If prixListe.getCellByPosition(8,j).Type <> com.sun.star.table.CellContentType.EMPTY AND prixListe.GetCellByPosition(8,j).value <> 0 AND prixListe.GetCellByPosition(2,j).String = UniteeVente Then
		   	prixCaisseLundi.GetCellByPosition(0,numeroLigne).String = prixListe.GetCellByPosition(0,j).String
   			prixCaisseLundi.GetCellByPosition(1,numeroLigne).value = prixListe.GetCellByPosition(8,j).value
	   		prixCaisseLundi.GetCellByPosition(3,numeroLigne).Formula = "=B" & numeroLigne + 1  & "*C" & numeroLigne + 1
	   		prixCaisseLundi.GetCellByPosition(4,numeroLigne).Formula = "=D" & numeroLigne + 1 & "* 1.055"
	   		numeroLigne = numeroLigne + 1
   End If
Next j
devrait mieux le faire.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
michaorleans
Membre OOrganisé
Membre OOrganisé
Messages : 59
Inscription : 09 déc. 2013 20:09

Re: [Calc] Execution sur tableur de prix en caisse

Message par michaorleans »

me revoilà! j'ai fini le tableau!(prixCaisse_VD.ods)

chaque jour à sa feuille de caisse (et chaque semaine son classeur), la direction veut garder des traçes de ce qui à été fait!

sur la feuille liste j'ai quand même réussi à obtenir dans la feuille "Liste" :

de passer le prix de vente en ttc au lieux de ht! (un calcul en moins)
à rajouter 2 colonnes par journée (en gris dans le doc), pour y mettre les infos sur les lots.


il suffira de cliquer sur le bouton "vers"Lundi"", "vers"Mardi"", "vers"Mercredi"",... pour activer la macro de cette journée, qui transeferera les info des produits à l'unité. Avec une ptite boite de dialogue à la fin pour prévenir que ça c'est bien déroulé!!

Merci de vos aides!!

...j'ai téléchargé Xray! ça fait un peu comme Emmet (zen coding) pour Notepad++!!
Apache open office 4.1.2 / jre 6 /windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc] Execution sur tableur de prix en caisse

Message par Bidouille »

michaorleans a écrit :me revoilà! j'ai fini le tableau!(prixCaisse_VD.ods)
Si cette phrase signifie que votre question a été solutionnée, veuillez baliser en conséquence :
[Résolu] au début du titre de ton 1er message sans oublier de cocher la case de l'icône de sujet (le V vert).