XL 2019 Fichier très lent à cause de calcul

sabagof

XLDnaute Junior
Salut à tous,
J'ai cherché par tous les moyens sans suite favorable.
J'ai un fichier excel sous office 2010 avec un tableau. Chaque fois que je dois intervenir sur ce fichier un calcul automatique se lance ralentissant ainsi tout traitement.
je joins ici le fichier en l'état à toutes fins utiles. Existe til un moyen de contourner ce calcul ? ou trouver vous quelque chose de particulier sur le fichier à corriger ?
Merci pour votre aide.....
 

Pièces jointes

  • booking.xlsm
    101.3 KB · Affichages: 27
Solution
Pour ajouter/modifier/supprimer un article, il y aurait tout ce qu'il faut.
Pour une ligne de booking il faudrait un CLs et un CAs pour ce tableau là.
Attention toujours à ce qu'une ComboBox ne soit pas prise en charge en même temps par deux CLs. Pour quelqu'un j'avait fait mettres les infos spécifiques du tableau à mettre à jour dans un cadre (Frame) et je changeais le CLs actif à l'entrée et à la sortie de ce Frame, ce qui permettait de faire gérer une même ComboBox par les deux, mais pas en même temps. Dans d'autres je constituai un Dictionary de code articles pour pouvoir charger un article d'après ce code qu'une ComboBox était déjà réservée à sa recherche ailleurs que dans la base articles.

Dranreb

XLDnaute Barbatruc
Non, ils se mettent dans la UserForm_Initialize, au coté des CLsA.Add
Possible, mais pas sûr, qu'ils n'ait aucun intérêt pour autre chose que des CLs et CAs qui prendraient enfin en charge le tableau à mettre à jour et non seulement d'autres, pour faciliter des rassemblements de données en tableaux annexes, éventuellement nécessaires aussi, mais secondaires.
 

sabagof

XLDnaute Junior
Non ils se mettent dans la UserForm_Initialize, au coté des CLsA.Add
Possible, mais pas sûr, qu'ils n'ait aucun intéreêt pour autre chose que des CLs et CAs Equi prendraient enfin en charge le tableau à mettrter à jour et non des tableat
Au fait le but c'est quand la désignation change, que les autres texbox se remplissent .... Merci
 

Pièces jointes

  • GESTION STOCK envois.xlsm
    545.6 KB · Affichages: 7

Dranreb

XLDnaute Barbatruc
VB:
Private Sub CLsA_Résultat(Lignes() As Long)
   LCouA = Lignes(1)
   TVLA = CLsA.Lignes(LCouA).Range.Value
   CAsA.ValeursDepuis TVLA
   End Sub
Implique que les contrôles à garnir depuis la base Articles (autres que les ComboBox déjà spécifiées à CLsA) aient été spécifiés par des CAsA.Add dans la Sub UserForm_Initialize. Pratiquement tout se définit dans celle-ci.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Attention ! Il y a quelque chose qui ne peut pas marcher :
La Cbx_dénomination ne peut en aucun cas être prise en charge à la fois par CLsA et par CLsB. Il faut choisir: soit elle n'est prise en charge que par un seul des deux, soit il faut s'arranger pour que les objets ComboBoxLiées ne soient pas actifs en même temps.
(ils ont des méthodes Stopper et Réactiver)
Au pire vous mettez deux OptionButton pour indiquer dans quel tableau vous voulez que sa liste soit puisée et où la recherche soit effecuée.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Je vous avais pourtant déjà prévenu de ce que je vous disais au poste précédent :
Attention, quand il y a plusieurs ComboBoxLiées utilisés, une certaine ComboBox ne doit en principe être prise en charge que par un seul d'entre eux. Sinon ça complique sérieusement, mais ce n'est pas complètement insurmontable.
Ce n'est pas tant la programmation que ça complique déjà pas mal, si on veut quand même le faire, c'est surtout votre analyse du fonctionnement logique voulu de l'application qui doit être menée avec une extrême rigueur. Vous savez bien qu'on ne peut attribuer qu'une seule liste à une ComboBox, non ? Comment voudriez vous que plusieurs CLs la prenant en charge simultanément, se basant sur des tableaux différents, puissent se mettre d'accord sur cette liste ?
C'est à vous de décider depuis quelle base cette liste doit établie selon les circonstances !
 
Dernière édition:

sabagof

XLDnaute Junior
Bonsoir.
Je vous avais pourtant déjà prévenu de ce que je vous disais au poste précédent :Ce n'est pas tant la programmation que ça complique déjà pas mal, si on veut quand même le faire, c'est surtout votre analyse du fonctionnement logique voulu de l'application qui doit être menée avec une extrême rigueur. Vous savez bien qu'on ne peut attribuer qu'une seule liste à une ComboBox, non ? Comment voudriez vous que plusieurs CLs la prenant en charge simultanément, se basant sur des tableaux différents, puissent se mettre d'accord sur cette liste ?
C'est à vous de décider depuis quelle base cette liste doit établie selon les circonstances !
Bonjour mon cher DRANREB,
Veuilles trouver ci-joint mon projet avec mes derniers efforts, je pense qu'il me reste maintenant comment faire les modifications à partir des userformes. Merci.
 

Pièces jointes

  • EXCEL DOWNLOAD.xlsm
    623.9 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Il n'y a pas les feuilles contenant les tableaux, alors je ne peux pas tester.
Typiquement, s'il y a un CLsX et un CAsX pour le tableau à mettre à jour, la procédure du CommandButton de validation, c'est :
VB:
Private Sub CBnValider_Click()
   CAsX.ValeursVers TVLX
   If LCouX = 0 Then
      CLsX.ValeursVers TVLX
      CLsX.Lignes.Add.Range.Value = TVLX
      CLsX.Actualiser
   Else
      CLsX.Lignes(LCouX).Range.Value = TVLX
      End If
   End Sub
 
Dernière édition:

sabagof

XLDnaute Junior
Il n'y a pas les feuilles contenant les tableaux, alors je ne peux pas tester.
Typiquement, s'il y a un CLsX et un CAsX pour le tableau à mettre à jour, la procédure du CommandButton de validation, c'est :
VB:
Private Sub CBnValider_Click()
   CAsX.ValeursVers TVLX
   If LCouX = 0 Then
      CLsX.ValeursVers TVLX
      CLsX.Lignes.Add.Range.Value = TVLX
      CLsX.Actualiser
   Else
      CLsX.Lignes(LCou).Range.Value = TVLX
      End If
   End Sub
C'est vrai toutes mes excuses, voici à nouveau le fichier joint
 

Pièces jointes

  • EXCEL DOWNLOAD.xlsm
    715.3 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
C'est peut être seulement chez moi. J'ai une erreur #REF! dans toute la la colonne "Qté en stock/lot"
formule =SOMME.SI.ENS('C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Quantité entrée/sortie];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Réf. Interne];[@[Réf. Interne]];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Nr article];[@[Nr article]];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Sortie];"Entrée")-SOMME.SI.ENS('C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Quantité entrée/sortie];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Réf. Interne];[@[Réf. Interne]];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Nr article];[@[Nr article]];'C:\Users\Luck\AppData\Local\Temp\GESTION
 
Dernière édition:

sabagof

XLDnaute Junior
C'est peut être seulement chez moi. J'ai une erreur #REF! dans toute la la colonne "Qté en stock/lot"
formule =SOMME.SI.ENS('C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Quantité entrée/sortie];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Réf. Interne];[@[Réf. Interne]];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Nr article];[@[Nr article]];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Sortie];"Entrée")-SOMME.SI.ENS('C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Quantité entrée/sortie];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Réf. Interne];[@[Réf. Interne]];'C:\Users\Luck\AppData\Local\Temp\GESTION STOCK_PHQ_ABT(ss).xlsm'!Tableau5[Nr article];[@[Nr article]];'C:\Users\Luck\AppData\Local\Temp\GESTION
Tout à fait tu as raison, voici de nouveau le fichier....Merci
 

Pièces jointes

  • EXCEL DOWNLOAD.xlsm
    768.7 KB · Affichages: 5

sabagof

XLDnaute Junior
Alors c'est bon ? La CLsA_Résultat rend bien les infos de la 1ère ligne article trouvée où les colonnes correspondent aux ComboBox renseignées.
Merci .... maintenant pour faire des modifications ou une suppression je passe par le formulaire excel....(cliques sur le bouton modifier de l'userform et tu remarqueras). n'est t-il pas possible de modifier directement par les clsa et casa de l'userform ?
 

Dranreb

XLDnaute Barbatruc
Pour ajouter/modifier/supprimer un article, il y aurait tout ce qu'il faut.
Pour une ligne de booking il faudrait un CLs et un CAs pour ce tableau là.
Attention toujours à ce qu'une ComboBox ne soit pas prise en charge en même temps par deux CLs. Pour quelqu'un j'avait fait mettres les infos spécifiques du tableau à mettre à jour dans un cadre (Frame) et je changeais le CLs actif à l'entrée et à la sortie de ce Frame, ce qui permettait de faire gérer une même ComboBox par les deux, mais pas en même temps. Dans d'autres je constituai un Dictionary de code articles pour pouvoir charger un article d'après ce code qu'une ComboBox était déjà réservée à sa recherche ailleurs que dans la base articles.
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 447
Membres
103 213
dernier inscrit
Poupoule