enregistrement VBA et formation de catégories

enregistrement VBA et formation de catégories - VB/VBA/VBS - Programmation

Marsh Posté le 02-04-2013 à 17:41:00    

salut à tous !  :)  
 
j'ai deux petits souci avec VBA donc merci d'avance à ceux qui sauront y répondre  :)  
 
1) Je n'arrive pas à coder l'enregistrement d'un classeur excel. Je m'explique. Jai un IHM (nom : userforme) dans laquelle il y a une zone de texte (TbxTexte), un bouton enregistrer (BtnEnregistrer) et la date du jour (Label1). J'aimerais que quand je clique sur le bouton "enregistrer" le dossier excel s'enregistre avec le texte écrit dans TbxTexte et la date. J'ai bien essayé la fonction ThisWorkBook.path mais cela ne marche pas malgré les nombreux codage utilisés. Auriez vous une/des idées ?
 
2) Mon dossier excel comporte une liste de courses dans laquelle se trouve plusieurs catégories (viandes, produits ménagés...) et j'aimerais pouvoir faire apparaitre les produits appartenant à ces catégories. Au départ j'ai opté pour un bouton mais sans grand succés... Comment faire apparaitre/disparaitre les produits quand la catégorie est (ou non) sélectionnée ?
 
merci d'avance à ceux qui pourront m'aider et à bientot  :hello:

Reply

Marsh Posté le 02-04-2013 à 17:41:00   

Reply

Marsh Posté le 03-04-2013 à 14:26:25    

Bonjour,
 
1) Pour enregistrer, tu peux faire comme ça :

Code :
  1. Private Sub Enregistrer_Click()
  2. Dim NomFichier As String
  3. NomFichier = TbxTexte & "_" & Format(Now(), "YYYYMMDD" )
  4. ActiveWorkbook.SaveAs "C:\User\dossier\" & NomFichier, FileFormat:= _
  5.                           xlOpenXMLWorkbook, CreateBackup:=False
  6. End Sub


Ca te l'enregistrera en xlsx. Si tu le veux en xlsxm, remplace xlOpenXMLWorkbook par xlOpenXMLWorkbookMacroEnabled.
 
2) Il faut que tu te serves de l’événement change de la liste où sont les catégories :

Code :
  1. Private Sub Catégories_Change()
  2. MsgBox Catégories.Value
  3. End Sub


Dans cet événement, tu testes pour savoir quel élément est sélectionné (catégorie.value) et tu alimentes tes produits en fonction de ça.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 03-04-2013 à 20:28:30    

bonjour,
 
merci beaucoup je vais dès que possible essayé le code d'enregistrement mais est il possible d'utiliser la fonction .path pour simplifier l'écriture comme cela ?
Code :
Private Sub Enregistrer_Click()
Dim NomFichier As String
NomFichier = TbxTexte & "_" & Format(Now(), "YYYYMMDD" )
ActiveWorkbook.Save = thisWorkbook.path
End Sub
 
pour le second code, je ne comprend pas pourquoi tu utilises une MsgBox ? car j'aimerais faire comme un masque.  
exemple de catégories visibles:
viande
légumes
fruits

 
si click sur viande alors
viande
-boeuf
-poulet
-canard
légumes
fruits

 
merci encore de ton aide je commence à y voir un peu plus clair déjà (surtout pour l'enregistrement)
 
a bientot

Reply

Marsh Posté le 04-04-2013 à 07:17:57    

Oui tu peux l'utiliser pour connaitre le chemin de où enregistrer :

Code :
  1. Private Sub Enregistrer_Click()
  2. Dim NomFichier As String
  3. Dim Chemin as string
  4. NomFichier = TbxTexte & "_" & Format(Now(), "YYYYMMDD" )
  5. Chemin = thisWorkbook.path
  6. ActiveWorkbook.SaveAs Chemin & "\" & NomFichier, FileFormat:= _
  7.                           xlOpenXMLWorkbook, CreateBackup:=False
  8. End Sub


 
Pour la deuxième partie de la question, j'ai mis un msgbox histoire de mettre quelque-chose ne sachant pas ce que tu voulais alimenter avec les produits d'une catégorie.
En admettant que tu aies une listbox "Produits", tu pourrais faire ça par exemple :
 

Code :
  1. Private Sub Catégories_Change()
  2. Produits.clear 'tu vides la listbox Produits
  3. 'Ensuite tu l'alimentes en fonction de la catégorie
  4. if Catégories.Value = "viande" then
  5.    Produits.additem "Boeuf"
  6.    Produits.additem "Canard"
  7.    Produits.additem "Poulet"
  8. elseif Catégories.Value = "Légumes" then
  9.    Produits.additem "Brocolis"
  10.    Produits.additem "Courgettes"
  11.    Produits.additem "Poivrons"
  12. end if
  13. End Sub


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Sujets relatifs:

Leave a Replay

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