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
Les Find ne seront plus nécessaires: une CLsA_Résultat donnera directement le numéro de la ligne de l'article. Il ne restera plus qu'à l'affecter à LCouA = Lignes(1) puis de faire TVLA = CLsA.Lignes(LCouA).Range.Value puis CAsA.ValeursDepuis TVLA pour tout afficher dans les contrôles associés.
 
Dernière édition:

sabagof

XLDnaute Junior
Joignez peut être une version avec référence cochée à CLsCAs et sans mot de passe sur le projet VBA. Je vous assure que les variables objets globales de type ComboBoxLiées et ControlsAssociés ont tendance à fonctionner du premier coup.
Bonjour mon cher Dranreb,
Pour mieux sauter il faut bien reculer et prendre de force c'est en quelque sorte ce que j'ai fais pendant tous ce temps. J'ai réussi à travaillé merveilleusement avec les comboboxliées. j'avoue que mon gros problème se situe au niveau des controlsassociés.
Veuilles trouver ci joint une partie de mon projet. j'ai utilisé la fonction WorksheetFunction.VLookup pour remplir les textbox associés aux combobox.
Merci de m'aider à utiliser les controlsassociés.
Dans cette attente, respect.....
 

Pièces jointes

  • GESTION STOCK envois.xlsm
    549.4 KB · Affichages: 2

sabagof

XLDnaute Junior
Joignez peut être une version avec référence cochée à CLsCAs et sans mot de passe sur le projet VBA. Je vous assure que les variables objets globales de type ComboBoxLiées et ControlsAssociés ont tendance à fonctionner du premier coup.
Bonjour.
Je vous avais dit qu'il n'était plus nécessaire de faire de recherche dans la base. L'objet ComboBoxLiées vous dit déjà où c'est.
Bien sur et c'est ce que j'ai fais pour les comboboxliées, du coup quand je fais add avec les controlsassociés j'ai un message d'erreur.
 

Dranreb

XLDnaute Barbatruc
Non, ce n'est pas ce que vous avez fait.
Il n'y a aucune Private Sub CLsA_… dans votre programmation.
Dans la liste déroulante 'Objet' de gauche, au dessus de la fenêtre de code, sélectionnez 'CLsA', ça vous installera un modèle de Private Sub CLsA_Change.
Ensuite dans la 'Procédure', celle de droite sélectionnez 'Résultat', ça vous mettra celle qui vous communiquera les numéros de lignes dans la base en correspondance avec les valeurs des ComboBox dont il a la charge.
 

sabagof

XLDnaute Junior
Non, ce n'est pas ce que vous avez fait.
Il n'y a aucune Private Sub CLsA_… dans votre programmation.
Dans la liste déroulante 'Objet' de gauche, au dessus de la fenêtre de code, sélectionnez 'CLsA', ça vous installera un modèle de Private Sub CLsA_Change.
Ensuite dans la 'Procédure', celle de droite sélectionnez 'Résultat', ça vous mettra celle qui vous communiquera les numéros de lignes dans la base en correspondance avec les valeurs des ComboBox dont il a la charge.
Pardon, CLsA est vérouillé
 

Dranreb

XLDnaute Barbatruc
Que voulez vous dire ?
De mon coté j'ai pu J'ai pu installer cette procédure :et faire un exemple de code de la 1ère :
VB:
Private Sub CLsA_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   Dim InfoSuppl As String
   If NbrLgn = 0 Then
      InfoSuppl = IIf(Complet, "mais ça n'existe pas", "rien n'a été sélectionné")
   Else
      InfoSuppl = IIf(Complet, "et tous les choix nécessaires ont été fait", "mais il rest des choix à effectuer")
      End If
   MsgBox NbrLgn & " ligne(s) trouvée(s) " & InfoSuppl, vbInformation, "CLsA_Change"
   End Sub
Private Sub CLsA_Résultat(Lignes() As Long)

   End Sub
 
Dernière édition:

sabagof

XLDnaute Junior
Que voulez vous dire ?
De mon coté j'ai pu J'ai pu installer cette procédure :et faire un exemple de code de la 1ère :
VB:
Private Sub CLsA_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   Dim InfoSuppl As String
   If NbrLgn = 0 Then
      InfoSuppl = IIf(Complet, "mais ça n'existe pas", "rien n'a été sélectionné")
   Else
      InfoSuppl = IIf(Complet, "et tous les choix nécessaires ont été fait", "mais il rest des choix à effectuer")
      End If
   MsgBox NbrLgn & " ligne(s) trouvée(s) " & InfoSuppl, vbInformation, "CLsA_Change"
   End Sub
Private Sub CLsA_Résultat(Lignes() As Long)

   End Sub
Pardon je disais des bêtises, c'est le propre de celui qui veut apprendre.
Je me suis retrouver un peu, voici le résultat.
 

Pièces jointes

  • GESTION STOCK envois.xlsm
    543.8 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Je vous préviens, tout sera à revoir derrière, il y aura à la place quelques procédures minuscules très simples. À peu près toujours les mêmes dans toutes les applications qui utilisent ces objets. Le plus gros sera défini dans la Sub UserForm_Initialize.
Il y manque pour le moment les CAsA.Add et CAsB.Add
 

Dranreb

XLDnaute Barbatruc
Il manque le plus important: Je viens de voir que l'UserForm s'intitule "Entre/Sortie" et que le thème principal de son travail c'est la base "Booking". Alors c'est surtout pour celle ci qu'il faudrait avant tout un CLs et un CAs
 

Dranreb

XLDnaute Barbatruc
Une ComboBox intéressante à lui faire prendre en charge serait une CBxDateHeure à faire correspondre à la colonne Date
Je deteste les noms d'objets qui finissent par un numéro qui ne veut rien dire. Renommez tous vos objets d'un nom mnémonique commençant par un trigramme pris de cette liste :
1591958024751.png

C'est surtout les Worksheet de la rubrique Microsoft Excel Objets qui ne sont pas parlants, mais aussi les CBn de l'UserForm. Les noms des Tableaux Excel non plus ne veulent rien dire. En général je leur mets le même nom qu'à l'objet Worksheet qui représente la feuille mais avec 'Tab' au lieu de 'Wsh', bien que ce ne soit pas un objet en soit. Quant à une variable ListObject qui le représenterait je ferais évidemment débuter son nom par 'LOt'.
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 500
Membres
103 236
dernier inscrit
Menni