Problème de calcul via textbox.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

morest

XLDnaute Occasionnel
Bonjour à tous.

Je cherche une façon de pouvoir saisir un calcul genre "=15*5+4*7+100" lorsque l'userform s'affiche et que cette chaîne de caractère soit prise en compte sur la fiche de calcul excel.

Voilà le code dont je dispose à l'heure actuelle :

Code:
Private Sub OK_Click()
If Data0 = True Then Sheets("DDP").Range("D9") = Data0.value
End Sub

Data0 étant le nom de ma textbox.

J'ai cherché un peu partout sur le net sans succès. Merci d'avance.
 
Re : Problème de calcul via textbox.

Bonjour morest


Un TextBox est sous forme chaine "123"
il faut placer CDBL avant pour une chaine avec "," ex:"123,45"


Private Sub OK_Click()
If Data0 = True Then Sheets("DDP").Range("D9") = cdbl(Data0.value)
End Sub

A+
 
Re : Problème de calcul via textbox.

Merci néné pour ta réponse.

Cependant ton code ne fonctionne pas dans ma situation. Quand je l'utilise et que je remplis, après exécution de la macro, ma textbox avec =50+1 par exemple alors rien ne se passe, la cellule reste inchangée.
 
Re : Problème de calcul via textbox.

Bonsoir morest, néné, et à ceux qui passeront par là,

Je risque d'être à coté de la plaque,
car "Data" & "CDbl" je ne pige pas pourquoi ici.

Mais je livre cependant ma bidouille ci-joint.
(Il reste à écrire le résultat sur la Feuille choisie)

Amicalement.

Yann
 

Pièces jointes

Re : Problème de calcul via textbox.

Salut Yann,

Merci tout d'abord pour ton aide.

Je m'aperçois que je n'ai pas été suffisamment clair. En fait, voici la feuille excel.

Lorsque tu clic sur le rectangle bleu apparait l'userform. La textbox en face de "Poste" est celle qui me pose problème. J'aimerais pouvoir entrer au lieu d'une valeur numérique une chaine de caractère type "=5+50/14" mais lorsque je le fait rien ne se passe.

En espérant avoir été plus clair. 🙂
 

Pièces jointes

Re : Problème de calcul via textbox.

Bonsoir morest et à tous,

Hormis de rendre plus compliquée la lecture d'un code;
de débaptiser des contrôles va faire que la création d'un groupe
sera plus particulièrement délicate!
Cela peut faire de l'effet, mais quant aux effets.....!!!
(Opinion personnelle, mais moult fois constatée)

Il faudrait peut-être regarder du coté de:

Code:
Private Sub Data0_Change()
Si le nombre de caractères est de "x" alors...
End Sub

Mais au regard de ce que tu dis dans ta question;
il s'agit d'une formule mathématique dont la longueur pourrait être variable.

Il faudrait donc passer par un ordre de validation du calcul,
ainsi que te le montre mon exemple.

Tente le coup!

Amicalement

Yann
 
Re : Problème de calcul via textbox.

Tu as totalement raison modifier les nom des boites était stupide mais c'est l'une de mes premières donc je lutte un peu et j'avais pas prévu le coup 😉.

Sinon j'ai testé ce que tu m'as dit mais je désespère un peu. En fait, je remarque que lorsque je met un signe tel que = + ou autre je pense que la textbox est considérée comme non active.

Faudrait que je trouve un contre à ceci.

Edit : Je vais utiliser cette formule :
Code:
If Data0 <> 0 Then Sheets("DDP").Range("D9").Value = Data0.Value
 
Dernière édition:
Re : Problème de calcul via textbox.

Re,

Je viens de faire un test avec:

Code:
Private Sub OK_Click()
Data0.Value = Evaluate(Data0.Value)

J'ai mis ta formule d'office dans le "Datasgnourff"

Clique sur "OK", et regarde ce qui est écrit dans ta Feuille.

"D9" si je m'en souviens.

ou ".cells(9,4)

A plus tard.

Yann
 

Pièces jointes

Dernière édition:
Re : Problème de calcul via textbox.

Bonjour,

Et moi qui pensais avoir résolu complètement mon problème voici mon nouveau code :

Code:
Private Sub OK_Click()

If B1 = True Then

Sheets("DDP").Range("z9").Value = Sheets("DDP").Range("D9").Value
Sheets("DDP").Range("z10").Value = Sheets("DDP").Range("D10").Value
Sheets("DDP").Range("y11").Value = Sheets("DDP").Range("D11").Value
Sheets("DDP").Range("z11").Value = Sheets("DDP").Range("E11").Value
Sheets("DDP").Range("z12").Value = Sheets("DDP").Range("D12").Value
Sheets("DDP").Range("z13").Value = Sheets("DDP").Range("D13").Value
Sheets("DDP").Range("z15").Value = Sheets("DDP").Range("D15").Value
Sheets("DDP").Range("z16").Value = Sheets("DDP").Range("D16").Value

  If Data0 <> "" Then Sheets("DDP").Range("D9").Value = Data0.Value
  Else: Sheets("DDP").Range("D9").Value = Sheets("DDP").Range("z9").Value
  End If
  If ComboBox1 <> "" Then Sheets("DDP").Range("D10").Value = ComboBox1
  Else: Sheets("DDP").Range("D10").Value = Sheets("DDP").Range("z10").Value
  End If
  If Data2 <> "" Then Sheets("DDP").Range("D11").Value = Data2
  Else: Sheets("DDP").Range("D11").Value = Sheets("DDP").Range("y11").Value
  End If
  If Data3 <> "" Then Sheets("DDP").Range("E11").Value = Data3
  Else: Sheets("DDP").Range("E11").Value = Sheets("DDP").Range("z11").Value
  End If
  If Data4 <> "" Then Sheets("DDP").Range("D12").Value = Data4
  Else: Sheets("DDP").Range("D12").Value = Sheets("DDP").Range("z12").Value
  End If
  If Data5 <> "" Then Sheets("DDP").Range("D13").Value = Data5
  Else: Sheets("DDP").Range("D13").Value = Sheets("DDP").Range("z13").Value
  End If
  If Data6 <> "" Then Sheets("DDP").Range("D15").Value = Data6
  Else: Sheets("DDP").Range("D15").Value = Sheets("DDP").Range("z15").Value
  End If
  If Data7 <> "" Then Sheets("DDP").Range("D16").Value = Data7
  Else: Sheets("DDP").Range("D16").Value = Sheets("DDP").Range("z16").Value
  End If
  Unload Négoce
  
Sheets("DDP").Range("z9").Value = ""
Sheets("DDP").Range("z10").Value = ""
Sheets("DDP").Range("y11").Value = ""
Sheets("DDP").Range("z11").Value = ""
Sheets("DDP").Range("z12").Value = ""
Sheets("DDP").Range("z13").Value = ""
Sheets("DDP").Range("z15").Value = ""
Sheets("DDP").Range("z16").Value = ""

End If
End sub

Le message d'erreur est que le second bloc if then et else: renvoi une erreur car apparemment ce bloc else ne dispose pas d'un "If".

Petit problème de syntaxe donc mais après une bonne heure à tourner en rond je me résous à vous demander votre aide 🙂.

Merci d'avance.
 
Re : Problème de calcul via textbox.

Bonjour,

Si tu as If Then Else End if tu ne peux pas écrire If Then sur une seule
Code:
If Data0 <> "" 
      Then Sheets("DDP").Range("D9").Value = Data0.Value
Else
       Sheets("DDP").Range("D9").Value = Sheets("DDP").Range("z9").Value
End If

A+
 
Re : Problème de calcul via textbox.

Merci pour ta réponse.

Le problème est que excel oblige à mettre If et Then sur la même ligne. En mettant end if pour chaque bloc If le logiciel me dis toujours le même problème. Que dois-je faire 😛 merci encore pour vos aides précieuse.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

N
Réponses
2
Affichages
643
N
S
Réponses
6
Affichages
1 K
S
  • Question Question
Réponses
14
Affichages
3 K
sophie34
S
S
Réponses
2
Affichages
1 K
Solis
S
H
Réponses
6
Affichages
4 K
Helios67
H
N
Réponses
8
Affichages
15 K
N
Retour