Optimisation rapidité VBA

ptityoyo

XLDnaute Nouveau
Bonjour à tous ,

Suite à la création d'un fichier excel comprenant divers macro et code, au fur et a mesure de son achèvement, l'ensemble est devenu assez lourd entraînant donc des ralentissement d’exécution.
N'ayant utiliser que très peu de Variable dans mes codes, je décide de mettre tout cela en place afin de gagner en simpliciter et rapidité

L'un des plus gros problème de mon classeur est qu'il comporte de nombreux Command-Button (100 à 150).
Vous me demanderez surement pourquoi utiliser autant de Command-Button :
- 1ere raison : Estetisme et intuitive, car mon fichier s'adresse à des clients ayant comme seul but de cliquer sur les command button pour valider les choix
- 2eme raison : Utilisation de la fonction visible ou non mais également de la fonction enabled des Boutons.

Pour cela mes boutons utilisent différentes fonctions comme range avec plus ou moins de modification en fonction des boutons, mais également un redimensionnement par rapport à leur emplacement

En pièce jointe, mon fichier simplifier sur quelques boutons afin de visualiser ma façon d'opérer.
Pourriez-vous me donner des conseils à la mise en place de variable ?
De plus tous mes redimensionnement sont en fonction d'un case, y'aurai t'il la possibilité de le redimensionner en fonction de la position d'un autre command button.
A titre d'exemple je possède 3 command button en O1, O2, O3, pour chaque bouton j'utilise les case pour redimensionner, y'a t'il possibilité de basé les redimensionnement du 2 et 3 eme command button en fonction du premier ?

Slts
 

Pièces jointes

  • Classeur1.xlsm
    38.1 KB · Affichages: 55
  • Classeur1.xlsm
    38.1 KB · Affichages: 51
  • Classeur1.xlsm
    38.1 KB · Affichages: 56

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Optimisation rapidité VBA

Bonjour ptityoyo

En effet, tout ça me semble très lourd
Personnellement j'aurais conçu le fichier sans bouton en mettant une procédure évènementielle (par exemple un clic-droit en colonne N )
voir fichier joint avec 6 lignes de code et sans boutons

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    24.4 KB · Affichages: 58
  • 111.xlsm
    24.4 KB · Affichages: 49
  • 111.xlsm
    24.4 KB · Affichages: 48
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Optimisation rapidité VBA

Bonjour Ptityoyo, bonjour le forum,

On pourrait supprimer tous les CommandButton en écrivant leur Caption directement dans la cellule. Au double-clic dans celle-ci le code s'éxécute. En plus il n'y a qu'un seul code pour toutes les cellules (à adapter à ton fichier complet) :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage) 
dl = Cells(Application.Rows.Count, 14).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 14 (=N)
Set pl = Range("n17:n" & dl) 'définit la plage pl
'si le double-clic a lieu ailleurs que dans la plage pl, sort de la procédure
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub
Cancel = True 'empêche le mode édition lié au double-clic
Sheets("Code").Range("F5").Value = Target.Value 'place en F5 de l'onglet "Code" le contenu de la cellule double-cliquée
Sheets("Code").Range("C5").Value = "1" 'place "1" en C5 de l'onglet "Code"
End Sub
Faisable aussi sur un simple clic, mais plus lourd à mon sens...
Le fichier modifié :

[Édition]
Salut Phillipe ! Une fois de plus tu m'as grillé sur le coup...
 

Pièces jointes

  • Ptityoyo_v01.xls
    36 KB · Affichages: 32

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Optimisation rapidité VBA

Re,
On pourrait supprimer tous les CommandButton en écrivant leur Caption directement dans la cellule
Bonjour Robert

chose à laquelle je n'avais pas pensé 111.jpg

Une fois de plus tu m'as grillé sur le coup...
tu connais mal l'ancien sprinteur que je fus :D

à+
Philippe
 

Pièces jointes

  • 111.jpg
    111.jpg
    9.7 KB · Affichages: 106
  • 111.jpg
    111.jpg
    9.7 KB · Affichages: 96

ptityoyo

XLDnaute Nouveau
Re : Optimisation rapidité VBA

Bonsoir !
Merci, il s'agit ici de deux bonnes solutions qui vont certainement me faciliter la vie ;)
La seule interrogation restante est la fonction enabled que j'utilise sur mes commandButton.
Je vais effectuer quelques recherche pour voir quelles solutions pourrait remplacer cette fonction.

Merci a vous
Slts
 

Discussions similaires

Statistiques des forums

Discussions
312 364
Messages
2 087 641
Membres
103 622
dernier inscrit
Desertika