Attribuer un code VBA variable à un boutton d'userform

meca13

XLDnaute Nouveau
Bonsoir le forum,

Je fais appel à vous après un souci de programmation sous Excel
Après plusieurs recherche sur le forum, je me suis perdu,du coup cré une nouvelle discussion, en espérant ne pas faire de doublons.
Peut être allez-vous m’orienter ou me débloquer
Sur mon userform, j’ai des boutons me permettant d’accéder à diverses cas de calcul.
Lorsque je sélectionne un cas, je laisse à l’utilisateur, l’accès uniquement aux cases nécessaires pour un calcul.
Quand je sélectionne le bouton calcul, je souhaiterais qu’il soit fonction des cases remplis et d’une équation spécifique en fonction du cas choisi.
J’ai créé une variable « var » qui me permettrait de contenir ce code et l'attribuer au bouton calcul, mais je bloque sur la liaison avec l’objet command_button.
Je n’arrive pas à dire au code du bouton, qu’il soit fonction du cas choisi.
Dans le fichier joint, un essai avec 2 boutons, mais dans le fichier final une trentaine.

Merci d’avance pour vos réponses
 

Pièces jointes

  • Rdm.xlsm
    60.1 KB · Affichages: 82

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Bonsoir meca13, bienvenue sur XLD,

Utilisez par exemple la propriété Tag de l'USF.

La macro d'un bouton se contentera de donner à cette propriété le nom du bouton.

La macro du bouton "calcul" traitera tous les cas de figure avec un Select Case sur le Tag.

A+
 

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Re,

Au lieu d'une macro pour chaque bouton pour alimenter le Tag, créez un Module de classe.

Une seule macro dans ce module suffira alors.

Faites une recherche sur le forum, il y a pas mal d'exemples.

Bonne nuit et A+

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Bonjour meca13, le forum,

Ci-joint le fichier avec un module de classe.

Le code dans ce module :

Code:
Public WithEvents CB As MSForms.CommandButton

Private Sub CB_Click()
With CB.Parent
  If CB.Name <> "cbCalcul" Then
    If .Tag <> "" Then .Controls(.Tag).BackColor = &H8000000B
    CB.BackColor = &HFFFF& 'jaune
    .Tag = CB.Name
  Else
    Select Case .Tag
      Case ""
      MsgBox "Cliquez sur un bouton...", , "Calcul"
      Case "cb1"
      MsgBox "Mettre ici le 1er calcul"
      Case "cb2"
      MsgBox "Mettre ici le 2ème calcul"
    End Select
  End If
End With
End Sub
Le bouton sur lequel on a cliqué se colore en jaune.

Voyez le code de l'USF avec l'initialisation de la classe.

A+
 

Pièces jointes

  • Rdm(1).xlsm
    60.9 KB · Affichages: 82
  • Rdm(1).xls
    99.5 KB · Affichages: 74

meca13

XLDnaute Nouveau
Re : Attribuer un code VBA variable à un boutton d'userform

Bonjour Job75,

Que dire magnifique, je pense que sans votre intervention le résultat aurait été plus complexe !
Je vais bien décortiquer votre code.
Il ne me reste plus qu'a rédiger les sous programmes de calcul et les intégrer.
Je vous enverrais mon fichier quand il sera terminé pour avoir un œil extérieur sur le code.

Encore merci pour votre intervention.

Cordialement,

meca13
 

meca13

XLDnaute Nouveau
Re : Attribuer un code VBA variable à un boutton d'userform

Bonsoir,

Finalement plus compliqué que prévu ! je n'arrive pas a faire le liaison module de classe avec mon userform.
Il me manque une déclaration de variable , un public ,un privé .... , même ma liste déroulante je ne sais ou la placer.
Sur le module de classe fournie précédemment, quand je sélectionne le bouton voulu, il devrait appeler un bout de code et au lieu de ça ...
J'ai remis le fichier fourni précédemment en ajoutant mes modifications (pas grand chose de ma part du coup).
Si quelqu'un peu me débloquer ou me ré-aiguiller sur un post similaire.

Merci d'avance,

Meca13
 

Pièces jointes

  • Rdm(2).xlsm
    62.3 KB · Affichages: 68
  • Rdm(2).xlsm
    62.3 KB · Affichages: 76
  • Rdm(2).xlsm
    62.3 KB · Affichages: 79

Si...

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

salut

avec ce que j'ai compris (un exemple : 1 bouton mais 2 formules) et un module de classe "TextBox" sans tous les garde-fous.
 

Pièces jointes

  • 1 Bouton 2 formules (UsF).xlsm
    30.1 KB · Affichages: 65

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Bonjour le fil, le forum,

@ Si... : très bien mais pourquoi ne pas utiliser l'USF de meca13 ?

@ meca13 : effectivement vos tentatives ne tiennent pas du tout la route.

J'espère que le fichier joint remettra de l'ordre dans vos idées.

A vous de voir quelles TextBox/ComboBox vous utilisez pour vos calculs.

A+
 

Pièces jointes

  • Rdm(2).xlsm
    62.8 KB · Affichages: 69
  • Rdm(2).xlsm
    62.8 KB · Affichages: 65
  • Rdm(2).xls
    102 KB · Affichages: 61
  • Rdm(2).xlsm
    62.8 KB · Affichages: 58

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Re,

Un petit complément pour que vous puissiez utiliser indifféremment la virgule ou le point comme séparateur décimal dans les TextBox/ComboBox.

Fichiers (3).

A+
 

Pièces jointes

  • Rdm(3).xlsm
    62.8 KB · Affichages: 66
  • Rdm(3).xls
    103 KB · Affichages: 70

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Re,

Pour vous avancer un peu.

Si le calcul peut créer une erreur (division par 0 ici), le plus simple est d'utiliser On Error Resume Next.

Fichiers (4).

A+
 

Pièces jointes

  • Rdm(4).xlsm
    63.7 KB · Affichages: 86
  • Rdm(4).xls
    105.5 KB · Affichages: 63

meca13

XLDnaute Nouveau
Re : Attribuer un code VBA variable à un boutton d'userform

Bonjour,

Encore merci pour votre aide,
Je suis en train de reprendre votre code pas à pas.
Du coup quand on utilise le module de classe, le userform est initialisé en permanence ?
Le combo box doit être initialisé dans le module de classe ?

Cordialement,

Meca13
 

job75

XLDnaute Barbatruc
Re : Attribuer un code VBA variable à un boutton d'userform

Re,

Le combo box doit être initialisé dans le module de classe ?

Ca dépend de ce que vous appelez "initialiser".

Pour créer la liste de la ComboBox par les méthodes .List ou .AddItem, il faut le faire dans la macro UserForm_Initialize de l'USF.

Ou alors renseigner sa propriété .RowSource.

Ca c'est du très classique.

A+
 

meca13

XLDnaute Nouveau
Re : Attribuer un code VBA variable à un boutton d'userform

Re,

Oui en effet, pour la liste, le chargement du combo se faisait sur le premier fichier "rdm", avec .Rowsource.
du coupe je suis passé avec un autre code utilisant .list :

With cb01
.ColumnCount = 2
.ColumnWidths = "30;30"
.List = Worksheets("Liste").Range("a2:b" & Worksheets("Liste").Range("b65536").End(xlUp).Row).Value
End With

Merci encore,

Cordialement,

meca13
 

Pièces jointes

  • Rdm(5).xlsm
    62 KB · Affichages: 68

Discussions similaires

Réponses
18
Affichages
720

Statistiques des forums

Discussions
312 108
Messages
2 085 371
Membres
102 876
dernier inscrit
BouteilleMan