Calcul dans une textbox

dePOI

XLDnaute Junior
Bonjour à tous,
Bonjour PierreJean. Si tu peux prendre en charge ce nouveau problème.
Tu m'as aidé à convertir dans une textbox des données saisies sous la forme xxx xx xx S en données affichées sous la forme xxx° xx' xx'' S.
Ce que je souhaite faire à présent c'est ceci:
Dans la textbox suivante je dois convertir en valeur décimale la valeur de cette première textbox selon la formule suivante:
(partie des ° + partie des ' divisée par 60 + partie des '' divisée par 3600) le tout multiplié par moins 1 si la derlière partie est S ou O)
Exemple: 5° 25' 19'' S, donnerait (5 + 25/60 + 19 / 3600)*-1 = -5,421944 (calcul réel).
J'ai réalisé un petit convertisseur sous Excel mais travailler sur plus de 5000 items pour retranscrire les calculs à la mimine c'est pas .... le pieds!
Si tu veux bien m'aider une fois de plus, après je ne te solliciterai plus, parole de pochard.
Amicalement.
 

job75

XLDnaute Barbatruc
Re : Calcul dans une textbox

Bonjour dePOI,

On peut utiliser cette fonction VBA, à placer dans un Module standard :

Code:
Function Convertir(t$)
If Not t Like "*° *' *'' ?" Then Convertir = t: Exit Function
Dim s
s = Split(t)
Convertir = Val(t) + Val(s(1)) / 60 + Val(s(2)) / 3600
If UCase(s(3)) = "S" Or UCase(s(3)) = "O" Then Convertir = -Convertir
End Function
Elle sera utilisée par ces 2 macros :

1) pour convertir les données existantes de la feuille active :

Code:
Sub ConvertirPlage()
'pour convertir les données de la feuille active
Application.ScreenUpdating = False
Dim c As Range
For Each c In ActiveSheet.UsedRange 'adapter éventuellement la plage
  c = Convertir(c.Formula)
Next
End Sub
2) dans le code de l'UserForm :

Code:
Private Sub TextBox1_AfterUpdate()
'ici le code de pierrejean
TextBox2 = Convertir(TextBox1.Text)
End Sub
A+
 
Dernière édition:

dePOI

XLDnaute Junior
Re : Calcul dans une textbox

Bonjour et merci JOB75.
J'avoue ne rien comprendre à ta solution, en première lecture.
J'ai là, matière à expérimentation. Donc au travail et sur un classeur à part pour éviter de "polluer" mon code.
Dès que ce sera fait, permets moi de te recontacter.
Bonne journée.
 

job75

XLDnaute Barbatruc
Re : Calcul dans une textbox

Bonjour dePOI, le forum,

Un exemple d'utilisation de la fonction Convertir avec cette macro dans l'USF :

Code:
Private Sub TextBox1_AfterUpdate()
Dim x, xx$
'---pierrejean---
Application.EnableEvents = False
x = Split(TextBox1.Value)
On Error GoTo 1
xx = x(0) & "° " & x(1) & "' " & x(2) & "'' " & UCase(x(3))
TextBox1 = xx
'---job75---
TextBox2 = Convertir(TextBox1.Text)
With Range("A" & Rows.Count).End(xlUp)(2)
  .Value = TextBox1
  .Offset(, 1) = CDbl(TextBox2.Value)
End With
GoTo 2
1 MsgBox ("format obligatoire : xx xx xx x ")
2 Application.EnableEvents = True
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Coordonnées(1).xls
    51 KB · Affichages: 49

dePOI

XLDnaute Junior
Re : Calcul dans une textbox

Job75
Je t'en veux!!!!
Tu viens de me priver d'une journée de torture de méninges....
Ta dernière proposition est tout bonnement géniale!
J'en reste baba.
C'est simple, c'est compréhensible et surtout propre et EFFICACE.
Je m'empresse de refaire mon convertisseur en VBA et d'appliquer aussi ta solution à mon sujet du jour.

BRAVO L'EQUIPE ET ENCORE MERCI
 

dePOI

XLDnaute Junior
Re : Calcul dans une textbox

re JOB75
J'ai retranscris ton code dans mon convertisseur. PB!!!
j'obtiens le message "Sub ou Function non définie". Il me semble que cela bloque sur l'expression CDb1.
Pourquoi. Cela viendrait-il de ma version EXCEL (2007)?
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu