[Déplacé VB6 --> VBA] créer un programme sous VBA [étudiant]

jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010 - 29 déc. 2009 à 22:04
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 3 janv. 2010 à 22:18
Bonjour, voici mon problème, je dois créer un programme sous VBA Excel, j'ai créer ma base de données, ma userforme avec des combobox, mais je n'arrive pas à créer mon code source pour remplir mes combox en fonction de "l'optionbutton" sélectionné.


C'est pour configurer un ordinateur, j'ai donc créer 4 types de bases (personelle, bureautique, multimedia et game) en "optionbutton" (et une page excel pour les données de chaques types de config), et de là, j'aimerai pourvoir insérer mes données dans mes combobox.



Ensuite il faut que je créer un bouton "facturation/commande" qui lui éditera une facture au client et rangera dans une autre feuille excel les données de cette facture pour moi (le vendeur en somme)




j'ai msn si vous voulez je peux transmettre mon début de programme.




Merci d'avance.

11 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 déc. 2009 à 00:57
Salut
En sélectionnant la ComboBox sur ta Userform et en pressant F1, tu sauras comment remplir une ComboBox.
Pour lister le contenu d'un ensemble de cellules, c'est à dire un Range, il y a ce code que l'on répète au moins 3 fois par semaine :
    Dim maCell As Object
    For Each maCell In Range("A1:B12")
        Debug.Print maCell.Text
    Next

Pour tenir compte de tes option buttons, il te suffit de faire une série de If-Then-Else :
If monOption1.Value = Checked Then
  ' Ici, le coe pour remplir ta ComboBox à partir de la feuille 1
ElseIf monOption2.Value = Checked Then
  ' Ici, le coe pour remplir ta ComboBox à partir de la feuille 2
ElseIf monOption3.Value = Checked Then
  ' Ici, le coe pour remplir ta ComboBox à partir de la feuille 3
ElseIf monOption4.Value = Checked Then
  ' Ici, le coe pour remplir ta ComboBox à partir de la feuille 4
End If

Voilà, tu n'as plus qu'à mettre les pièces du puzzle en place.

Pour tes histoires de facture : question trop vaste.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010
30 déc. 2009 à 08:54
Merci de ton aide Jack. Je me doute que ma question doit faire parties des questions réccurantes sur ce forum, mais j'ai encore 4 semaines pour créer ce programme et je n'y arrive pas.

Puis-je t'envoyer le fichier pour que tu vois comment j'aimerai obtenir mon programme?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 déc. 2009 à 10:23
Non.
Expliquer son problème et le résoudre est la seule finalité de ce forum. Le résultat n'est pas une fin en soi, surtout s'il s'agit d'un programme qui sera évalué pour juger de TES talents de programmeur.

Alors explique sur quoi tu bloques après avoir eu les infos ci-dessus.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010
30 déc. 2009 à 14:13
Je comprend tout à fait le concept de faire soit même pour comprendre.

Donc je m'explique :

j'ai créer un bouton pour lancer ma userform à l'écran.

Ca, ça marche, un simple USERFORM1.SHOW et ça roule.

Là ça se complique.

Je ne sais par où commencer.

dans ma userform j'ai :
4 optionbutton (perso, bureau, multi, gamer)
et 5 champs "combox" pour modifier :
- processeur
- mémoire
- disque dur
- carte graphique
- moniteurs

A chaque optionbutton sa feuille excel avec la config modifiable.


Donc au départ à l'apparition de la userform, je voudrais que le "client" n'ai accès qu'à la parti 'type de configuration' (griser les combobox)
et une fois un combo sélectionné, il accède au combo.
à chaque sélection faite dans un combobox, je voudrais que la tarif se modifie en temps réelle.


une fois que j'aurais créé tout ça je reveindrai vous embéter un peu pour créer ma facture et un fichier client excel.
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 déc. 2009 à 00:19
Ok, c'est plus clair.
Griser les Combo : Je pense (pas le temps d'essayer) que maCombo.Enabled = False devrait suffire.
Sinon, rend la invisible avec .Visible = False

Autre solution :
A chaque Combo, ajoute un item "<Faire un choix>" que tu places en index 0 afin qu'il soit en tête de liste.
Quand tu voudras vider un choix, il te suffira d'afficher cet item 0 (ListIndex) + vider tes TextBox ou Label qui te servent d'affichage de tarif, bien sûr.

Pour retrouver les données dans tes feuilles, deux solutions :
(Choix1)
Soit du VBA pour faire une recherche, comme si tu la faisais à la main
Tu peux y arriver en utilisant l'enregistreur de macro pendant que tu fais une recherche à la main, puis en relisant le code fourni et en remplaçant les valeurs par des variables

(Choix2)
Soit tu considères les zones de données comme une base de donnée, avec une connexion genre ADODB.
Exemples que tu trouveras sur le site en cherchant, par exemple "base de données excel" parmi les sources.
Rappel : Les codes (.frm, .mod, .cls)purement VB6 (et pas VBA) peuvent être lus par un éditeur de texte standard. Dans 80% des cas, les codes VB6 fonctionnent aussi en VBA.

Ensuite, une fois qu'un des Option Boutton a été sélectionné, il te suffit de calculer :
- Le nom de la feuille correspondant au choix de l'Option button actuellement sélectionné : Voir le code avec les If-Then-Else fournis dans ma 1ère réponse)
Tu ranges ce nom dans une variable texte
- La colonne (Choix1) ou le nom de la colonne (Choix2) dans laquelle tu vas pouvoir retrouver la liste des noms des processeurs, par exemple "C" (Choix1) ou "Processeurs" (Choix1), que tu ranges aussi dans une variable.
Ensuite, toujours en fonction de Choix1 ou Choix2, tu exploites ces variables pour élaborer ta recherche : Dans quelle feuille + dans quelle colonne

Tu n'as plus qu'à ranger ces résultats dans ta Combo "Processeur" et faire de même pour chacune des autres Combo "Mémoire", "...

Avant de te lancer dans l'écriture du programme, comprends ce qu'il y a à faire en analysant comment c'est fait dans les sources exemples disponibles sur le site, en faisant des essais simples dans d'autres classeurs, rien que pour essayer.
Aller, tu as du boulot !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010
31 déc. 2009 à 07:58
OK OK, merci bien Jack pour ces infos, je me lance cette après midi dedans.

Car au vu de tes réponses, j'ai du boulo devant moi.

Je crie au secours si ça marche pas.

Bonne journée.
0
jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010
3 janv. 2010 à 12:13
'initialiser la userform
Private Sub UserForm_Initialize()

'si l'optionbutton "PC Personnelle" est selectionné
If Personnelle.Value = Checked Then

'code pour récupérer les données de la feuille "Personnelle"
ComboBox1.RowSource = Sheets("Personnelle").Range("A5:A12").Address
ComboBox2.RowSource = Sheets("Personnelle").Range("A16:A23").Address
ComboBox3.RowSource = Sheets("Personnelle").Range("A27:A30").Address
ComboBox4.RowSource = Sheets("Personnelle").Range("A38:A45").Address
ComboBox5.RowSource = Sheets("Personnelle").Range("A49:A52").Address

ElseIf Bureautique.Value = Checked Then

'code pour récupérer les données de la feuille "Bureautique"
ComboBox1.RowSource = Sheets("Bureautique").Range("A5:A12").Address
ComboBox2.RowSource = Sheets("Bureautique").Range("A16:A23").Address
ComboBox3.RowSource = Sheets("Bureautique").Range("A27:A30").Address
ComboBox4.RowSource = Sheets("Bureautique").Range("A38:A45").Address
ComboBox5.RowSource = Sheets("Bureautique").Range("A49:A52").Address

ElseIf Multimedia.Value = Checked Then

'code pour récupérer les données de la feuille "Multimedia"
ComboBox1.RowSource = Sheets("Multimedia").Range("A5:A12").Address
ComboBox2.RowSource = Sheets("Multimedia").Range("A16:A23").Address
ComboBox3.RowSource = Sheets("Multimedia").Range("A27:A30").Address
ComboBox4.RowSource = Sheets("Multimedia").Range("A38:A45").Address
ComboBox5.RowSource = Sheets("Multimedia").Range("A49:A52").Address

ElseIf Gamer.Value = Checked Then

'code pour récupérer les données de la feuille "Gamer"
ComboBox1.RowSource = Sheets("Gamer").Range("A5:A12").Address
ComboBox2.RowSource = Sheets("Gamer").Range("A16:A23").Address
ComboBox3.RowSource = Sheets("Gamer").Range("A27:A30").Address
ComboBox4.RowSource = Sheets("Gamer").Range("A38:A45").Address
ComboBox5.RowSource = Sheets("Gamer").Range("A49:A52").Address


End If



End Sub




Voici mon Code pour "remplir" mes combobox quand on sélectionne l'option button correspondant.
Mais rien ne se passe, mes combo restent blanche lorsque j'ouvre la userforme et que je selectionne un option button, je pense qu'il doit y avoir un problème d'initialisation, mais je cherche depuis 2 jours et je ne trouve pas, ne voulant pas encore embéter jack là mon cerveau explose et je demande ton aide.

Car mes combo se remplisse bien si je n'utilise pas les "If - Then - ElseIf - EndIf"

Une idée de mon problème?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 janv. 2010 à 15:18
Bonjour,

Il y aurait tant à dire sur ton "approche" que nous préférerons nous en tenir au plus évident et au pluys élémpentaire pour l'instant .
Tu n'écris tout de même pas du code "au feeling" , non ?
Bon ! alors : où as-tu trouvé une valeur ou une constante pour "checked" ?
Nulle part ? Juste au hasard ? ==>> ouvre donc simplement la fenêtre des propriétés d'un optionbuttion ===>> lis-voir les valeurs acceptables pour sa propriété Value ==>> écrit ton code en conséquence (au moins pour celà avantr d'aller au delà ...)
UIlo n'est pas pensable de développer valablement en s'inspirant simplement de ses "élans". Ubn minimum d'attention et de compréhension des choses les plus élémentaires s'impose.

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010
3 janv. 2010 à 21:23
Merci de me rappeler mon bien triste niveau. Et excuse moi de ne pas avoir la logique de programmation. Je ne prétend pas savoir programmer, et c'est bien pour cela que je me permet de poster sur ce forum. Je n'ai effectivement pas le réflexe de l'aide (F1) pour m'aider à résoudre et combler mes lacunes.


Je n'ai que quelques heures de programmation VBA derrière moi, dont la majoritées était de faire pareil que le prof et voir si ça marche.


Je me lance peut étre dans un projet trop complexe mais c'est les attentes de notre professeur. Créer un petit programme permettant de créer un ordinateur ou autre chose, éditer une facture, de la ranger dans un tableau excel par ordre alphabétique et de date,


Je cherche seulement a m'améliorer, comprendre mes erreurs et assimiler la logique de programmation que je n'ai pas.


Pour information, je suis en 1ère année dans une école d'ingénieur matériaux et gestion de production. Je ne suis pas en école d'informatique (et je sais pourquoi maintenant)


Merci de bien vouloir m'aider à progresser, en me conseillant certaine manipulation.


Car même en utilisant l'aide d'Excel, je ne comprend pas toujours ce que je doit faire.


Merci.
0
jcdaussy Messages postés 7 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 3 janvier 2010
3 janv. 2010 à 21:43
Pour Jack

""Ensuite, une fois qu'un des Option Boutton a été sélectionné, il te suffit de calculer :
- Le nom de la feuille correspondant au choix de l'Option button actuellement sélectionné : Voir le code avec les If-Then-Else fournis dans ma 1ère réponse)
Tu ranges ce nom dans une variable texte
- La colonne (Choix1) ou le nom de la colonne (Choix2) dans laquelle tu vas pouvoir retrouver la liste des noms des processeurs, par exemple "C" (Choix1) ou "Processeurs" (Choix1), que tu ranges aussi dans une variable.
Ensuite, toujours en fonction de Choix1 ou Choix2, tu exploites ces variables pour élaborer ta recherche : Dans quelle feuille + dans quelle colonne

Tu n'as plus qu'à ranger ces résultats dans ta Combo "Processeur" et faire de même pour chacune des autres Combo "Mémoire", "...
""


je n'ai pas compris cette partie
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 janv. 2010 à 22:18
Excuse-moi, ami, mais as-tu au moins fait ceci ?
ouvre donc simplement la fenêtre des propriétés d'un optionbuttion ===>> lis-voir les valeurs acceptables pour sa propriété Value

qui ne demande aucune connaissance autre que celle de ton IDE (pas de code), ni même l'utilisation bde ton aide en ligne (dont je déplore malgré tout que tu dises que tu n'as pas le réflexe de l'utiliser. Même les plus avancés d'entre nous l'utilisent constamment !)
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
Rejoignez-nous