Se connecter avec
S'enregistrer | Connectez-vous

Mon entrée dans le monde du VBS

Dernière réponse : dans Programmation

Bonsoir à tous.
Dans le cadre de mes études scolaires, je commence le VBS. M'entrainant chez moi (ca a un petit coté amusant) j'ai vite été confronté à un problème.
En effet, nous avons fait en cours un exemple bidon, sur feuille, et j'ai voulu le recreer sur pc.
Voici l'exemple en question :
  1. dim prenom
  2. prenom = inputbox ( "Saisissez votre prénom je vous prie" )
  3. msgbox ("Bonjour "&prenom)


Rien de plus simple donc.
Jusque là aucun problème, ca marche parfaitement. Mais l'énnoncé stipulait la phrase suivante "Bonjour machin, comment allez vous"
Et là, ca se corse pour moi
  1. dim prenom
  2. prenom = inputbox ( "Saisissez votre prénom je vous prie" )
  3. msgbox ("Bonjour "&prenom " ,comment allez vous?")


Manifestement l'exemple donné en cours était faux. Il doit y avoir une technique pour pouvoir remettre du texte apres ma "variable" (je ne connais pas la désignation exacte), non?
Quelle est elle?

Désolé d'avoir fait un topic pour un sujet aussi simple, mais ne connaissant pas les termes exacts, une recherche google m'était impossible

Merci d'avance à tous :) 

Autres pages sur : entree monde vbs

Lassé par la pub ? Créez un compte
Expert Programmation

1°) Va chercher le sens du mot concaténer dans ton dico :o  C'est un mot nouveau ;) 

2°) Comprends ce que tu fais :

Connais-tu l'opérateur d'addition entre nombre, noté + ?
Oui, bien sûr.
1 + 3 donne un autre nombre : 4. :sol: 
Et si tu veux encore ajouter un nombre, disons 2, tu peux faire
4 + 2. Et tu obtiens.... 6 \:o /
Mais tu aurais aussi pu écrire 1 + 3 + 2. Ca fait encore 6.
Chsuis trop fort en maths moi :sol: 

Pareil pour les chaînes de caractères.
Au lieu d'addition, on ve étudier la concaténation :

"Bonjour " & prenom
\________/ ^ \____/
| | |_______ chaîne de caractères 2
| |___________ opérateur de concaténation
|__________________ chaîne de caractères 1
(Fais comme moi entre mes +, mets des espaces autour de ton signe & )
Le résultat est 1 seule chaîne de caractères, l'une à la suite de l'autre.

Donc pour mettre trois chaînes bout à bout ?

....

Parfait, c'était tout bête, mais je n'avais absolument pas pensé à utiliser le signe plus, pour du texte. Je débute, il faut m'éxcuser :jap: 

Petite question qui en découle :
J'ai recherché sur google les infos relatives à la concaténation, et j'ai cru comprendre que le signe "&" revenait au même que le signe "+". C'est valable dans tous les cas, ai-je compris de travers?
Si c'est effectivement le cas, pourquoi utiliser dans une même ligne une fois "+" et une fois "&" ? (comme ce que tu m'as ammené à faire)
Expert Programmation

:hello:  Freeman


[:nicky95] H3L0

M'enfin, comment fait-il pour pas comprendre ? :pfff: 

L'histoire des +, c'est une analogie pour que tu comprennes :
x = 2
1 + x + 3 = 6

Nom = "H3L0"
Msgbox "Salut " & Nom & ". Comment vas-tu ?"

Comment "il" fait pour pas comprendre?
Bah "il" débute et "il" a du mal, stou

Je concoie que mes interogations soient tres idiotes, mais j'ésperais avoir des explication autrement plus agréables que celles qu'on peut recevoir de la part d'un prof en manque de café. :( 

J'ai posé cette question car j'ai essayé d'une part le "&" et le "+", et il se trouve que mon code marche parfaitement avec un "+" à la place du "&"..........
  1. dim prenom
  2. prenom = inputbox ("Saisissez votre prénom je vous prie")
  3. msgbox ("Bonjour " + prenom +", comment allez vous?")
Expert Programmation

Oups. Le "il" est pas pour mettre de la distance entre nous. Ne le comprends pas comme ça s'il te plaît.

Relis si ça t'amuse tous les messages que j'ai pu pondre sur ce forum. La moitié relève de mon rôle de modérateur (raler à cause de la mise en forme et du non respect du règlement en particulier) et l'autre moitié, c'est "expliquer à des débutants" l'art de programmer en VB.

Je conçois qu'un débutant ne sache pas tout. C'est pourquoi j'essaye d'être dydactique. Et quand je fais une analogie, c'est justement parce que je le comprends et que j'en tiens compte.

Et quand je pose la question "comment fait-il pour pas comprendre ?", la seule bonne réponse est "Parce que zeb n'explique pas assez bien !" [:spamafote]

Il n'y a pas de questions idiotes. Et mes explications sont TRES agréables (enfin, moi je trouve.). Et oui, j'ai été prof et oui, je manque de café. En plus tu as "essayé". Si tu savais le nombre de messages de personnes qui ne s'en donne même pas la peine. Merci.

Mais n'oublie pas que tu es sur un forum ouvert à tous et que tu y poses une question plus ou moins bébête et que déjà deux personnes t'ont apporté de l'aide. Et que cette aide est pertinente. Et si tu n'as pas compris, c'est qu'il faut faire deux efforts : de notre part à nous qui aidons pour être plus clair, de ta part à toi qui demande pour comprendre du premier coup ou à défaut pour ne pas te braquer si la réponse ne te convient pas parfaitement.

Regarde mieux mon type de réponses :
Citation :
1°) Va chercher le sens du mot concaténer dans ton dico :o  C'est un mot nouveau ;) 
Citation :
2°) Comprends ce que tu fais :
Connais-tu l'opérateur d'addition entre nombre, noté + ?
Oui, bien sûr.
1 + 3 donne un autre nombre : 4. :sol: 
Et si tu veux encore ajouter un nombre, disons 2, tu peux faire
4 + 2. Et tu obtiens.... 6 \:o /
Mais tu aurais aussi pu écrire 1 + 3 + 2. Ca fait encore 6.
Chsuis trop fort en maths moi :sol: 


Pareil pour les chaînes de caractères.
Au lieu d'addition, on ve étudier la concaténation :


"Bonjour " & prenom
\________/ ^ \____/
| | |_______ chaîne de caractères 2
| |___________ opérateur de concaténation
|__________________ chaîne de caractères 1

(Fais comme moi entre mes +, mets des espaces autour de ton signe & )
Le résultat est 1 seule chaîne de caractères, l'une à la suite de l'autre.


Citation :
Donc pour mettre trois chaînes bout à bout ?


....



Citation :
:hello:  Freeman

[:nicky95] H3L0
M'enfin, comment fait-il pour pas comprendre ? :pfff: 
Citation :
L'histoire des +, c'est une analogie pour que tu comprennes :
Citation :
x = 2
1 + x + 3 = 6

Nom = "H3L0"
Msgbox "Salut " & Nom & ". Comment vas-tu ?"


Première partie : C'est un forum de libre expression. Je m'y exprime.
Seconde partie : J'explique du mieux que je peux. :/  C'est parfois laborieux.
Troisième partie : En général, Je donne une piste pour trouver une solution par soi-même, parfois, je donne la solution.

Tu vois, je ne suis pas un ogre qui dévore les n00bz.


Bon, par ailleurs, VB est une grosse m***e de langage qui accepte indifféremment & et + comme opérateur de concaténation.:pfff: 


Bon, allez, il est passé 16h, je vais aller prendre une dose de caféïne.

Je ne désirais pas non plus mettre de distance entre nous deux, mais mon sale défaut (ou qualité selon les contexte) et de dire à chaud ce que je "ressens". Vu que je suis assez suceptible, je peux assez vite m'emballer. Mais, je n'étais pas braqué pour autant, ne t'en fais pas. Juste un peu, hmm, comment dire atteint ;) 

Pour le coup, je crois que si je n'avais pas parfaitement compris, c'est à cause de ce que tu soulignes... ce language accepte le & et le + (et du fait que je n'avais pas assez discerné l'analogie de la pratique)

Ceci dit, merci sincerement à vous deux pour votre aide, quant au VB, j'ai plus ou moins conscience du fait que ce language est quelque peu vaseux, mais je ne choisi pas le programme :D 


Et désolé pour la remarque concernant les profs :)  J'ai rien contre eux, juste contre ceux qui sont pas là pour apprendre à leurs petits cons d'élèves ;) )

Edit : J'ai une nouvelle question bête :) 
J'ai, surtout pour m'entrainer, fait un script (c'est le nom d'un .vbs, non?) qui me permet de calculer quelque chose en fonction de paramètres.
Il se trouve que le resultat est souvent à virgule, ce qui dans le cas présent ne m'est pas utile, bien au contraire.
J'ai donc recherché la fonction servant à arrondir un résultat, et j'ai trouvé "fix" et "int". Seulement, ca arrondi trop court, si je puis dire celà ainsi.
Je cherche à specifier à la fonction à combien elle doit arrondir (à 2 dixième pres par exemple).
  1. nbm = y/x/4/nbp
  2. nbm = fix(nbm)


Pourriez vous m'indiquer comment proceder?

Fix et Int ne sont pas des fonctions d'arrondi au sens mathémathique.
Elles suppriment juste la partie décimale d'un nombre (chacune d'une manière différente pour les nombres négatifs).
Un petit lien : http://ns7.webmasters.com/caspdoc/html/vbscript_fix_int...

Il faut utiliser la fonction Round() pour arriver à tes fins.
Elle accepte deux paramètres : le premier est ton nombre, le second est le nombre de chiffres décimaux que tu veux garder pour arrondir.

exemple de la msdn :
  1. Dim MyVar, pi
  2. pi = 3.14159
  3. MyVar = Round(pi, 2) ' MyVar contains 3.14.

tegu a dit :
Fix et Int ne sont pas des fonctions d'arrondi au sens mathémathique.
Elles suppriment juste la partie décimale d'un nombre (chacune d'une manière différente pour les nombres négatifs).
Un petit lien : http://ns7.webmasters.com/caspdoc/html/vbscript_fix_int...

Il faut utiliser la fonction Round() pour arriver à tes fins.
Elle accepte deux paramètres : le premier est ton nombre, le second est le nombre de chiffres décimaux que tu veux garder pour arrondir.

exemple de la msdn :
  1. Dim MyVar, pi
  2. pi = 3.14159
  3. MyVar = Round(pi, 2) ' MyVar contains 3.14.

+1

Il faut différencier une fonction mathématique (donc traitant la donnée numérique) et la fonction logique (qui peut traiter une chaine de caractères).
Le fix tronque le nombre de données après un symbole séparateur, son but n'est pas d'arrondir. Dans le cas présent prenons une donnée:
pi = 3.14159
En tronquant sur 4 après la virgule, on obtient donc 3.1415.
le round lui, arrondit, c'est à dire qu'il analyse les données tronquées pour augmenter, ou diminuer le cas échéant la valeur
Dans notre cas un round(pi,4) donnera 3.1416 puisque la valeur originelle est pi = 3.14159

Attention: le "int" peut être interprété différemment selon les langages. Typiquement il sert à une opération logique, c'est à dire à typer une donnée.
Comme on le sait, chaque langage type les données de manière à pouvoir traiter proprement les infos. Vb et le vba est traitre parce qu'il permet de faire des choses "inhabituelles" comme coller directement une chaine dans un numérique. Simplifions énormément le problème avec trois définitions:
string : ok pas de souci c'est une chaine.
int : c'est un entier
double: c'est avec décimale

Si on fout du double dans du int... couac ça coince puisque les données après la virgule ne seront plus présentes. Ce n'est donc pas un arrondi, mais une méthode barbare que certains utilisent pour ne pas faire de l'arrondi.
NOTA: selons les langages c'est au mieux faisable et fiable, au pire strictement interdit sans conversion explicite!

Revenons sur le traitement des caractères:
Les opérations sur les chaines sont nombreuses et plus ou moins utilisées. Il y a une terminologie usuelle comme tronquer, concaténer, segmenter.
Tronquer: couper un morceau. Par exemple prendre les trois derniers caractères du mot "Machiavelique" pour obtenir "que"
  1. Dim V1 As string
  2. Dim Sortie As String
  3. V1 = "Machiavelique"
  4. Sortie = right$(V1, 3)

Concaténer: c'est assembler des chaines les unes aux autres. Par exemple construire une chaine faite de "toto", "tit", et "tati" ce qui donne:
  1. Dim V1 as string
  2. Dim V2 As String
  3. Dim V3 As String
  4. Dim Sortie As String
  5. V1 = "toto"
  6. V2 = "tit"
  7. V3 = "tati"
  8. Sortie = V1 & V2 & V3

segmenter:
Là c'est prendre un bout de chaine en plein milieu d'une autre. Typiquement, tu as un code bizarre enregistré (disons un matricule) dans lequel sur les caractères 3 et 4 tu as un code pays que tu veux analyser.
Tu fais alors
  1. dim strMatricule As String
  2. dim Sortie As String
  3. strMatricule = "123456789012"
  4. Sortie = mid$(strMatricule, 3,2)


Tu as plein d'autres analyses possibles:
- Retrouver si un caractère ou une chaine est présent dans une autre chaine (fonction INSTR)
- Définir la longueur de caractère (fonction len)
...
Lassé par la pub ? Créez un compte