Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:



Feuille actuel de bilan:




Idée de feuille de suivi a voir:


Autre tentative de mise en forme:


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

T'inquiétes, le prochain confinement te permettra d'avoir le temps de finaliser ton projet
(que tu t'es toi-même imposé, non ?
Et de ton plein gré.
kik à dit:
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)
 

nobodyuse

XLDnaute Occasionnel
Re

T'inquiétes, le prochain confinement te permettra d'avoir le temps de finaliser ton projet
(que tu t'es toi-même imposé, non ?
Et de ton plein gré.

LOL y'en aura pas de confinement
et je télétravail déjà donc aucun changement pour moi

oui et non je ne me suis pas moi même imposé ce projet, je m’étais impose mon fichier de bon de commande au départ puisque n'ayant aucun outils pour la prise de commande sur mon site j'ai voulu réaliser ceci pour mes besoins perso dans ma tache.
5sans rentré dans les détails je suis en inaptitude médicale il n'y pas malheureusement pas de poste pour moi dans mon bassin d'emploi, et je cherche a prouver mon utilité en vu je l’espère de la création d'un poste sur mon site)
ce projet a été vu et apprécié par ma hiérarchie, qui du coup m'a demandé s'il été possible de le donner au 2 gros sites j'ai donc allégé en fonction mon fichier et je l'ai distribué (forcement ça a bien plu),
donc je me suis vu confié comme mission de leur refaire le fichier de suivi des commandes et des points du site de l'acheteur Site1, car ayant un vieux fichier devenu complétement obsolète car non évolutif il était devenu inutilisable et ils devaient faire de manière manuel même si le suivi des point est rentré de manière totalement basique sur Excel (Genre tel agent = X points - Y point de commande= total restant)
lorsque j'ai rendu la première version le Grand chef m'a demandé d’intégrer les Site B et C sur un même fichier pour que chaque site puisse travailler dessus depuis le serveur et que l'acheteur qui est sur Site A puisse commander pour les 3 sites, puis les personne concerné m’ont dit ce serai bien si on pouvais avoir ça ou ça ... plus des idées que j'ai de moi même décidé d'intégré comme le statut de remise (qui quand je leur ai montré a reçu une totale approbation) Mais au fil de la construction et de l’ajout des pages j'ai commencé a me rendre compte des problème de poids (d’où l'idée semaine dernière de supprimer les anciennes feuilles passé a partir de la page bilan et transformant le résultat des formules en donnés brute pour être reprise sur la feuille de Janvier de l'année d’après car je n'avais a la base pas réussi a les réintégrer dans la base de donné.
voila en gros l'histoire du truc (même si tu t'en balec)
 

nobodyuse

XLDnaute Occasionnel
Oh merde !!!
la bonne blague
en suivant l'un des tutos vers lesquels tu m'a dirigé Staple
je me rend compte que je n'ai pas possibilité d’insérer de Userform
Après recherche sur comment faire sur mac reponse: cette fonctionnalité est absente dans Excel 2016/2019 pour Mac
décidément :/
 

Staple1600

XLDnaute Barbatruc
Re

1) Jamais je me balec
(Elles sont fragiles et c'est douloureux)
2) Est-ce que tu as été voir ce qu'était le principe K.I.S.S?
3) Quand ce sera fait fait, deviens adepte de celui-ci
(enfin c'est un conseil que je te donne)
4) A l'aune ce nouveau mantra, qui régira désormais tes petits doigts sur ton clavier, applique le en reprenant uniquement les données déjà saisies pour les copier/coller en valeurs seules dans un nouveau workbook.
5) Expérimentes avec divers exemples la gestion de données avec un userform (en Read/Write)

Bois une bière, fais une sieste, laisse reposer.

Mets ensuite tout cela à profit pour pondre un fichier kissien tout léger et ergonomique.

PS: On te filera un coup de main quant tu caleras.
 

Staple1600

XLDnaute Barbatruc
Re

Peut-être un pis-aller possible
(Mais je crains que non si Mac)
Fais ce test sur un classeur vierge
1) Lance CREER_TEST
2) puis lancer Afficher_Formulaire
VB:
Sub CREER_TEST()
Dim lOBJ As ListObject
Set lOBJ = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$E$25"), , xlNo)
lOBJ.DataBodyRange.Formula = "=ADDRESS(ROW(),COLUMN(),4)"
lOBJ.HeaderRowRange = Array("ITEM_1", "ITEM_2", "ITEM_3", "ITEM_4", "ITEM_5")
lOBJ.DataBodyRange = lOBJ.DataBodyRange.Value
End Sub
Sub Afficher_Formulaire()
Dim s As Worksheet
Set s = ActiveSheet
s.ShowDataForm
End Sub
 

nobodyuse

XLDnaute Occasionnel
pour K.I.S.S j'ai trouvé cela "Keep It Short and Simple"
Faire Simple et court (ou Bref)
je comprend bien cette motivation

Mes connaissance doivent être trop limité pour cela :/

Les userforms a priori c'est mort pour Excel Mac, et après vérification sur ExcelWeb ce n'est pas possible non plus .
du coup j'suis dans l'impasse par rapport a cela malgré ma bonne volonté

j'avais commencé a repartir sur un truc qui ressemblerai un peu a cela (hé oui au vu des soucis que j'ai vu arriver j'ai commencé a creuser un peu avant d'appeler a l'aide la communauté)
mais vu le nombre de colonne ça me parait pas très pratique
je suis complétement paumé la (en tous cas je sent que je vais pas marqué des point avec ma hiérarchie sur ce coup si je trouve pas vite un truc qui convienne a tous les utilisateurs).
 

Pièces jointes

  • CaPDotV1DIST.xlsm
    61.8 KB · Affichages: 16

nobodyuse

XLDnaute Occasionnel

Erreur VB400
 

ChTi160

XLDnaute Barbatruc
Re
Lol
Je comprends que tu n'est pas cheminot !
Le numéro de Cp , je t'ai dit sert plus qu'un numéro de SS et dans plein de domaines du chemin de fer.
77 est effectivement l'année de naissance .
Je sais déjà son nom son lieux de résidence son numéro de CP c'est déjà pas mal en plus il est conducteur de train et je peux même , rencontrer son chef de traction .
LOL
Je pense effectivement ,que tout celà n'a rien de secret .
Bonne continuation
Jean marie
 

nobodyuse

XLDnaute Occasionnel
Re

Tu as fait le test proposé dans mon précédent message?

NB: Le Mac est obligatoire ?
On ne peut te mettre un PC à disposition?
(Surtout si tu veux faire du VBA avec Excel)
oui j'ai fait le test
je t'ai mis le résultat dans le post #97

Malheuresement pas de poste Windows a ma dispo, et sur les PC d'entreprise il n'y a plus de les versions logiciels d'installés puisqu'ils utilisent tous Office365
 

nobodyuse

XLDnaute Occasionnel

Re Ch'ti,

d’où l'anonymisation des fichiers
 

nobodyuse

XLDnaute Occasionnel
Il me reste un "atout" dans ma manche peux être jouable a défaut d'utiliser les Userforms
A savoir réutiliser mon fichier de Bon de commande qui génère en plus du Bon de commande au format PDF, une liste de suivi (mais n'ayant pas construit la macro de Report des données je n'arrive pas a modifié celle ci)
resterai encore a savoir comment réutiliser les infos d'un quadrimestre sur l'autre et d'avoir un bilan annuel (La je pense que les TCD peuvent faire l'affaire mais je ne crois pas que l'on puisse créer un TCD a partir de plusieurs tableaux sur plusieurs feuilles) et restera encore beaucoup de fonction a ajouter
donc je vais rebloquer a un moment ou un autre pour a minima l’évolutivité de la chose

je vous le met quand même en PJ ptet qu'avec tout cela quelqu'un aura ptet une solution viable a me proposer ...

je vous laisse un moment m'a troupe me reclame un peu de temps avec eux car avec tous ca il ne m'auront pas beaucoup vu ce week
 

Pièces jointes

  • BCAgentsDiffusable.xlsm
    93.3 KB · Affichages: 16

Staple1600

XLDnaute Barbatruc
Re

Je n'ai pas eu le temps de voir ta dernière PJ
(mais puisque Mac obligatoire)
Voici sur quoi je partirai pour saisir les données

Et ci-dessous le code VBA attaché au bouton
VB:
Sub SimiliForm()
Dim donnees$, r As Range
donnees = "B2,B4,B6,B8,B10"
Application.ScreenUpdating = False
Set r = Range(donnees)
If Application.CountA(r) <> r.Cells.Count Then
MsgBox "Saisie incomplète", vbCritical, "ERREUR"
Exit Sub
Else
r.Copy
Feuil2.Cells(Rows.Count, 1).End(3)(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=True
Application.CutCopyMode = False
r.ClearContents
r(1).Select
End If
End Sub
 

Phil69970

XLDnaute Barbatruc
Re

Une idée en passant ...
Si la version formulaire ne fonctionne pas à cause de la version Mac et/ou réseau peut être un onglet dédié peux faire office de "formulaire" après validation une copie des données saisie sur l'onglet pourront être copié dans le bon onglet à la manière d'un formulaire.....

@Phil69970
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…