Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2329 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problme avec vba

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problme avec vba

n°1472914
ken591
Posté le 09-11-2006 à 13:39:42  profilanswer
 

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.

mood
Publicité
Posté le 09-11-2006 à 13:39:42  profilanswer
 

n°1473101
kiki29
Posté le 09-11-2006 à 16:38:18  profilanswer
 

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
n°1473221
ken591
Posté le 09-11-2006 à 21:10:50  profilanswer
 

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

n°1473271
kiki29
Posté le 09-11-2006 à 23:52:55  profilanswer
 

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

n°1473283
ken591
Posté le 10-11-2006 à 01:26:57  profilanswer
 

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

n°1473284
Colegram
Posté le 10-11-2006 à 01:28:49  profilanswer
 

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. :)

n°1473285
kiki29
Posté le 10-11-2006 à 01:43:36  profilanswer
 

>> 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
n°1473731
ken591
Posté le 10-11-2006 à 20:38:43  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  problme avec vba

 

Sujets relatifs
Problme script Google Adsense sous firefox 
Plus de sujets relatifs à : problme avec vba


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR