VBA: erreur utilisation la fonction faisant intervenir les classes

Fermé
Ecaterina - 17 mars 2021 à 01:04
 Ecaterina - 18 mars 2021 à 09:51
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

6 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 17 mars 2021 à 17:01
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'Userform3
Public Function contrainte() As Integer
    'Dim iMateriau As Demande_client
    'Set iMateriau = New Demande_client


Maintenant avez vous vraiment besoin d'un module de classe?
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 mars 2021 à 18:51
Suite:
Raz variables:
Plus exactement comme vous recreez une classe, vous avez de nouvelles variables x....
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 mars 2021 à 09:14
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/
0
https://www.cjoint.com/c/KCriWKatbKD
voici le lien
0
c'était une erreur overflow, quand je choisis la ligne pour laquelle il faut faire le calcul, effectivement avec le fichier c'est plus parlant
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 17 mars 2021 à 15:47
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?
0
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)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 mars 2021 à 16:03
Re,

En fait, ce que je voilais faire
Ok, je regarde
0

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
0
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 :)
0