VBA: erreur utilisation la fonction faisant intervenir les classes
Ecaterina
-
Ecaterina -
Ecaterina -
onjour,
En cadre de mon projet je dois utiliser les la fonction des classes. Donc j'ai créé une classe demande_client et ensuite j'ai crée une fonction qui fait le calcul à partir des attributs de la classe. La fonction qui est censée de faire ce calcul est appelée quand l'utilisateur clique sur le bouton du userform. Mais une erreur s'affiche. Voici les photos des mes codes et mon fichier.
Ca fait des heures que je suis bloquée, pouvez-vous m'aider svp?
Mon code:
Private Sub CommandButton1_Click()
If OptionButton1 = True Then
Dim materiau1 As Demande_client
Set materiau1 = New Demande_client
materiau1.xeffort_traction = Cells(2, 13)
Dim contrainte1 As Integer
contrainte1 = materiau1.contrainte()
End If
End Sub
La classe:
Option Explicit
'les propriétés de la classe
Public xfacteur_securité As Double
Public xlongueur As Integer
Public xrayon_section As Integer
Public xdim1 As Integer
Public xdim2 As Integer
Public xforme As String
Public xeffort_traction As Integer
Public xmodule_Young As Integer
Public Function Section() As Integer
Dim iSection As Double
Const Pi = 3.14159265358979
If xforme = "ronde" Then
iSection = Pi * (xrayon_section ^ 2)
Section = iSection
Else
iSection = xdim1 * xdim2
Section = Int(iSection)
End If
End Function
Public Function contrainte() As Integer
Dim iMateriau As Demande_client
Set iMateriau = New Demande_client
Dim iContrainte As Double
Dim aSection As Integer
aSection = iMateriau.Section()
iContrainte = (iMateriau.xeffort_traction) / (aSection)
contrainte = Int(iContrainte)
End Function
En cadre de mon projet je dois utiliser les la fonction des classes. Donc j'ai créé une classe demande_client et ensuite j'ai crée une fonction qui fait le calcul à partir des attributs de la classe. La fonction qui est censée de faire ce calcul est appelée quand l'utilisateur clique sur le bouton du userform. Mais une erreur s'affiche. Voici les photos des mes codes et mon fichier.
Ca fait des heures que je suis bloquée, pouvez-vous m'aider svp?
Mon code:
Private Sub CommandButton1_Click()
If OptionButton1 = True Then
Dim materiau1 As Demande_client
Set materiau1 = New Demande_client
materiau1.xeffort_traction = Cells(2, 13)
Dim contrainte1 As Integer
contrainte1 = materiau1.contrainte()
End If
End Sub
La classe:
Option Explicit
'les propriétés de la classe
Public xfacteur_securité As Double
Public xlongueur As Integer
Public xrayon_section As Integer
Public xdim1 As Integer
Public xdim2 As Integer
Public xforme As String
Public xeffort_traction As Integer
Public xmodule_Young As Integer
Public Function Section() As Integer
Dim iSection As Double
Const Pi = 3.14159265358979
If xforme = "ronde" Then
iSection = Pi * (xrayon_section ^ 2)
Section = iSection
Else
iSection = xdim1 * xdim2
Section = Int(iSection)
End If
End Function
Public Function contrainte() As Integer
Dim iMateriau As Demande_client
Set iMateriau = New Demande_client
Dim iContrainte As Double
Dim aSection As Integer
aSection = iMateriau.Section()
iContrainte = (iMateriau.xeffort_traction) / (aSection)
contrainte = Int(iContrainte)
End Function
6 réponses
-
Re,
J'ai mis en commentaire ces deux lignes dans le module de classe.
Pour moi, le fait de redefinir une nouvelle classe fait une raz des variables affectees dans l'Userform3Public Function contrainte() As Integer 'Dim iMateriau As Demande_client 'Set iMateriau = New Demande_client
Maintenant avez vous vraiment besoin d'un module de classe? -
Bonjour,
Mais une erreur s'affiche.
Laquelle?
Un fichier exemple serait plus a meme de pouvoir vous aider
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
ou
'mon partage
https://mon-partage.fr/ -
Re,
Je suppose que c'est l'Userform3 (Calculs).
Cas commande 1
Si je faits derouler le code avec des points d'arret, beaucoup de variables sont egales a 0 ald d'avoir les valeurs de cellules de la ligne 2: xforme, xdim1, xdim2 et autres
Pouvez expliquer? -
En fait, ce que je voilais faire c'est attribuer à chaque attribut de membre de classe demande_client les valeurs qui contiennent les cellules de la ligne 2 (le tableau à droite) . Ayant toutes ces valeurs je voulais effectuer les calculs pour connaitre la contrainte de la poutre. Le fait que xdim1, xdim2 sont nuls signifie que la poutre est ronde et pour trouver la section (aussi grâce à la fonction de la classe) on n'a pas de ces valeurs là. Quand on calcule la section tout dépend de xforme: quels valeurs seront priser en compte)
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
https://www.cjoint.com/c/KCrpgktAzpD
J'ai corrigé le fait que les variables sont nulles, mais ça ne fonctionne toujours pas, c'est le nouveau fichier -
Bonjour! J'ai suivi vos conseils et j'ai enlevé la création de iMateriau et le code fonctionne maintenant
Merci beaucoup pour votre aide :)