Bonjour,
Les valeurs renvoyées par les zones de texte sont des 'String' et peuvent être interprétées comme telle par la cellule de la feuille de calcul. Il faut utiliser la fonction Val(TextBox.value) pour être sur de renvoyer une valeur numérique
Cela donnerait :
r = Worksheets("CTA" ).Range("A65536" ).End(xlUp).Row + 1
With Worksheets("CTA" )
.Cells(r, 1) = TxtDescriptiondelaCTA.Text
.Cells(r, 2) = TxtMarque.Text
.Cells(r, 3) = TxtType.Text
.Cells(r, 4) = val(TxtDiamètre.Text)
.Cells(r, 5) = val(TxtLargeur.Text)
.Cells(r, 6) = val(TxtHauteur.Text)
.Cells(r, 8) = val(TxtVitesseDésirée.Text)
.Cells(r, 9) = val(TxtDébitDésiré.Text)
.Cells(r, 10) = val(TxtVitesseMesurée.Text)
.Cells(r, 11) = val(TxtDébitMesuré.Text)
.Cells(r, 12) = TxtRemarques.Text
.Cells(r, 7).FormulaR1C1 = _
"=IF(RC[-3]<>0,RC[-3]*RC[-3]*3.1416/4/1000000,RC[-2]*RC[-1]/1000000)"
TxtSurface.Text = .Cells(r, 7).Value
End With
End Sub
Pourquoi ne pourrait-on pas calculer en VBA plutot que d'utiliser une feuille et remplacer la formule :
"=IF(RC[-3]<>0,RC[-3]*RC[-3]*3.1416/4/1000000,RC[-2]*RC[-1]/1000000)"
Par
If val(TxtDiamètre.Text) <> 0 then
TxtSurface.Text =val(TxtDiamètre.Text)*val(TxtDiamètre.Text)*3.1416/4/1000000
else
TxtSurface.Text =val(TxtLargeur.Text)*val(TxtHauteur.Text)/1000000
end if
Worksheets("CTA" ).Cells(r, 7)=TxtSurface.Text
Cordialement
Epena