VBA et VB6

seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008 - 16 nov. 2008 à 12:41
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 25 nov. 2008 à 22:18
Bonjour, j'ai appris quelques bases en VBA et j'arrive à créer quelques macros assez simples sur excel 2000. Mais j'aimerais pouvoir créer un programme indépendant d'excel, si je ne me trompe pas il faut programmer en vb6. Est - ce que ce language est (très) différent de vba et il doit surement falloir un logiciel pour programmer en vb6, lequel ?

Merci

14 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 nov. 2008 à 13:09
salut,

le VB6 est très proche du VBA en effet.
pour programmer en VB6, il faut MS Visual Basic ou MS Visual Studio 6.0, qui n'est malheureusement plus en vente "neuf"

il faut donc chiner les occasions sur la toile, ou passer à une version plus récente comme Visual Studio Express 2008 (VB.NET 2008) qui lui est gratuit, mais dont la syntaxe s'éloigne tout de même en VBA


Q : [../doc/faq.aspx#vb_lastide Où trouver la dernière version gratuite de l'IDE (Integrated Development Environment) pour développer en Visual Basic]








NB
: en VB6 ou VB.NET, l'exe sera autonome après avoir fait un package (setup).
néanmoins si le but est la manipulation de classeur, excel devra tout de même être installé sur le/les postes client.
on ne peut donc pas vraiment parler de "

programme indépendant d'excel

"

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 nov. 2008 à 13:17
VBA est une version modifiée et adaptée de VB6 pour les applications MSOffice.
VBA et VB6 sont très proche (le code version de VBA étant VB6.3).

Pour programmer en VB6 il faut effectivement un programme qui s'appelle VB6 qui fait partie du pack Visual Studio 6.

Malheureusement, ce pack n'est plus vendu depuis 2003. Tu peux encore le trouver avec beaucoup de chance, d'occasion, mais ça devient extrement rare (ceux qui l'ont le gardent jalousement)

Désormais il est remplacer par les versions .Net (VB.Net 2003 au départ, VB2005 ensuite et maintenant VB2008)
Si la syntaxe reste du basic, le langage a énormément changé, il est à considéré plus comme un nouveau langage que une évolution de VB6). Il te faudra un certain temps d'adaptation.

Avantage, tu eux trouver à télécharger sur le site de Microsoft, les versions Express (VB2008 Express) qui sont gratuite. Elles sont un peu limitée par rapport aux version completes. Mais ces limitations ne concernent que des points vraiment particulier et ne te concernera probablement pas dans 99.99% des projets que tu pourra faire au début.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
16 nov. 2008 à 14:18
Merci beaucoup pour vos deux réponses.

J'avais déjà télécharger auparavant Visual Studio 2008 et j'avais remarquer des différences de syntaxe mais bon je pense que j'arriverai à me débrouiller même si ça me prend un peu de temps, ce n'est pas très grave ... Sauriez vous par hasard où je peux trouver les différences des languages ?
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
20 nov. 2008 à 20:09
Alors j'ai commencé un petit programme sur visual studio 2008 (en version express).
Le principe est simple: il y a un useform que la personne doit remplir (tout le tps avec des listbox) et après elle appuie sur un boutton et peut voir les résultats dans une msgbox.

En fait les calculs sont déjà fait avant, pour chaque cas possible. Je voulais donc faire un code avec du " if " .. " and " ... "then" ...
Après le then je pensais mettre p = " (une valeur numérique calculée au préalable) "
Ainsi dans la msgbox je tappe mon texte et laisse des blancs en indiquant qu'il doit mettre la valeur de p. Je sais pas si j'explique très bien alors je vais donner un exemple : MsgBox ( " ......... vous avez " & p & " % de chances .......")   si c'est toujours pas clair j'essaierai de réexpliquer.
Le seul problème c'est qu'apparament ce type de syntaxe n'est pas possible sur visual studio, alors qu'il marchait très bien sur excel ... il doit bien y avoir une correspondance. Quelqu'un peut m'aider ??

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 nov. 2008 à 04:32
tu parles bien de formatage au final, pas de saisie?...




        Dim p As Int32 = 51
        MessageBox.Show(String.Format(" ......... vous avez {0} % de chances .......", p))

<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
Coloration syntaxique vb/vba/vb.net






NB : dans les références de ton projet, décoche "microsoft.visualbasic" pour t'éviter de suite de prendre de mauvaises habitudes de codage (interdira les anciennes syntaxes VB6/VBA...)

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
21 nov. 2008 à 19:07
euh comment ça de formatage ? nan c'est de la saisie : j'ai un petit texte où il y a des "trous" qui doivent être remplis par certaines valeurs (par exemple p) qui dépendent des réponses de la personne sur le questionnaire.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 nov. 2008 à 19:16
d'accord...
donc "des trous", tu dois faire ton propre formulaire (form) et gérer dynamiquement le texte et des zones de saisies (textbox)

par contre je ne vois pas trop le problème, çà doit être très similaire à tes userform vba

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
21 nov. 2008 à 19:34
le problème ce n'est pas le useform mais le code qui est créé à côté.

Bon le plus simple je pense pour expliquer c'est de mettre le code :

Public

Class Form1

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.ClickMsgBox(

"Vous avez :"
+ Chr(10) _+

"- " & p2 &
" % d'avoir un fils daltonien" + Chr(10) _+

"- " & p1 &
" % d'avoir une fille daltonienne.", MsgBoxStyle.ApplicationModal,
"R‚sultats")

End
Sub

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

   If ListBox1 =
"Oui"
And ListBox2 =
"Homme"Then      p1 "2,2"      p2

"2,2"

   Else ListBox1 =
"Non"
And ListBox2 =
"Homme"Then      p1 "0"      p2

"2,2"

   Else listbox1 =
"Oui"
And Listbox2 =
"Femme"Then      p1 "4"         p2

"4"

End
If

End
SubEnd

Class

Biensur je n'ai pas fini de tapper le code, voyant qu'il y avait une problème de syntaxe lié à p1 et p2 ...
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
21 nov. 2008 à 19:38
oulala je viens de voir que ça déforme totalement mon texte !! ça va peut-être être difficile à comprendre ...

aussi j'avais oublié de demander, est - ce que il faut bien mettre: "   listbox1 = "Oui"   "  par exemple lorsque je veux dire que la personne a choisi oui dans la liste des choix de la listbox1  ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 nov. 2008 à 20:13
tu as lu le passage où je disais de décocher?
apparemment non

ensuite où sont déclarées p1 et p2 ?
et de quels types?

et je ne vois pas dans ton exemple où "tes trous" sont à saisir....

tu affiches bien un résultat contenant des variables....

MessageBox.Show(String.Format("Vous avez :{0}- {1}% d'avoir un fils daltonien{2}- {3}% d'avoir une fille daltonienne.", environment.vbnewline, p2, environment.vbnewline, p1), MsgBoxStyle.ApplicationModal, "Résultats")


<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
21 nov. 2008 à 20:28
Ah oui je n'avais pas vu le N.B. ... merci du conseil ;)

en fait les "trous" c'est là où je met p1 et p2 ... en effet la syntaxe est vraiment différente ... je crois que je vais d'abord le faire sur excel comme je suis un peu pressé par le temps et puis après j'essaierai de le faire sur visual studio si j'ai le temps et puis ce sera plus facil pour qu'on puisse me donner des conseils si j'ai déjà le code fini en vba ...
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
25 nov. 2008 à 21:24
Alors voilà j'ai fini le programme sur excel (voir code ci-dessous).

J'ai quelques questions :
- j'utilise un userform avec des listbox, pour récupérer les valeurs choisies, est - ce qu'on est obligé de renvoyer la valeure vers une cellule du document excel ou on peut la prendre directement ?? (n'ayant pas la réponse et sachant comment faire en utilisant le renvoie de la valeure dans une cellule du fichier excel j'ai fait comme ça)
- est-ce normal que, pour que la valeur choisie dans la listbox soit prise en compte on soit obligé de cliquer dessus (elle est alors grisée)

Mon but reste tout de même de retranscrire ce code sur visual studio  donc si vous pouviez m'aider pour me donner quelques correspondances entre les deux syntaxes ce serait très gentils (surtout que je suis un peu limité en temps ...)

Dernière chose, pour les personnes qui voudraient bien m'aider, j'ai fait une vidéo du programme (avec le userform et tout ...) qui peut permettre de mieux se rendre compte du résultat.

Code :

Pour le userform1 :

Private Sub CommandButton1_Click()               [bouton "Voir les résultats"]


Dim p1 As Single
Dim p2 As Single
Dim q As Single


    If Range("Données!C1").Formula "Oui" And Range("Données!C2").Formula "Homme" Then
            p1 = "2,2"
            p2 = "2,2"
                ElseIf Range("Données!C1").Formula "Non" And Range("Données!C2").Formula "Homme" Then
            p1 = "0"
            p2 = "2,2"
        ElseIf Range("Données!C1").Formula "Oui" And Range("Données!C2").Formula "Femme" Then
            p1 = "4"
            p2 = "4"
                 ElseIf Range("Données!C1").Formula "Non" And Range("Données!C2").Formula "Femme" And Range("Données!C3").Formula = "Oui" Then
            p1 = "2"
            p2 = "25"
        ElseIf Range("Données!C1").Formula "Non" And Range("Données!C2").Formula "Femme" And Range("Données!C4").Formula = "Oui" Then
            p1 = "2"
            p2 = "25"
                ElseIf Range("Données!C1").Formula "Non" And Range("Données!C2").Formula "Femme" And Range("Données!C3").Formula = "Non" And Range("Données!C4").Formula = "Non" Then
            p1 = "222"
            p2 = "111"
        ElseIf Range("Données!C1").Formula "Non" And Range("Données!C2").Formula "Femme" And Range("Données!C3").Formula = "Je ne sais pas" Then
            p1 = "2222"
            p2 = "1111"
        ElseIf Range("Données!C1").Formula "Non" And Range("Données!C2").Formula "Femme" And Range("Données!C4").Formula = "Je ne sais pas" Then
            p1 = "22222"
            p2 = "11111"
    
    Else
            p1 = "0"
            p2 = "0"
           
End If


q = p1 + p2


UserForm1.Hide


       
MsgBox "Vous avez " & q & " % de chances d'avoir un enfant daltonien:" + Chr(10) _
        + "- " & p2 & " % d'avoir un fils daltonien" + Chr(10) _
        + "- " & p1 & " % d'avoir une fille daltonienne.", , "Résultats"


UserForm2.Show


End Sub






Private Sub CommandButton2_Click()                             [bouton annuler]
Range("Données!C1:C4").Delete
UserForm1.Hide
End Sub

Pour le userform2 :

Private Sub CommandButton1_Click()                    [bouton "oui j'ai fini"]


Range("Données!C1:C4").Delete


UserForm2.Hide


MsgBox "Merci d'avoir utiliser notre logiciel" + Chr(10) _
        + Chr(10) _
        + "Présenté par:" + Chr(10) _
        + "     - Sébastien D*****" + Chr(10) _
        + "     - Hadrien C*******" + Chr(10) _
        + "     - François S****" + Chr(10) _
        + "dans le cadre de l'épreuve du TPE de 1ère", , "Programme - Daltonisme"




End Sub


Private Sub CommandButton2_Click()                        [bouton "non je souhaite recommencer"]
Range("Données!C1:C4").Delete
UserForm2.Hide
UserForm1.Show
End Sub

Merci de votre aide
0
seb3009 Messages postés 18 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 23 décembre 2008
25 nov. 2008 à 21:27
Ah oui au fait je viens de voir, les trois dernier elseif, où les valeurs de p1 et p2 sont quelques choses comme 1111 ou 222, c'est juste parce que je n'ai pas encore calculer bonnes valeurs... et puis le else ne sert à rien normalement, enfin en tout cas il ne doit pas y avoir de valeurs pour p1 et p2, mais j'ai fait ça juste pour savoir lorsqu'il y avait un problème quand je testais le programme.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2008 à 22:18
salut,

ne passe pas par la feuille excel tu vas t'emmêler encore plus les pinceaux

une listbox "fonctionnerait". c'est grisé non pas parce que c'est bloqué.... mais parce que la listbox avec la ligne sélectionnée (bleu) perd le focus...

soit tu utilises des COMBO pour lire la valeur choisie qui sera dans .Text, soit il faut d'abord que tu ailles lire l'index du .Selected, puis le .List(index_trouvé)

ps : simplifie-toi la lecture avec tes 50 if.....

si homme => batterie de tests
sinon si femme => autre batterie
...

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
Rejoignez-nous