Aide sur cette fonction , je n'y arrive pas

Bonjour,

Je me casse la tête mais je n'y arrive pas. Pouvez-vous m'aider s'il vous plait sur cette fonction

Public Function ConversE(Quoi) As Double

On Error Resume Next

Quoi = CDbl(Quoi)

If Err.Number <> 0 Then

Err.Clear

ConversE = Replace(CStr(Quoi), ",", ".")

Else

ConversE = Quoi

End If

End Function

Elle fonctionne super bien pour des calculs entre textbox genre : qvt3 = (ConversE(tot3) * ConversE(ttva1)) / 100

Et évite les erreurs cdbl quand le textbox est vide

le but final est, cet exemple :

Range(Sheets("Facturation").Range("B:B").Find(fnumfacture.Value, LookIn:=xlValues).Address).Select

ActiveCell.Offset(0, 17) = ConversE(qvt3)

ça marche super MAIS : Quand le textbox concerné est vide il me met dans la cellule de destination un : 0,00

c'est pas top, avec le nombre de textbox que j'aurais à traiter, je risque d'avoir plein de 0,00 dans ma base et ils vont apparaitre aussi lors de l'alimentation de mes textbox sur l'userform

Ma question :

Comment modifier cette fonction pour que quand la valeur du textbox est vide, (rien) pas de 0,00 ne soit mis dans la cellule de destination

genre un truc comme ça :

if textbox ou Quoi = "" then

cellule ou converse ou Quoi = ""

Merci de m'aider

Amicalement

Bonjour,

Tu pourrais tester ...

If Quoi ="" Then Exit Function

Merci pour la réponse

j'ai mis ta ligne un peut partout dans la function

ça ne marche pas

les textbox vides résultent des cellules avec 0,00

Une autre possibilité

Au début de la procédure lancée par un command button

Avec for each (je connais très peu comment utiliser cette fonction)

exemple :

for each ? = ""

? = pas cdbl ou value = ""

La procédure du bouton compte 505 lignes et renvois la valeur d'env 300 textbox, combobox, listbox, etc...

Tout fonctionne bien sans lenteur mais ce problème de 0,00 m'enerve vu la quantité de contrôles traités ça en fait des paquets de 0,00

La procédure est celle-ci

Private Sub enrfacture_Click()

If fnumfacture = "" Then

MsgBox "Vous devez sélectionner un numéro de facture"

Exit Sub

for each ?

?

sheets("Facturation").[B3].End(xlDown).Offset(0, 39) = ConversE(mcent1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 40) = ConversE(net1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 41) = ConversE(caut1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 42) = op1.Text

Sheets("Facturation").[B3].End(xlDown).Offset(0, 43) = ConversE(tot1)

etc...

Sheets("Facturation").[B3].End(xlDown).Offset(0, 300) = fnumdevis.Value

End Sub

Merci de continuer à m'aider

Je suis content, j'ai trouvé tout seul

C'était simple mais il fallait y penser

j'ai remplacé

sheets("Facturation").[B3].End(xlDown).Offset(0, 39) = ConversE(mcent1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 40) = ConversE(net1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 41) = ConversE(caut1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 42) = op1.Text

Sheets("Facturation").[B3].End(xlDown).Offset(0, 43) = ConversE(tot1)

par

On Error Resume Next

sheets("Facturation").[B3].End(xlDown).Offset(0, 39) = cdbl(mcent1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 40) = cdblnet1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 41) = cdbl(caut1)

Sheets("Facturation").[B3].End(xlDown).Offset(0, 42) = op1.Text

Sheets("Facturation").[B3].End(xlDown).Offset(0, 43) = cdbl(tot1)

Là MIRACLE ça marche super bien

en effet On Error Resume Next passe les erreurs cdbl et ne prend que des textbox contenant des valeurs cdbl ou autres (non vides) :

résultat :

  • mes textbox vides = cellules vides
  • il n'y a plus d'erreurs cdbl

je garde la function conversE qui reste très utile pour le calcul entre texbox mais pour la validation de mes textbox

je vais utilser dorénavant : On Error Resume Next + cdbl

Désolé, si pour vous c'est rien, mais pour moi "ça va me changer la vie"

Je suis

Dites moi si ma trouvaille vous a été utile

Rechercher des sujets similaires à "aide cette fonction arrive pas"