problme avec vba

problme avec vba - VB/VBA/VBS - Programmation

Marsh Posté le 09-11-2006 à 13:39:42    

Bonjour,
 
Je souhaite créer une boite de dialogue ou l'utilisateur doit rentrer des valeurs numeriques du type :

Code :
  1. dim E as double
  2. msg1 = " Enter a value for E(in meters):"
  3. E = InputBox(msg1, "Choice of E" )


je voudrais limiter les entrees à des chiffres donc si l'utilisateur rentres des lettres ca doit pas marcher c'est pourquoi j'ai mis dim E as double mais ce programme ne marche pas, savait vous pourquoi?
 
Et, comment limiter le nombre de chiifres significatifs sous vba( par exemple si c'est 2,45635678854 je voudrais garder 2,4564)?
 
Par ailleurs, une boite de dialogue affiche :

Code :
  1. msg4 = " Bonjour. bienvenue dans le programme de résolution d'une equation du second degré . Veulliez suivre les instrutions pour l'utiliser"
  2. MsgBox (msg4)


 
Mais il me l'ecrit sur une seule ligne alors que je voudrais l'avoir sur plusieures lignes? J'ai essayé d'insérer la fonction\n dans le code mais ca ne marche pas.
COment faire?
 
J'aimerais tracer un graphe à partir du vba . connaisez vous des tutorials qui m'expliquent comment je pourrais faire?
 
Merci beaucoup de m'aider.

Reply

Marsh Posté le 09-11-2006 à 13:39:42   

Reply

Marsh Posté le 09-11-2006 à 16:38:18    

Si tu as du code évite son balisage et utilise Fixe
 
Exemple avec 2 TextBoxes sur un UserForm à adapter


Option Explicit
 
Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
Const Point = "."
Const Virgule = ","
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Point) Then
        If InStr(TextBox1, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
     
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
 
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(entrees_entieres_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0
    If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub


 
utiliser vbCrLf  


msg4 = " Bonjour. bienvenue dans le programme de résolution d'une equation du second degré " & vbCrLf & "Veulliez suivre les instrutions pour l'utiliser"


Message édité par kiki29 le 09-11-2006 à 16:57:06
Reply

Marsh Posté le 09-11-2006 à 21:10:50    

merci de m'avoir repondu.
ca marche pour vbcrclf
comment tracer un graphe ac vba a partir dune plage de donnes?
merci

Reply

Marsh Posté le 09-11-2006 à 23:52:55    

Et pour la saisie ça marche ?
 
Sélectionner les colonnes ou les rangées dont tu veux la représentation graphique puis Menu Insertion | Graphique

Reply

Marsh Posté le 10-11-2006 à 01:26:57    

jai pa tres bien compris la saisie 'Exemple avec 2 TextBoxes sur un UserForm à adapter ' et la suite  
c quoi un userform?  
 
la suite  Menu Insertion | Graphique s'effectue a partir dune feuille d'excel mais jarive pas a le faire a partir du vba
je souhaitera lancer le graphique a partir du vba
 
 
 
merci

Reply

Marsh Posté le 10-11-2006 à 01:28:49    

Moi, pour l'histoire de recuperer des valeurs numériques, je procede autrement : je recupere la valeur du TextBox une fois que l'utilisateur a cliqué sur OK et je mets des conditions à l'acceptation, du style :
if not isnumeric(valeur) then msgbox ("erreur" ), j'efface l'entrée du textbox, ensuite goto 1 (si "end sub" a une étiquette "1 end sub" ) pour garder l'userform à l'ecran et lui permettre de recommencer.
De la même façon, en recuperant la valeur, on peut n'en garder que le nombre de décimales que l'on veut.
Ca permet de guider l'utilisateur dans sa saisie.
Mais bon, chacun son truc. :)

Reply

Marsh Posté le 10-11-2006 à 01:43:36    

>> Ken291
Dans environnement VBA Menu Insertion | UserForm
 
>> Colegram & Ken291 : L'avantage de cette méthode de saisie c'est qu'elle interdit de facto une saisie autre que celle définie dans les constantes, de plus elle remplace le point par une virgule et interdit également toute répétition du séparateur décimal et évite les msgbox sans intéret réel pour des erreurs qui dans cette méthode sont de fait impossibles.
 
A la validation on peut tronquer comme l'on veut les saisies sinon il y a la propriété MaxLength
des TextBoxes
 
Graphe : Utilise le Macro Recorder puis optimise à la main le code généré
 
Si tu as une adresse EMail je t'envoie un exemple des 2 TextBoxes


Message édité par kiki29 le 10-11-2006 à 05:21:21
Reply

Marsh Posté le 10-11-2006 à 20:38:43    

ok merci.
autre question :
 peut-on ecrire sur un  graphe contenant une courbe?  je souhaiterais rajouter des valeurs sur laxe ds x et des y (si l'echelle est egale 3 sur sles x et les y alors je veuc  rajouter les nombres suivants : sur laxe des x , x =2,3 et sur y ,y =3,4)?
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed