XL pour MAC Refonte complete d'un fichier, besoin d'idées

nobodyuse

XLDnaute Occasionnel
Bonjour à toutes et tous

Après quelques temps de travail sur un fichier de suivi de commande d'articles pour des agents d'une entreprise reparties sur 3 sites différents
je me retrouve avec un fichier final fonctionnel, mais très lourd (26Mo pour les 5 années) ce qui rend mon fichier très lent

Tout d'abord je précise que je suis archi novice !
Je viens donc vers vous les pro du Excel afin de quérir quelques idées pour refaire mon entièrement mon fichier de manière a ce qu'il soit moins lourd et utilisable sur serveur d'entreprise par 3 personnes minimum (1 sur chaque site)

je vous expose donc le projet:

j'ai une base de donnée qui doit contenir les différents articles possible, pour lesquels il y a un prix unitaire, différentes tailles possible,
dans cette base de données il y a également une base de Nom/prénom, chef référent, leur site, et la somme qui leur ai attribué au 1er janvier 2020 (repris des années précédentes) il y a pour l’heure quelques 300 agents environs... Mais comme cela peut évoluer (départ en retraite, embauche, ...) il faut donc que ce fichier soit évolutif facilement
il me faut donc un système qui aille cherche les noms, en fonction du nom son chef, que 'l’on sépare les 3 sites si cela est possible...
il y a 3 commande par année civile (Janvier, Mai et Septembre)
il faut que l'on puisse rentrer leur éléments de commande avec des liste deroulantes (Articles, taille, quantité, Prix Unitaire) que ce soit calculé automatiquement et déduit de leur somme initiale
Évidemment chaque fois la somme est reporté sur la feuille de suivi de commande suivants (3 par année) une feuille de Bilan est ajouté pour la fin d'année et permet de voir le nombre d'articles commandé par agents et les totaux par sites (et total global) une feuille de suivi peux éventuellement être inséré ce qui permettrai d'avoir un archivage de ce qui a été commandé .... (si l'on pouvais même réussir a trier par articles et taille de manière a avoir une forme "d’état de la commande" ce serai top pour voir et suivre d'un coup d'oeil les quantités qu'il y a à commander et en quels tailles)
j'avais ajouté une fonction de Statut de remise a l'agent avec la date automatique (qui permet de suivre un peu savoir ou l'on en est)
Afin de réduire la taille du fichier sur chaque page de bilan j'ai inséré une macro qui permet de transformer le résultat des formules en données brutes et supprimer les feuilles de Janvier, Mai et Sept de l'année qui viens de s’écouler, afin de ne pouvoir garder que la feuille de bilan et reprendre la somme en fin d'année sur la nouvelles feuille de Janvier (Auquel on crédite chaque année la somme de 40€ cumulable d'une année sur l'autre sans jamais dépasser un montant de 120€)


je ne peux pas vous mettre le fichier que j'ai créer (Car trop gros même zippé)
je vous met cela dit des captures d'écrans une de la feuille de Janvier, une de la feuille bilan et une du type de feuille de suivi possible (qui pourrai remplacer la feuille de bilan (à voir)
je sais ce n'est pas top mais c'est vraiment pour donner une idée de ce que j'avais fait jusque la, mais comme cela ne vas pas forcement ....

Merci d'avoir pris le temps de lire jusqu'au bout en espérant avoir réussi a être assez clair
D'avance merci à tous

Feuille actuel de Janvier:
Capture d’écran 2021-03-26 à 17.55.11.png



Feuille actuel de bilan:
Capture d’écran 2021-03-26 à 17.55.36.png




Idée de feuille de suivi a voir:
Capture d’écran 2021-03-26 à 18.00.18.png


Autre tentative de mise en forme:
Capture d’écran 2021-03-26 à 18.15.07.png


D'avance Merci à tous
 
Dernière édition:
Solution
Re

Pour rester Kissien ;)
J'ai simplifié la précédente macro
VB:
Sub Archivage()
Application.ScreenUpdating = False
Dim arrINap As Range, arrIN, arrOUT(), i&, n&, k&, j%
arrINa = Array([D3], [D5], [D7], [D9], [D11], [D13])
Set p = Range("F3:I13"): arrIN = p: k = UBound(arrIN, 1)
For i = 1 To k
For j = 1 To 4
If Trim(arrIN(i, j)) <> vbNullString Then
If Trim(arrIN(i, j)) > 0 Then
n = n + 1
ReDim Preserve arrOUT(1 To 2, 1 To n)
arrOUT(1, n) = arrIN(i, j)
End If
End If
Next j
Next i
Feuil2.Cells(Rows.Count, 1).End(3)(2).Resize(, UBound(arrINa, 1) + 1) = arrINa
Feuil2.Cells(Rows.Count, 7).End(3)(2).Resize(, n) = arrOUT
End Sub

Staple1600

XLDnaute Barbatruc
Re

=>Phil69970
Tu me permets d'être point d'accord avec ce point que tu pointes dans de le dernier point de ta mise au point du message#60?
;)
A savoir
Mais boudiou¸ pourquoi donc qu'il à dit:
-Soit une feuille par ville
-Soit une feuille avec les 3 villes
-12 feuilles mensuel
-1 feuille Bilan/an
Ah que mais non, euh ! ;)
Tout sur la base de données
Et sur une feuille dédiée
-un TCD (avec un filtre mensuel et ou annuel)
-un TCD pas ville
etc...

=>nobodyuse
TCD= Tableau Croisé Dynamique.
 

nobodyuse

XLDnaute Occasionnel
Re

Ok mais tu peux avoir un onglet par ville dans un seul fichier.


Donc on peux les ajouter à la demande uniquement quand nécessaire.



Par exemple
-1 Feuille les articles (les vêtements ....) (~70 articles dans les fichiers fournit)Combien en réel ?(L’ordre de grandeur)
-1 Feuille salariés (~270 salariés dans les fichiers fournit) Combien en réel par site ? (L’ordre de grandeur)
-Soit une feuille par ville
-Soit une feuille avec les 3 villes
-12 feuilles mensuel
-1 feuille Bilan/an

@Phil69970
Re Phil,

Avoir un onglet par site peux en effet être envisageable à condition de tout réunir dans un feuille bilan
(Comme indiqué dans le post#1 le top serai de réussir à avoir une feuille de suivi pour l’acheteur qu’il puisse savoir les quantites d’articles il doit commander point chaque tailles qui pourrai servir également d’archivage, ....)

les articles que tu a vu sont les vrai articles je ne les ai pas comptés donc ptet 70
(A garder à l’esprit que ça aussi doit être évolutif des articles peuvent être ajoutés ou enlevés sans pour autant tronquer les anciennes feuilles si un article change de tarifs ou disparaît)

il y a environ un peu moins de 300agents (là aussi évolutif)
A la louche il y a
Environ 150 sur le site1
Environ 100 sur le site 2
Et 25 sur le site 3

il n’y a que 3 périodes de commande par année (janvier, mai et septembre donc 3 feuilles si on met les 3 sites sur la même feuilles)

je ne sais plus du tout comment m’y prendre ni comment faire
Comme dit plus haut ça m’a un peu démoralisé de me rendre compte que j’ai bossé pour rien sur un truc qui deconne a mort et en plus je ne sais plus comment refaire tout ça ma tête fait comme mon fichier elle buggue
 

Staple1600

XLDnaute Barbatruc
Re

=>Phil
Tu as remarqué que j'avais mis de l'humour et des emoticones (pour bien montrer que j'étais en mode taquin)
J'espère que c'est ce que tu as perçu
(Car les trois petits points dans ton avant-dernier message(*) me mettent le doute)
J'en appelle donc à Jackie Quartz ;)

(*) le message#63
 

nobodyuse

XLDnaute Occasionnel
J’ai regardé en travers vite fait les TCD mais du coup je ne peux plus utiliser mes listes déroulantes pour permettre de rentrer plus simplement les articles, taillés et quantité (ce qui était apprécié par les futur utilisateurs et la direction)

j’ai bien compris que la mise en forme je peux faire une croix dessus dommage cela plaisait et permettai aux futurs utilisateur de s’y retrouver (oui ils l’utilisent déjà mais que la feuille de janvier pour l’heure n’ayant pas fini avant de le rendre compte des soucis)

pour en revenir au TCD j’avoue ne pas trop tout comprendre ça me parait un peu barbare et compliqué à mettre en œuvre
(Je regarderai demain si je trouve des exemples déjà fait pour me faire une idee car j’ai bcp de mal avec certains trucs qui sans doute pour vous sont très simple)

sur ce, je pense qu’il faut que j’aille faire reposer mon cerveau
Encore merci à vous
Bonne nuit
 

Staple1600

XLDnaute Barbatruc
Re

Et en bonus, le code VBA idoine pour créer la même base de donnée
que sur la copie d'écran
VB:
Sub Creer_Test()
Dim fm(5)
[A1:E1] = [{"COMMANDE","DATE","REF_PROD","DESIGNATION","PRIX"}]
Application.ScreenUpdating = False
fm(0) = "=""COM ""&ROUNDUP(ROW()/25,0)"
fm(1) = "=DATE(RANDBETWEEN(2018,2020),RANDBETWEEN(1,12),RANDBETWEEN(1,15))"
fm(2) = "=""PROD_""&MOD(ROW()+1,13)+1"
fm(3) = "=R1C4&TEXT(MOD(ROW()+1,13)+1,"""""" """"0"")"
fm(4) = "=RANDBETWEEN(15,30)*ROW()"
Range("A2:E200") = fm
Cells(1).CurrentRegion = Cells(1).CurrentRegion.Value
End Sub
Le challenge serait que tu reproduises le TCD qu'on voit à droite de l'écran avant la fin du week-end
;)
 

nobodyuse

XLDnaute Occasionnel
Re

Et en bonus, le code VBA idoine pour créer la même base de donnée
que sur la copie d'écran
VB:
Sub Creer_Test()
Dim fm(5)
[A1:E1] = [{"COMMANDE","DATE","REF_PROD","DESIGNATION","PRIX"}]
Application.ScreenUpdating = False
fm(0) = "=""COM ""&ROUNDUP(ROW()/25,0)"
fm(1) = "=DATE(RANDBETWEEN(2018,2020),RANDBETWEEN(1,12),RANDBETWEEN(1,15))"
fm(2) = "=""PROD_""&MOD(ROW()+1,13)+1"
fm(3) = "=R1C4&TEXT(MOD(ROW()+1,13)+1,"""""" """"0"")"
fm(4) = "=RANDBETWEEN(15,30)*ROW()"
Range("A2:E200") = fm
Cells(1).CurrentRegion = Cells(1).CurrentRegion.Value
End Sub
Le challenge serait que tu reproduises le TCD qu'on voit à droite de l'écran avant la fin du week-end
;)
Bonjour le fil ;)
décalage horaire oblige j’émerge à peine

Merci Staple
je me met sur ton "challenge" ... après ma dose de café

mais si tu me permet une remarque dans mon cas
je ne vois pas trop a quoi cela pourrai m'avancer ton exemple mis a part pour avoir une fiche de suivi pour l'acheteur pour connaitre le nombre a commandé par type d'article, par taille et connaitre le montant total

il faut quand meme que en aval les 3 site puisse choisi d'une facon ou d'un autre un moyen d'alimenter "une base de commande" et de manière simple et intuitive car la ou moi je suis novice les autres je ne vous dit pas ;)

sur ce cafés
 

Staple1600

XLDnaute Barbatruc
Re

mon exemple n'est qu'illustratif, pour voir ce qu'offre l'emploi d'un TCD
Pour continuer avec l'exemple précédent, j'ai le code VBA pour créer le même type de TCD (sans se fatiguer;) qu'on voit sur la copie d'écran précédente.
Question:
je le poste tout de suite ou tu veux d'abord tenter de faire un TCD à la mimine un dimanche matin ?
;)

NB: Pour le reste: saisie ergonomique des données pour alimenter la base, on a cela en stock (=> userform)
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

A priori tu as plusieurs dizaines de MFC sur ton fichier et ce serait ça qui plombe ton fichier...

Vite fait j'ai fait ça il en manque beaucoup mais si ça peut te donner des idées...

*La BDD te permet de faire directement des TCD
*La feuille2 Janv2021 c'est juste pour rester dans la même idée que ton fichier de départ....

@Phil69970
 

Pièces jointes

  • Test reparation DISTRIConsigneapoints v3.xlsm
    47.7 KB · Affichages: 10

Phil69970

XLDnaute Barbatruc
Bonjour Staple

J'ai excel 2010 64bits

Mon ordi a souffert lorsque j'ai voulu voir les dites MFC le curseur de défilement est devenu minuscule et l'ordi a ramé 10 mn et j'ai fait ctrl alt supr (j’avoue j'ai perdu patience) 🙃

*Edit: le curseur de défilement qui affiche les MFC (Et peut être plusieurs centaines)
1616925335134.png

@Phil69970
 
Dernière édition:

Statistiques des forums

Discussions
315 098
Messages
2 116 193
Membres
112 679
dernier inscrit
Yupanki