Resalut Porcinet82,
Je n'y arrive pas.Ci joint l'adresse de mon classeur.Ca se passe sur la page controle des débits d'air aux centrales, c'est la surface que je veux récupérer dans le userform.
Si tu veux bien y jeter un coup d'oeil.Merci http://cjoint.com/?mxwati6LWq
Je viens de jeter un oeil a ton fichier, le soucis c'est ce que je ne peux pas tester la procédure, donc à vu d'oeil, je dirais que ca fait quelque chose du genre:
Code:
Dim surf_carre as integer, surf_ronde as integer
If OpbGainecarrée=True Then
surf_carre=TxtLargeur.value*TxtLargeur.value
TxtSurface.value=surf_carre*TxtHauteur.value
Else if OpbGainecronde=True Then
surf_ronde=(TxtDiametre.value/2)*(TxtDiametre.value/2)*3.1415926
TxtSurface.value=surf_ronde*TxtHauteur.value
End if
Je pense qu'avec ce code et ce qu'on t'a deja donné avant, tu devrait t'en sortir.
Si ce n'est pas le cas, réessaye de mettre ton fichier en PJ afin que je puisse tester le code.
Salut Porcinet82,
tout d'abord merci pour ton aide et joyeuses fêtes à toi et tes proches.
J'ai réussi a contourner mon problème , d'une manière peut etre pas catholique mais çà marche. Par contre j'obtient la valeur de la surface dans le USF quand je clique sur OK, j'aimerai avoir la valeur dés que je rentre un diamétre ou une section!!
Pour la procédure: page de garde;controle des debits d'air aux centrales; là tu rentre qque chose dans désignation; marque; type tu choisie gaine ronde tu rentre un diametre si tu choisi gaine carrée rentre largeur et hauteur tu clique sur OK la surface s'affiche et le reste se vide, il faudrait quand même temps que l'on rentre les valeurs diametre hauteur largeur que la surface s'affiche et OK tout se vide
ci joint le nouveau classeur http://cjoint.com/?mymPyDcNkp
Si t'as le temps Merci @+
Bon, tout d'abord je te signal une petite anomalie, rien de bien méchant, mais bon. Tu as mis des controles afin de vérifier que les champs sont bien remplis. Hors, lorsque l'on sélectionne une gaine carrée, on ne devrait pas être obligé de remplir un diamètre, non?
Sinon, je vois que tu as réussit a calculer la surface. Je pense qu'en mettant ton calcul dans le code suivant, ca devrait fonctionner.
Code:
Private Sub TxtHauteur_Change()
End Sub
En prenant un exemple tout con, ca donne ceci :
Code:
Private Sub TextBox2_Change()
TextBox3.Value = TextBox1.Value * TextBox2.Value
End Sub
Je pense qu'en mettant le code que je t'ai donné dans le précédent post, dans la procédure ci-dessus, ca devrait marcher. Mais ca doit aussi fonctionner avec ton cas.
Je te file en PJ mon exemple bidon pour que tu vois ce que ca donne.
Désolé de te faire bosser une veille de noël!!!
je ne peux pas mettre ma formule là ou tu me la indiquer car a chaque entrée de nouvelles valeurs je décale la saisie d'une ligne dans la feuille Excel.Et dans ton post je ne comprend pas tout:
tu multiplie la largeur par elle meme ????
Dim surf_carre as integer, surf_ronde as integer
If OpbGainecarrée=True Then
surf_carre=TxtLargeur.value*TxtLargeur.value
TxtSurface.value=surf_carre*TxtHauteur.value
Else if OpbGainecronde=True Then
surf_ronde=(TxtDiametre.value/2)*(TxtDiametre.value/2)*3.1415926
TxtSurface.value=surf_ronde*TxtHauteur.value
End if
n'est il pas possible de mettre :TxtDiamètre_Change() dans la meme instruction cmdok.clik ????????
Et bien pour commencer, la surface d'un cylindre est bien surface de base*hauteur, la surface de base etant un cercle dont l'aire est Pi*r² et celle d'un parallépipède rectangle est surface de base*hauteur dont la surface de base un rectangle de surface longeur*largeur.
Mais je me suis peut etre planté, ce n'est peut-etre pas ca que tu calculs.
POur ta seconde question, nan il n'est pas possible de mettre TxtDiamètre_Change() dans ta procédure cmdok.clik(), ca reviendrait au meme que précédement, a savoir que le resultat s'afficherai que lorsque tu cliques.
Est-ce que tu pourrais joindre ton fichier dans le forum afin que je puisse regarder comment fonctionne vraiment ton projet, notamment le fait que chaque nouvelles valeurs sont décalées lors de la saisie.
Est ce que tu ne reçoit pas l'adresse ou tu peux telecharger mon classeur ?????
pour les calculs: en fait ce projet me sert dans mon boulot,on fait des mesures sur des gaines de ventilation donc on a le choix entre des gaines rondes ou des gaines carrées donc pour calculer la surface: on choisit avec optionbutton gaine ronde ou gaine carrée et on rentre soit le diamètre soit la largeur et la hauteur !!OK ??
Est ce que tu ne reçoit pas l'adresse ou tu peux telecharger mon classeur ?????
pour les calculs: en fait ce projet me sert dans mon boulot,on fait des mesures sur des gaines de ventilation donc on a le choix entre des gaines rondes ou des gaines carrées donc pour calculer la surface: on choisit avec optionbutton gaine ronde ou gaine carrée et on rentre soit le diamètre soit la largeur et la hauteur !!OK ??
Désolé, j'arrivais a une page web ou il y avait ton classeur mais j'etais tellement dedans que j'avais pas vu que je pouvais le telecharger.
Bon avec le fichier c'est deja beaucoup plus simple et il me semble avoir trouver la solution, enfin je te laisse vérifier. Il faut que tu mette le code que je t'ai donné précédemment, dans ton USF Feuille de saisie CTA:
(Par contre, il ne faut pas oublier de cocher soit gaine ronde, soit gaine carrée)
Code:
Private Sub TxtHauteur_Change()
Dim surf_carre As Integer, surf_ronde As Integer
If OpbGainecarrée = True Then
surf_carre = TxtLargeur.Value * TxtLargeur.Value
TxtSurface.Value = surf_carre * TxtHauteur.Value
ElseIf OpbGainecronde = True Then
surf_ronde = (TxtDiametre.Value / 2) * (TxtDiametre.Value / 2) * 3.1415926
TxtSurface.Value = surf_ronde * TxtHauteur.Value
End If
End Sub
Par contre, lorsque je test ton code (sans le mien), ca n'incrémente pas les données sur la feuille CTA, ca les ecrasent. Il ne reste que les dernières valeurs rentrées.
Je viens de jeter un oeil avec mon code, lorsque tu cliques sur ok, ca plante.
Je te file ce que j'ai fais pour le moment des fois que ca pourrait t'aider mais je vais rejeter un oeil.
PS: Dans le calcul que je fais, je calcul le volume et non l'air de la gaine (les cours de maths remonte un peu), mais si ca fonctionne avec le volume, ca fonctionnera avec la surface