[VBA] Ranger des données a la suite

Ranger des données a la suite [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 11-11-2006 à 13:35:42    

Bonjour,
 
 
Je suis débutant en VBA et je souhaite faire un programme de facturation (études)
Pour cela, j'ai crée un formulaire dans lequel on choisit un article, son tarif, le nombre et tout ceci doit se ranger dans une feuille excel automatiquement.
Bon ma procédure fonctionne pour la 1ere ligne, mais lorsque je clique sur le bouton "autre article" j'aimerais que ce que selectionne la cassiére maintenant se rajoute à une autre ligne (Or la ca m'efface la premiére)
 
Je vous copie mon script dont je me suis servis pr le boutton "Autre article":
 
Private Sub CommandButton1_Click()
 
ActiveSheet.Cells(3, 1) = ZLM_DON
 
End Sub
 
D'autre part, lorsque la caissiére choisit un article (selon catégorie sociale le prix est différent), dans mon formulaire s'affiche qu'un seul paramétre sur les deux (ceci n'est pas génant) mais dans ma feuille excel, aucune différenciation est faite entre le prix et la catégorie ( j'ai deux fois la catégorie ou le prix qui s'affiche dans excel mais jamais l'un et l'autre)
 
J'utilise ça comme formule pr ça:
 
Private Sub ComboBox2_Change()
ActiveSheet.Cells(3, 3) = ComboBox2
ActiveSheet.Cells(3, 2) = ComboBox2
End Sub
 
donc je comprend que j'ai deux fois pareil vu que dans ComboBox2 j'ai qu'un seul paramétre qui s'affiche.
Comment régler ce probléme s'il vous plait ?
 
 
En vous remerciant d'avance parce que la je suis vraiment desespéré
 
Merci beaucoup.

Reply

Marsh Posté le 11-11-2006 à 13:35:42   

Reply

Marsh Posté le 11-11-2006 à 14:25:45    

Salut beuch13,
 
Pour ta première question, tu dois un peu "étoffer" ton code.
En réfléchissant un peu, tu devrais trouver la solution : ton programme ne sait pas ce que tu penses !
 
Ca a l'air idiot écrit comme ça, mais ce n'est que la triste réalité ! Comment ton programme sait-il que tu veux aller à la ligne libre suivante ?
Tu dois le lui expliquer. Et pour ce faire, il existe de nombreuses possibilité :
- soit tu recherches systématiquement la première ligne libre à la suite de celles déjà complétées,
- soit, si tu effectues des séries continues d'enregistrements (tu encodes 20 articles à la suite les uns des autres, par exemples) alors, quand tu arrives dans la feuille, tu rechecher le numéro de la dernière ligne utilisée et tu mémorise ce numéro de ligne dans une variable. Il te reste à incrémenter d'une unité à chaque enregistrement pour progresser dans ta feuille (MaVar = MaVar + 1)
 
Ca marche aussi si tu travailles sur des colonnes.
 

Reply

Marsh Posté le 11-11-2006 à 14:34:43    

Salut beuch13,
 
Pour ta seconde question, c'est ton code qui provoque cette erreur.  
 
Private Sub ComboBox2_Change()
ActiveSheet.Cells(3, 3) = ComboBox2
ActiveSheet.Cells(3, 2) = ComboBox2
End Sub  
 
Tu demandes à ton programme, à chaque changement effectué dans ton combobox de compléter les cellules 3,3 et 3,2 avec le contenu du combobox ==> tu recopies deux fois le contenu du combobox.
 
Si dans ton formulaire, tu affiches, dans une liste déroulante, la liste des articles et que tu présentes un groupe de boutons de choix (case à cocher ou bouton option) correspondant à chaque catégorie possible (catégories dont l'affichage peut être modulé en fonction de l'article chois : un tel article peut être facturé selon les catégories 1, 2 et 3 tandis que l'article un tel autre pourra être facturé selon les catégories 2 ou 3. Pour réaliser cela, il suffit de masque le bouton option indésirable (Bouton.visible=false)).
Lorsque la caissière a choisi l'article puis la catégorie, tu peux forcer le calcul à partir du contenu des différences cellules de ta feuille et même faire afficher le prix dans une zone texte, un "label" (= une étiquette).
 
Puisque tu veux apprendre VBA, je ne vais pas te donner icic les codes tous faits ;-)). Cherche un peu, c'est comme ça qu'on apprend !
 
Mais on ne t'abandonne pas pour autant. Fais-nous part de tes investigations et on continuera à te guider.
 
A+

Reply

Marsh Posté le 11-11-2006 à 16:42:13    

Tout d'abord je tenais a te remercier pour tes réponses bien expliquées, et d'avoir pris du temps pour me répondre aussi soigneusement.
 
J'avais déja essayé une incrémentation pour ma 1ere question, mais je n'arrive surement pas bien a le faire vu que ca me signalé une erreur (surlignée en jaune par la suite)
 
j'initialise i=1
et aprés ActiveSheet.Cells(3, 1 + i) = ZLM_DON  
 
Je bloque vraiment.
J'aurais bien tenté un while aussi mais je n'ai pas la présence d'esprit pr savoir quoi y mettre dedans.
 
Pour la recherche, sincérement je ne sais pas comment faire.
 
Le probléme c'est que le peu de VBA que j'ai fait, n'était jamais sous userform, et bien que l'on me dira que c'est significativement la méme chose, je suis totalement perdu, et méme avec ton aide je n'avance pas le moins du monde. De plus, mes connaissances sont trés limitées (deux cours ou j'ai appris à quoi servait VBA et à faire un petit programme de saisie de notes)
(p.s: je ne suis pas en informatique, ni méme en etudes de programmation, mais seulement de gestion, ceci explique surement cela  :D )


Message édité par beuch13 le 11-11-2006 à 16:43:20
Reply

Sujets relatifs:

Leave a Replay

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