Teritoto
Messages postés5Date d'inscriptionmardi 20 mai 2008StatutMembreDernière intervention 6 juin 2008
-
4 juin 2008 à 17:25
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
6 juin 2008 à 23:04
Bonjour,
J'ai un petit problème de taille de fichier (2Mo) à cause de mes codes VBA.
Dans un classeur Excel:
-j'ai près de 100 feuilles (chacune décrivant un produit)
-sur chaque feuille j'ai une combobox et un bouton ki me permettent de naviguer d'une page à l'autre facilement
voici le code:
Private Sub CommandButton1_Click()
Dim MySheet As Worksheet
For Each MySheet In ThisWorkbook.Sheets
If MySheet.Name = ComboBox1.Text Then
MySheet.Select: Exit Sub
End If
Next MySheet
End Sub
Mon souci est que d'avoir dupliqué ce code sur chaque page a fortment allourdi mon fichier (de près de 500ko).
Y-a-t'il une une astuce pour loger ce code sur le classeur (et non sur chaque page) et que le bouton soit lié à ce code unique?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 4 juin 2008 à 17:44
Bonjour,
Une solution simple, serait d'utiliser une UserForm, associé à un menu dans la barre de menu. Ainsi, toutes les feuilles serait "libres" (pas d'élément de formulaire dedans), et le code serait limité à sa plus simple expression.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 4 juin 2008 à 18:04
Salut,
Salut us_30 sympat de te revoir a nouveau dans le coin
teritoto, tu peux aussi supprimer tout tes boutons et metre en forme une cellule pour qu'elle ressemble a un bouton puis mettre le code suivant dans le thisworbook de ton projet:
dans le code suivant je considere que la cellule qui fait office de bouton est la cellule B2
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Target If .Cells.Count 1 And .Address "$B$2" Then
Dim MySheet As Worksheet
For Each MySheet In ThisWorkbook.Sheets
If MySheet.Name = .Text Then
MySheet.Select: Exit Sub
End If
Next MySheet
End If
End With
End Sub
cela fera exactement la meme chose qu'avec un bouton mise a part que le code n'existe qu'unr fois dans thisworkbook
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 4 juin 2008 à 18:22
Salut Bigfish_mais_le_vrai, heureux aussi de revoir les habitués...
(Je n'ai pas quitté VBF, mais je n'avais plus une minute à moi... enfin, bref...)
Ce que je trouve peu pratique, c'est qu'il faut écrire le nom de la feuille... Or qu'on pourrait penser à faire une liste déroulante, à priori, avec toutes les noms de feuilles. A moins que l'interêt serait de passer qu'à une seule feuille spécifique... Teritoto, pourrais-tu préciser ? (ton pb me donne l'idée d'un petit programme...)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 5 juin 2008 à 02:11
Et pourquoi ne pas simplement utiliser le click droit en bas à gauche sur les 4 boutons fléchés de l'application ? aucun code et ça donne le même résultat que les combobox...
De toutes façons, la grosseur du programme n'a pas vraiment d'influence sur la lenteur de ce programme tant que le code n'est pas activé. Pour ce qui est des formules, là c'est différent...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 5 juin 2008 à 06:55
salut,
je suis d'accord avec Us_30 (salut)
Un UserForm en Non modal ferait très bien l'affaire.
Autres soluces :
* Module de classe (risque d'être long pour boucler au démarrage du classeur)
* Ajout d'un menu, genre à côté du ? (qui représente l'aide Excel)
Teritoto
Messages postés5Date d'inscriptionmardi 20 mai 2008StatutMembreDernière intervention 6 juin 2008 5 juin 2008 à 15:12
Bonjour à tous,
Mon objectif est de pouvoir rapidement passer d'une feuille à une autre et cela à partir de toutes les feuilles, sachant que je connais le nom de toutes les feuilles.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 5 juin 2008 à 23:12
Si tu veux continuer avec ta méthode, une seule ligne devrait suffire.
À moins que la vérification soit nécessaire pour une raison que j'ignore...
Et le code pourrait être dans Combobox1_Click plutôt qu'un bouton. Ce qui donne un contrôle de moins sur 100 feuilles...
Private Sub CommandButton1_Click()
Sheets(Combobox1.Text).activate
End Sub
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 juin 2008 à 23:26
Bonsoir à tous, Mortalino et MPi,
C'est vrai que MPi a totalement raison sur son premier post... Faire un click droit sur les flèches... J'utilise pas souvent cette possibilité, mais qui réponds tout même bien au problème de navigation...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 5 juin 2008 à 23:40
En fait, si je créais ce genre d'application pour mes propres besoins, j'opterais pour ma première réponse sans hésiter.
Par contre, si cette application devait être utilisée par d'autres, j'essaierais peut-être de créer une méthode plus conviviale comme cherche à faire Teritoto... Il y a pas mal de gens que je connais, et qui utilisent mes programmes... et il faut être prudent sur la façon dont on bâtit les applis (et tu en sais quelque chose, j'en suis sûr ). Ça ne prend pas grand chose pour les perdre... même avec des explications...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 juin 2008 à 23:51
100% d'accord.
... Si on veut faire un menu plus conviviale, il faut d'abord penser à la forme que cela doit revêtir... Une liste déroulante ? des gros boutons ? un classement des feuilles en ordre alphabétique ?... ou plus ciblé ; c'est à dire qu'à partir certaines feuilles, mettre plus en priorité l'accès à certaines autres feuilles spécifiques...? etc...