Problème d'Userform Excel VBA 2003

Flo.

XLDnaute Nouveau
Bonjour,
Cela fait une bonne journée que je me bagarre sur un petit problème que je n'arrive pas à expliquer. J'ai plusieurs userforms, lorsque je clique sur un bouton dans une de ses userforms je lance une procédure de calculs. Une fois cette procédure terminée, j'ouvre une autre userform dans laquelle je veux afficher les résultats. Jusque là il n'y a pas de problème.
Problème n°1 : quand j'utilise l'instruction if dans l'userform résultats, il n'arrive pas à comparer des singles avec virgules et d'autres avec points (au niveau du séparateur de décimales). Pour remédier à cela j'utilise l'instruction Replace pour remplacer la virgule se trouvant dans ma feuille Excel pour que cela puisse être interprété dans VBA. Donc problème partiellement résolu
Problème n°2 : actuellement, lorsque je mets play sur l'Userform qui affiche le résultat, elle arrive à faire l'opération décrite si dessus (changement "," en ".") mais lorsque je l'affiche à partir de l'autre userform, elle fait tout sauf l'opération du Replace (faire tout veut dire dans ce cas, ramener les valeurs de la feuille Excel). Alors je vais voir dans ma feuille excel et le Replace n'a pas été effectué.
Quelqu'un aurait une piste pour résoudre ce problème?
Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : Problème d'Userform Excel VBA 2003

Bonjour,

regarde peut être du code de la conversion de donnée, en l'occurence la fonction "CDbl", exemple ci-dessous ... Après cela va dépendre du type de donnée traité...

Code:
Cells(1, 1).Value = CDbl(TextBox1)

bonne soirée
@+
 

Flo.

XLDnaute Nouveau
Re : Problème d'Userform Excel VBA 2003

Bonsoir,
Tout d'abord merci d'avoir répondu. En ce qui concerne la valeur de ma textbox je la récupère avec Val(textbox.text). Voici deux extraits de mon problème:
Code:
' Changement de page page 1 vers 2
        Calage_p1.Hide
        Calage_p3.Show
' Dans l'initialisation de la page 2
        Worksheets("Récapitulatif_Collisions").Range("B44:D44").Replace What:=",", Replacement:="."
        Calage_p3.Dss = Worksheets("Récapitulatif_Collisions").Range("D44").Value
        Calage_p3.Dsp_adm = Worksheets("Récapitulatif_Collisions").Range("B44").Value
        Calage_p3.Dsp_ech = Worksheets("Récapitulatif_Collisions").Range("C44").Value

Je précise quand même que mon code fonctionne quand je lance juste la deuxième page. J'ai pensé qu'il ne passait pas par Userform_Initialize mais apparemment il le fait, je ne sais plus où chercher...
 

Namzip

XLDnaute Nouveau
Re : Problème d'Userform Excel VBA 2003

Bonjour,

Il y a des jours comme ça. On tombe sur une demande et l'on est prêt à jeter un oeil au cas ou l'on pourrait aider.

Le problème est mal expliqué (mal compris) ou le petit fichier d'exemple est absent. Alors on passe notre chemin.
Ce n'est pas de la suffisance ni de la désinvolture mais aidez-nous à vous aider......

Cdt, Robert
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème d'Userform Excel VBA 2003

Bonjour le fil bonjour le forum,

Comme le disait Robert (l'autre), avec un fichier en pièce jointe c'eut été plus facile. mais j'imagine qu'il sont lourds et ne passent pas et ça t'oblige à faire l'effort d'en créer un, allégé avec la même structure et une poignée de données pour l'exemple. Oui je sais c'est dur...

As-tu essayé la proposition de Pierrot ? :
Code:
' Changement de page page 1 vers 2
        Calage_p1.Hide
        Calage_p3.Show
' Dans l'initialisation de la page 2
       [COLOR=red]With Worksheets("Récapitulatif_Collisions")[/COLOR]
          [COLOR=red]  .[/COLOR]Range("B44:D44").Replace What:=",", Replacement:="."
            Calage_p3.Dss = [COLOR=red]CDbl([/COLOR].Range("D44").Value[COLOR=red])[/COLOR]
            Calage_p3.Dsp_adm = [COLOR=red]CDbl([/COLOR].Range("B44").Value[COLOR=red])[/COLOR]
            Calage_p3.Dsp_ech = [COLOR=red]CDbl([/COLOR].Range("C44").Value[COLOR=red])[/COLOR]
        [COLOR=red]End With[/COLOR]
 

Flo.

XLDnaute Nouveau
Re : Problème d'Userform Excel VBA 2003

Bonjour,
Merci pour vos réponses, j'ai effectivement essayé le conseil qu'il m'a donné mais cela ne change rien.
La problématique est plutôt au niveau de l'appel qu'au niveau du code en lui même car il fonctionne bien si je n'exécute que l'Userform Résultat.
J'ai effectué plusieurs tests différents:
Dans mon code au niveau du changement de page je demande l'activation d'une fonction après avoir affiché la page Résultats
Mettre le code dans l'initialisation de la page Résultats

Aucune des deux solutions n'ont fonctionnées.
Je vais essayer de vous faire un bout de code, avec le problème rencontré, dans la matinée car il est vrai que mon fichier est assez conséquent.
 

Flo.

XLDnaute Nouveau
Re : Problème d'Userform Excel VBA 2003

Rectification.
Lorsque j'ai commencé à faire un fichier synthétique, je me suis rendu compte que je n'avais pas mis la syntaxe CDbl à la place de tous mes Val. En changeant ce paramètre, plus besoin de la fonction Replace car en fait la fonction Val ne reconnait pas la virgule après avoir lu l'aide de VBA. Ce problème est résolut mais n'explique pas pourquoi l'instruction replace que j'utilisais fonctionnait que lorsque je démarrais une page et pas quand je passe d'une page à l'autre.

Merci pour l'aide et surtout merci de m'avoir demandé de faire un fichier synthèse qui m'a permit de trouver ce qui n'allait pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 845
Messages
2 092 768
Membres
105 529
dernier inscrit
StarExcel