Gestion stock céréales

bonjour CorentinLasne,Jacky,

pourquoi vous n'utilisez pas un tableau structuré et les sorties comme un chiffre négatif ?

14travail2.xlsb (42.47 Ko)

PS. il y avait baucoup d'ordure dans votre fichier

Bonjour,

Moi j'y connais pas grand chose..

Bonjour Bart,

Il est vrai que je ne connaissais pas la fonction "VLookup" qui simplifie énormément la correspondance entre humidité et réfaction.
Il est vrai que tu simplifies certaines parties du code comme par exemple avec les fonctions "IIf", "Replace" et VLookup"
Ensuite petite astuce de matheux pointilleux : tu remplaces "(Poids_Brut -(Poids_Brut*Impureté))*refaction" par Poids_Brut * (1 - Impurete) * Refaction
Par contre peux tu m'expliquer l'utilisation du tableau structuré

     Set LO = Range("tabel3").ListObject 'tableau structuré
     LO.ListRows.Add.Range.Value = Array(Now, livreur, Mouvement, Poids_Brut, Humidite, Impurete, Refaction, Poids_Sec) 'ajouter une ligne au TS

Merci

bonjour Jacky,

avec la première ligne, vous savez le tableau structuré et si cela se trouve dans un module normal (donc pas un module d'une feuille), ce n'est pas nécessaire de spécifier la feuille.

Puis la 2eme ligne

  • avec LO.ListRows.Add, on ajoute une nouvelle ligne au tableau structuré
  • avec .Range.Value = Array(Now, livreur, Mouvement, Poids_Brut, Humidite, Impurete, Refaction, Poids_Sec) on colle le contenu des 8 paramètres dans cette nouvelle ligne. C'est donc la même chose que 8 fois cells(lig,x)=paramètre_x
  • et puis je les ai combiné dans une seule ligne, donc très facile à utiliser et très rapide en exécution parce qu'on écrit une fois vers la feuille au lieu de 8 fois (mais ici la n'a pas une grande importance ...)

Bonjour Bart,

Merci pour toutes ces applications
Toutefois je ne vois pas très bien pourquoi on ne doit pas spécifier la feuille (qu'entends tu par module normal ?)

avec la première ligne, vous savez le tableau structuré et si cela se trouve dans un module normal (donc pas un module d'une feuille), ce n'est pas nécessaire de spécifier la feuille.

De plus j'ai voulu implanter ton code dans mon fichier, il se plante à la ligne suivante :

     Set LO = Range("tabel3").ListObject 'tableau structuré

Erreur d'exécution 1004
La méthode 'Range' de l'objet'_Global' a échoué

Comme je n'ai jamais utilisé de tels tableaux je n'arrive pas a interpréter l'erreur (qu'est l'objet_Global dans ce produit ?)

Bien cordialement Bart et encore merci

13mais.zip (1.06 Mo)

re,

on a la possibilité d'avoir des macros d'événements dans le module d'une feuille (par exemple "Worksheet_BeforeDoubleClick" dans "Stock") mais on a aussi les modules normaux comme "module1" et "module2". Dans ces 2 derniers, on peut utiliser Set LO = Range("tabel3").ListObject pour ce tableau de la feuille "Stock". Mais supposons, que vous voulez déplacer (CUT & Paste) ce tableau vers une nouvelle feuille "Stock2", après, il ne faut pas modifier VBA ...

Maintenant ce tableau "Tabel3" n'existe pas encore, il faut le créer >>> https://excel-pratique.com/fr/astuces/tableau-structure#google_vignette

Bonsoir Bart,

merci pour ces premières explications
Comme je ne connaissais pas ce type de tableaux je suis en train de me documenter car je ne veux pas rester sur un échec
S'il le faut je me permettrais de faire de nouveau appel à toi
Bien cordialement
Jacky

Bonsoir Corantin,

Je crois que le travail sur les feuilles "STOCK3 et "SECHAGE-BENNES" est terminé, sauf erreur que je n'aurait pas relevée.
Comme je te le disais, n'ayant pas encore correctement assimilé les fonctions que Bart a utilisées, j'ai fait un mixte entre mon code et le sien.
Que Bart ne m'en veuille pas, je lui promet que lorsque j'aurai bien assimilé les fonctions nouvelles qu'il a utilisées, je reverrai mon code
Bonne soirée à tous les deux,

27mais.zip (1.07 Mo)

re,

je n'ai rien modifié, juste supprimé tout ce qu'il était inutile et maintenant le fichier n'est qu'une fraction de l'origine. (1.872 kB -> 41 kB (xlsm) -> 34kB (xlsb))

13mais-1.xlsb (33.78 Ko)
8mais-1.xlsm (40.31 Ko)

+65K lignes par feuille, c'était avec un "XLS", la siècle précédente (je crois), maintenant on a +1.048 K lignes et on peut utiliser ceci pour les 2 fichiers.

  der = Worksheets("STOCK").Range("A" & Rows.Count).End(xlUp).Row
   

Re bonjour Jacky,

Sauf erreur de ma part, la valeur de la date sur la feuille séchage-benne n'est pas bonne, et total en stock sur la feuille stock.

est-il possible de mettre la formule dans le poids bruit pour remplir le formulaire avec un point comme pour humidité et impureté?

Bonne soirée

Bonjours Bart, je n'est pas compris votre message...

Bonjour Corantin,

Vola les petites étourderies doivent être réparées et tu peux taper la valeur du poids avec un point

12mais.xlsb (231.90 Ko)

Bonjour Bart,

Evidemment que tu n'as rien modifié
Et il évident qu'on le rends moins lourd en xlsb

Je n'ai toujours pas eu le temps de me pencher sur le problème du tableau, je te recontacterai éventuellement plus tard

Merci pour tout et bonne journée

re,

@Jacky, n'utilisez-vous pas trop souvent le mot "evident" ? Ne vous trompez pas sur la cause

xlsm (= 1.872 kB) ----> xlsb (= 219 kB, factor 8.5) ----> optimaliser (= 34 kB, factor 6.5)

hier c'était

xlsm (= 1.872) ----> xlsm optimalisé ( =40 kB, factor 46) ----> xlsb ( = 34 kB, factor 1,2)

Lundi, j'avais déjà dit qu'il y avait "beaucoup d'ordure dans votre fichier"

Bonsoir Bart,

Je sais que vous êtes Belge et que chez vous le mot "ordure" veut dire "erreur" n'est ce pas
Donc j'ai beaucoup d'erreurs et non d'ordures dans mon fichier car je veille à sa propreté (lol)

Amicalement de la part de Jacky dont l'épouse est belge

re,

image

non, j'avais utilisé "Google Translate", ce fichier était presque 2MB et était presque vide. En plus ma version Excel est 365 Insider et montrait une bannière avec le message que ce fichier était tès lourd, très lent et plein de meta-data, Elle me demandait pour l'optimaliser, donc je l'ai fait ... . D'où ma remarque, que je n'avais pas modifié votre fichier, Excel365 l'avait fait et moi, j'avais seulement le sauvegardé comme xlsb. C'est la première fois que j'avais cette bannière, donc j'étais aussi surpris.

Vous pouvez faire la même chose avec la méthode ancienne, cad vous vous positionnez sur une feuille et vous faites CTRL+END et alors excel se met sur la dernière cellule, supposons Z100, alors vous sélectionnez la colonne AA et vous faites CTRL+MAJ+Flèche Droite pour sélectionner tout se qui se trouve à droit de cette colonne et vous supprimez tout cela. Puis vous faites la même chose avec la ligne 101 et puis CTRL+MAJ+flèche bas et supprimer. Vous faites cela pour chaque feuille et vous le sauvegardez comme "xlsm" et vous fermez le fichier. Avec Microsoft Explorer vous voyez que ce fichier est maintenant beaucoup diminué. (PS. vous pouvez aussi choisir une autre colonne ou ligne si vous savez que toutes ces colonnes/lignes sont inutiles)

J'ai ajouté mon fichier avec quelque modifications qui sont peut-être un peu difficile à comprendre, mais je vais les expliquer.

  • en H2 on a la formule "=SOMME(H4;H65536)", qui somme les 2 cellules H4 et H65536 mais aucune cellule entre ces 2. Normallement on essaie à eviter de faire la somme d'une telle plage, donc on peut créer une plage nommée "der" avec la formule "=MAX(SI(STOCK!$C:$C<>"";LIGNE(STOCK!$C:$C);7))", donc le résultat sera le numéro de la dernière ligne non-vide de la colonne C de STOCKS avec un minimum de 7. et la nouvelle formule en H2 sera "=SOMME(DECALER(H4;;;Der-3))"
  • Si vous n'utilisez pas un tableau structuré dans cette feuille vous pouvez collez ces 8 paramètres en même temps avec la même méthode.
  • Puis je suppose que c'est une faute d'utiliser un seul prix dans la feuille "Sechage-Bennes" parce que toutes ces lignes ont une autr humidité donc un autre prix. Dans l'exemple, je fais toutes ces calculations en mémoire et je colle tout cela en une fois dans la feuille (pour gagner du temps) mais oubliez cela si c'est trop difficile.

Bonjour Bart,

Merci pour tous ces précisions que je vais étudier plus tard
Au plaisir

Rechercher des sujets similaires à "gestion stock cereales"