Reduction de code

bonsoir

comment reduire mon code de 15x15 boutons qui et tres lourd et tres long a ouvrir

un extrait des 255 codes

Private Sub CommandButton1_Click()
Application.Goto Reference:=Range("c4"), Scroll:=True
End Sub
Private Sub CommandButton2_Click()
Application.Goto Reference:=Range("c39 "), Scroll:=True
End Sub
Private Sub CommandButton3_Click()
Application.Goto Reference:=Range("c74 "), Scroll:=True
End Sub
Private Sub CommandButton4_Click()
Application.Goto Reference:=Range("c109 "), Scroll:=True
End Sub
Private Sub CommandButton5_Click()
Application.Goto Reference:=Range("c144 "), Scroll:=True
End Sub
Private Sub CommandButton6_Click()
Application.Goto Reference:=Range("c179 "), Scroll:=True
End Sub
Private Sub CommandButton7_Click()
Application.Goto Reference:=Range("c214 "), Scroll:=True
End Sub
Private Sub CommandButton8_Click()
Application.Goto Reference:=Range("c249 "), Scroll:=True
End Sub
Private Sub CommandButton9_Click()
Application.Goto Reference:=Range("c284 "), Scroll:=True
End Sub
Private Sub CommandButton10_Click()
Application.Goto Reference:=Range("c319 "), Scroll:=True
End Sub
Private Sub CommandButton11_Click()
Application.Goto Reference:=Range("c354 "), Scroll:=True
End Sub

pour être plus clair j ai 15 tableaux avec 15 boutons

ex:les boutons 3,18,33,48 ect ect correspondent au tableau 3 donc j ai 15 bouton qui vont au tableau 3

j espère être clair

merci d avance

Bonsoir exelan,

Le code de ton 1er bouton peut être un peu réduit :

Private Sub CommandButton1_Click()
  Application.Goto [C4], True
End Sub

idem pour tous les autres boutons, mais à part ça, comme chaque bouton fait sa propre action courte, j'vois pas c'qu'on pourrait faire d'autre ! c'est pas grand chose, je sais, mais c'est toujours ça...

dhany

salut dhany

c mieux c sur mais j ai pas envie de modifier les 255 codes

je vois plutôt un truc du genre

les boutons 5,10,15,20,25,30,35,40,45,50,55,60,65,70,75 vont vers C4 en cliquant dessus

ca me ferai que 15 codes

merci pour ton aide

Bonjour

faire un userform avec une combobox

et dans un onglet dans la première colonne mettre les nom

et dans la colonne 2 mettre les ranges ex: C19

A+

Maurice

Bonjour

voila un exemple avec un combobox ou Listbox

A+

Maurice

10comboboxgoto.xlsm (48.42 Ko)

Bonsoir,

j'avais proposé ceci :

8gros-tableau.xlsm (18.03 Ko)

mais il ne veux pas de liste...

@ bientôt

LouReeD

Bon...jour !

Pour les commandes groupées, voir les modules de classes...

Si les macros sont toutes du même type (des décalages) ça parait pas bien sorcier :

Une seule macro à modifier quelque soit le nombre de boutons (dans mon classeur), mais c'est une pièce d'horlogerie : Pas des tombées de camion !

A+

29classbtn.xlsm (47.79 Ko)

Bonjour galopin01 !

C'est exactement ce que j’essayai de faire !

Les modules de Class, y a pas a dire ... Je n'y arrive pas !

J'étais partis sur le fait de lancer une macro général avec le nom du bouton cliqué, mais je n'y arrive pas...

Et puis c'était nul cat il fallait écrire les 150 private sub de click !!!!

Mais sinon, comment récupérer dans la private sub du click du bouton, son nom, pas le caption, mais son nom "VBA" ?

Je pense qu'exelan va être ravis de cette solution...

@ bientôt et bonne nuit...

LouReeD

bonjour,

Il n'est nulle part fait appel à la notion de caption :

J'ai mis un N° sur les boutons pour les besoins de la démo mais les macros n'utilisent pas ces captions.

Dans mon modèle le module de classe utilise seulement le Name natif et récupère son indice pour le passer en paramètre integer à la macro (Action)

Private Sub CmdBtnGrp_Click()
Dim s%
    'récupération du N° d'objet dans le string "Name"
    s = CInt(Right(CmdBtnGrp.Name, Len(CmdBtnGrp.Name) - 13))
Action s
End Sub

La difficulté est dans l'ordonnancement des boutons à la construction et surtout dans la permanence de cet ordonnancement si le nombre des boutons peut varier dans le temps.

Il y a aussi un autre problème c'est le nombre de tableaux et le "step" de "décalage"

ici c'est 35 mais est-ce le cas de tous les tableaux ?

Il y a plusieurs options possibles pour résoudre ces difficultés et c'est surtout dans la conception que réside la difficulté.

Dans tous les cas on créera au moins autant de boutons que de cas potentiellement prévisibles.

Selon si le nombre de boutons est susceptible de varier ou non, il faudra peut-être passer successivement par plusieurs Dim Buttons() As New Classe1 pour chacun des 13 tableaux. Dans Module1 ça pourrait éventuellement donner :

Dim ButtonsA() As New Classe1
Dim ButtonsB() As New Classe1
'... etc
Dim ButtonsM() As New Classe1

Pour le Init en l'absence d'idée précise sur la dynamique de la construction, je te passe les détails... Ça peut aller d'un simple Select Case si la structure est figée (donc identique au modèle) à un Init un peu plus torturé si l'on doit créer des groupes de boutons différents.

Au niveau du module de classe également si les "Step" sont différents il faudra gérer au moins 2 paramètres supplémentaires :

Le N° de première ligne de chaque tableau

Le nombre de boutons par tableau

Et le décalage...

De quoi se stimuler un peu les neurones, quoi ! Mébon... En l'absence de fichier je ne m'avance pas plus... C'est juste pour montrer la puissance des modules de classe.

A+

salut a tous

Voilà ma feuille réduit a 4 tableaux et 4 boutons pour modèle

A partir du « Tableau 1 »

Si je clic dans le 1er tableau sur le bouton « Tableau 4 » mon tableau 4 doit se mettre sur C112 en haut de la feuille

A partir du « Tableau 4 »

Si je clic sur le bouton « Tableau 1 » mon tableau 1 doit se mettre sur C7 en haut de la feuille

fichier-joint :modele boutons

14modele-boutons.xlsm (46.76 Ko)

merci

Bonjour

avec un seul Bouton

A toi de voir

A+

Maurice

8listboxgoto.xlsm (44.58 Ko)

Bonjour le forum !

Oui en gros ma réponse avec liste de choix et des références de palges nommées ou bien de tableau va très bien pour un cas comme celui là, non ?

Merci galopin01 pour les explications, mais je n'ai toujours pas compris la construction d'une structure de class...

Pas grave, je vais continuer de chercher, avec le temps....

@ bientôt

LouReeD

je dois avoir mes boutons sur chaque tableau

avec la couleur verte pour le bouton qui correspond au tableau (voir mon fichier joint)

la couleur verte me confirme dans quel tableau je me trouve

pour avoir le visu et la rapidité d exécution

ou bloquer la colonne (je crois que c pas possible) pour avoir que 15 boutons qui change de couleur a la selection

si je fais 15 bouton comme ca

capture

je peux pas lui affecter une macro (la placer dans un module pour que ça fonctionne dans plusieurs feuilles)

et mettre un de c 15 boutons dans chaque tableau

merci de me répondre je patauge grave la !!!

Bonsoir,

Désolé de ne pouvoir te répondre :

Je te parle d'horlogerie et tu me balance des tombées de camion...

Quand ta montre est en panne tu ne commences pas par la démonter puis tu n'envoies pas la photo à ton bijoutier, n'est ce pas ?

Moi je fonctionne pareil. Il faut me laisser l'objet en dépôt. Anonymisé (oupa) ça c'est à toi de voir...

Mais ça doit fonctionner globalement de manière identique à l'original.

Vu que j'ai déjà donné une démo de solution de principe, il me parait inutile de te livrer une autre démo réduite différemment : Tu ne sauras pas mieux l'adapter car elle a de forte chance d'être plus complexe.

En plus de l'objet j'ai besoin de savoir exactement de quoi on parle. Il est supposé qu'on parle d'un fichier tournant sous 2016 : Je ne traite pas les sujet sous MAC vu que je n'en dispose pas.

A+

salut galopin01

j ai mis un fichier ( Aujourd’hui, 13:15 ) avec 4 tableaux et 4 boutons c ce que je veux au final mais avec 15 tableaux et 15 x 15 boutons

mais 4 ou 15 c pareil non ???

fichier-joint :modele boutons

modele boutons.xlsm

(46.76 Kio) Téléchargé 4 fois

ps:j ai tester les hyperliens marche bien en descendant mais décale les lignes en remontant ???

merci a toi

Rechercher des sujets similaires à "reduction code"