répétion de bouton...pfff

  • Initiateur de la discussion Initiateur de la discussion fifi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fifi

XLDnaute Occasionnel
bonsoir le forum

ca commence a faire beaucoup de boutons..

j'ai un userform qui permet de faire une selections d'un ou plusieurs "article" dont les noms sont affichés en caption sur les boutons.

il y a en actuellement 45...et le nombre aurait tendance à augmenter.

à chaque bouton est lié la macro suivante.
Comment faire pour que le code suivant soit appliqué à chaque fois que l'utilisateur clic sur un des x boutons?


cela diminuera au moins la taille du classeur ..et surtout le nécessiter de rajouter du code au cas ou il y aurait plus de boutons, et encore moins fastidieux si je dois faire une modif du code pour chaque bouton.

merci

---------------------------------------------------------------------------
Code:
Private Sub CommandButton55_Click()

On Error Resume Next
nb_cible_à_sélectionner.Caption = 0
    '''compte le nombre de primers selectionnés
    For I = 1 To Sheets("liste").Range("listes_germes_liste")
        If cible_select.Controls("CommandButton" & I).BackColor = &HFF& Then
            nb_cible_à_sélectionner.Caption = nb_cible_à_sélectionner.Caption + 1 '''
        End If
    Next I

    '''retranche le primer au total   '''si rouge alors déselection
    If ActiveControl.BackColor = &HFF& Then   ''si rouge alors nb germe -1 et vert
         'If cible_select.CommandButton1.Caption = "Ti" Then GoTo no_deselection
         If cible_select.ActiveControl.Caption = "Ti" Then GoTo no_deselection
         ActiveControl.BackColor = 12648384   'vert
         nb_cible_à_sélectionner.Caption = nb_cible_à_sélectionner - 1
    Else   '''si vert alors selection sous conditions
        '''si formule variable alor limite  à 11 cibles
        If nb_cible_à_sélectionner.Caption * 1 = 11 Then
            MsgBox ("nombre de cibles maximum atteint!")
            Exit Sub
        End If
        If Range("Ampli_choix_formule") = "manuel" And nb_cible_à_sélectionner.Caption * 1 = 1 Then
            MsgBox ("Une seul cible à la fois")
            Exit Sub
        End If
        ActiveControl.BackColor = &HFF&
        nb_cible_à_sélectionner.Caption = nb_cible_à_sélectionner + 1
    End If
no_deselection:
End Sub
 
Re : répétion de bouton...pfff

Re,

Crée un CommandButton1 et Met ce code sur ta feuille (ALT +F11)

'Bouton Suit La Feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim TopPos As Long
Dim LeftPos As Long
Dim X As Long
Dim Y As Long
For X = 1 To ActiveWindow.ScrollRow - 1
TopPos = TopPos + Cells(X, 1).Height
Next X

For Y = 1 To ActiveWindow.ScrollColumn - 1
LeftPos = LeftPos + Cells(Y, 1).Width
Next Y
TopPos = TopPos + ActiveWindow.UsableHeight - 250 ' valeur a modifier
LeftPos = LeftPos + ActiveWindow.UsableWidth - 500 'idem
Sheets("feuil1").OLEObjects("CommandButton1").Left = LeftPos
Sheets("feuil1").OLEObjects("CommandButton1").Top = TopPos
End Sub

Ca devrait, je pense, résoudre ton problème
Cordialement
 
Re : répétion de bouton...pfff

bonjour noviceAG

chaque bouton est différents par son caption qui est mis a jour en fonction des "articles" que j'ai en stock.

ces boutons sont affichés dans un userform et chacun des boutons a sa macro (CommandButton1_Click()) afin de colorier en rouge ou vert le bouton selectionné/déselectionné et incrémenter/décrémenter un compteur.


euh je comprends pas ce que tu veux faire avec le code que tu m'as donné ^^
 
Re : répétion de bouton...pfff

Re,
C'est ceci qui a motivée ma réponse :

à chaque bouton est lié la macro suivante.
Comment faire pour que le code suivant soit appliqué à chaque fois que l'utilisateur clic sur un des x boutons?


Désolé de ne pouvoir faire davantage
Bonne soirée
 
Re : répétion de bouton...pfff

Bonjour a tous.
Si j'ai bien compris, tu colle se code dans chaque fonction des boutons. Tu as donc 45 fois le même code.

Facon simple d'y remedier.

Tu cré un module. Dans se module tu met exemple ceci:
Sub Bouton()
On Error Resume Next
nb_cible_à_sélectionner.Caption = 0
... etc ...
End Sub

Une fois se module créé. Il ne te suffit de mettre a chaque bouton:
Private Sub CommandButton55_Click()
Call Bouton
End Sub
Private Sub CommandButton54_Click()
Call Bouton
End Sub
...etc...

Luinil
 
Re : répétion de bouton...pfff

Bonsoir à tous,

Si tu as 55 boutons sur ton userform, tous avec la même le même code, le plus pratique est de passer par un module de classe. 1 macro pour tes 55 boutons.

Crée une macro dans un module de code standard avec ton code.
Crée un module de classe sur le modèle du fichier en PJ. Dans la macro du bouton remplace ma_macro par le nom de ta nouvelle macro.

Dans le code du userform, adapte le tableau TabBtn, TabBtn(1 to 55).
Puis dans la procédure d'initialisation du Userform, modifie la boucle k :
For k = 1 to 55

Voir le fichier en PJ

A+
 

Pièces jointes

Re : répétion de bouton...pfff

merci pour tout bqtr
ca marche nikel et cela allége pas mal le code... 😀
j'ai meme appris le module de classe, je vais approfondir cette béstiole pour l'avenir.

merci encore pour cet exemple.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
367
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
463
Réponses
6
Affichages
556
W
Retour