Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

report calcul dans userform

  • Initiateur de la discussion Initiateur de la discussion olivierd
  • Date de début Date de début

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 !

O

olivierd

Guest
bonjour cher(e ) lecteur (rice ),

j'utilise une boite de dialogue pour reporter des données dans ma feuille Excel
et il m'arrive de saisir des données de type =100-10
et l'information reportée reste =100-10
au lieu du "90" attendu

Pourriez-vous me dire pourquoi et comment y remédier ( si c'est votre jour de bonté, of course )

cordialement
 
re-bonjour,
J'ai une erreur de compil avec le code, j'ai du mal comprendre...
( nota, j'ai vérifié dans le dico VBA Mac qui gère Replace et Exit Sub )

Voila ce que j'ai recopié:

'permet la saisie d'une formule dans le champ SalaireSDTC
.Range("F63").FormulaR1C1 = SalaireSDTC
On Error GoTo Gere_Erreurs
.Range("F63").Value = .Range("F63").Value
On Error GoTo 0

Exit Sub
'Gère le remplacement d'une virgule par un point dans le champ SalaireSDTC
Gere_Erreurs:
usfSaisie.SalaireSDTC = Replace(usfSaisie.SalaireSDTC, ",", ".")
MsgBox "Erreur numéro " & err & " interceptée !" & Chr$(10) & "Type d'erreur : " & Error(err) & Chr$(10) & "Correction de formule pour les virgules", vbOKOnly + vbInformation, Title:="Erreur détectée"
End Sub


Cordialement

A+
 
Re Bonjour Olivier

tu peux remplacer replace par

Dim Chaine As String, Compteur As Integer
Chaine = UserForm1.TextBox1
Do
Compteur = InStr(1, Chaine, ",", 1)
If Compteur > 0 Then Chaine = Left(Chaine, Compteur - 1) & "." & Right(Chaine, Len(Chaine) - Compteur)
Loop Until Compteur = 0
UserForm1.TextBox1 = Chaine

c'est un peu plus lent, mais le fonctionnement est identique et cela devrait être compatible, ces instructions existant déja sous excel97.

A+
 
re-bonjour,
<voix de desespéré>
Le fichier de test ne fonctionne pas sous Mac et parfaitement sous Windows 🙂

J'ai remplacé sans succès:

Exit Sub
'Gère le remplacement d'une virgule par un point dans le champ SalaireSDTC
Gere_Erreurs:
usfSaisie.SalaireSDTC = Replace(usfSaisie.SalaireSDTC, ",", ".")
MsgBox "Erreur numéro " & err & " interceptée !" & Chr$(10) & "Type d'erreur : " & Error(err) & Chr$(10) & "Correction de formule pour les virgules", vbOKOnly + vbInformation, Title:="Erreur détectée"
End Sub

par:

Exit Sub
'Gère le remplacement d'une virgule par un point dans le champ SalaireSDTC
Gere_Erreurs:
Dim Chaine As String, Compteur As Integer
Chaine = usfSaisie.usfSaisie.SalaireSDTC
Do
Compteur = InStr(1, Chaine, ",", 1)
If Compteur > 0 Then Chaine = Left(Chaine, Compteur - 1) & "." & Right(Chaine, Len(Chaine) - Compteur)
Loop Until Compteur = 0
usfSaisie.usfSaisie.SalaireSDTC = Chaine
End Sub
 
re,

yeeepi: plus d'erreur dans le fichier test !

donc je maintiens ( avec des points sur les i ? ):

Exit Sub
'Gère le remplacement d'une virgule par un point dans le champ SalaireSDTC
Gere_Erreurs:
Dim Chaine As String, Compteur As Integer
Chaine = usfSaisie.usfSaisie.SalaireSDTC
Do
Compteur = InStr(1, Chaine, ",", 1)
If Compteur > 0 Then Chaine = Left(Chaine, Compteur - 1) & "." & Right(Chaine, Len(Chaine) - Compteur)
Loop Until Compteur = 0
usfSaisie.usfSaisie.SalaireSDTC = Chaine
End Sub

cordialement

A+
 
bonsoir,
Désolé... mais je ne m'en sort pas même avec l'exemple.
Je pense avoir calqué ta méthode en renommant mon userform et mon textbox
mais dès que je tente de saisie qqchose dans le textbox, j'ai une alerte ( bibliotheque introuvable... )

Dans le fichier test: tu utilises un code dans l'instruction du bouton de validation "CommandButton1_Click()"
et un autre pour "TextBox1_Change(); c'est peut-être ce dernier point qui ne s'adapte pas à mon Userform ( qui contient de multiples champs ) ?

Désolé d'être aussi nul

cordialement
 
Re Olivier

pour que cela fonctionne dans ton fichier:

dans ta dernière procédure, tu as écrit plusieurs fois
usfSaisie.usfSaisie.SalaireSDTC
il faut écrire en fait
usfSaisie.SalaireSDTC
quand tu mets deux fois usfsaisie (usfSaisie.usfSaisie), cela provoque une erreur car l'objet usfsaisie ne posséde pas d'objet lié usfsaisie mais un objet SalaireSDTC

la procédure CommandButton1_Click du fichier test équivaut à btnValidation_Click dans ton fichier

la procédure TextBox1_Change du fichier test équivaut à SalaireSDTC_Change dans ton fichier

ce sont des procédures événementielles qui doivent être stockées dans le code du userform et qui doivent porter le nom de l'objet.
dans le code du userform tu as en haut deux combobox qui te permettent de voir et créer les procédures événementielles possibles

pour ton problème de compatibilité il vient du fait que sous mac, il faut préciser un peu plus, cela me rappelle d'anciennes versions.
autrement dit
Chaine = usfSaisie.SalaireSDTC
ne passe pas alors que
Chaine = usfSaisie.SalaireSDTC.value
passe sans problème d'oû les points sur les I
maintenant qu'on a trouvé le problème, tu peux re essayer le replace sous la forme
usfSaisie.SalaireSDTC.Value = Replace(usfSaisie.SalaireSDTC.Value, ",", ".")
peut être qu'il passera.

si tu ne t'en sort pas, mets le code intégral du bouton.

A+
 
bonjour Yeahou, le forum,

merci pour tes explications
je pense ne plus avoir de doublons et j'ai re-essayé sans succès usfSaisie.SalaireSDTC.Value = Replace(usfSaisie.SalaireSDTC.Value, ",", ".") ( :blocage sur "replace"...

Je te soumet le code utilisé en pièce jointe ( sur lequel j'essaie d'intervenir ponctuellement et qui doit être une " usine à gaz à tes yeux... )

Cordialement

Olivierd
 

Pièces jointes

Bonjour olivier

ci joint le code modifié selon le principe du fichier test et qui devrait fonctionner sous mac.
1-les virgules sont remplacées par des points en live lors de la saisie
2-si il y a au final une erreur de formule (formule non valide), on prévient l'utilisateur et lui redonne la main pour corriger.

Bon Week end
 

Pièces jointes

bonjour,
(je hais les mac)
malheureusement, en ayant copié, collé le code, je bloque (semble-t-il) sur Chr du MsgBox puis sur Private Sub SalaireSDTC_Change()
avec ou sans saisie sur le texbox...
Cordialement
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…