greg070706
Messages postés12Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention10 mai 2009
-
8 avril 2009 à 14:39
greg070706
Messages postés12Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention10 mai 2009
-
14 avril 2009 à 11:52
Bonjour à tous,
Etant débutant, je n'arrive pas à trouver le code qu'il me faut.
J'ai créé un formulaire (j'utilise vb6) avec plusieur textbox et combo et je souhaite renvoyer les valeurs de ses text et combo dans un classeur excel (dans une feuil et cellule bien spécifique).
Mon formulaire fonctionne bien, met combo et textbox aussi, le bouton valider presque, quand je click dessus il me ferme bien mon userform mais rien ne se passe pour le renvoi de cellule.
EX: si dans mon combo1 j'ai : "azerty" ,je voudrais que azerty soit renvoyer dans le classeur1, feuil1, cellule a1.
Merci.
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 8 avril 2009 à 22:53
si tu es dans VB6 et que ton classeur excel est fermé il faut donc l'ouvrir et créer une instance dans VB6 de ce classeur
on error resume next ' permet de ne pas planter sur une erreur et de passer à l'éxécution de la ligne suivante
Set ExcelApp = GetObject(, "Excel.Application")'ouvre l'instance Excel
If Err.Number = 0 Then'si Excel n'est pas ouvert une erreur est générée
Err.Clear 'donc on efface l'erreur
Set ExcelApp = CreateObject("Excel.Application")'et on crée l'instance en ouvrant excel
End If
Set book = ExcelApp.Workbooks 'on déclare l'objet Book(non parfaitement arbitraire)comme étant l'objet Workbooks de excel
book.Open (c:\......\dossier1.xls)' on ouvre le fichier en mettant le nom et le chemin exact du fichier
ExcelApp.Visible = True' on rend Excel visible mais ce n'est pas indispensable
set feuille = excelApp.worksheet("feuil1")
feuille.range("A1")=combo1.text ' on copie alors l'item sélectionné du combobox dans le fichier excel
book.close( True) 'on ferme le fichier en sauvegardant grace au true
excelApp.quit 'on quite Excel
set feuille = Nothing 'et on supprime les trois objets créés pour l'opération
Set book = Nothing
Set ExcelApp = Nothing
bien sûr ce bout de code peut être décomposé en plusieurs parties si tu as plusieurs opération à faire dans ton fichier excel il ne sert à rien de l'ouvrir et le refermer à chaque fois
cela marchera si ton combobox est bien dans la form où tu mets ce code (combobox ou text box d'ailleurs !)
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 8 avril 2009 à 19:21
plusieurs questions
es tu dans VBA ou dans VB6?
le classeur est il ouvert ou pas?
si il est ouvert est ce que son nom est bien orthographié?
quel est le reste de ton code à cet endroit ?
est ce que ton combobox a quelque chose de sélectionné ?
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Vous n’avez pas trouvé la réponse que vous recherchez ?
greg070706
Messages postés12Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention10 mai 2009 8 avril 2009 à 21:02
Je suis dans vb6 mon classeur est fermé.
Voila mon code, et ma question concerne le bouton command1.
Merci pile_poil pour tes réponses.
Private Sub Form_Load()
Form2.Left = (Screen.Width - Form2.Width) / 2
Form2.Top = (Screen.Height - Form2.Height) / 2
End Sub
______________________________
Private Sub Command1_Click()
Form2.Show
unload form1
End Sub
_______________________________
Private Sub Text1_Change()
greg070706
Messages postés12Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention10 mai 2009 9 avril 2009 à 21:30
Re bonjour à tous
pile_poil, j'ai un petit soucis avec le code. Je l'ai écrit parfaitement, tout ce passe bien sauf que quand j'ouvre mon classeur excel, ma cellule (qui devrait etre renseigné) est vide.
Quand je click sur mon bouton tout à l'air de fonctionner (excel s'ouvre et se referme, trés rapidement d'ailleur).
Si ta une solution à me proposer ou meme un exemple, je suis preneur.
Merci
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 10 avril 2009 à 08:19
salut!
pour pas que excel se referme tout de suite tu peux mettre en commentaireles deux lignes
book.close( True) 'on ferme le fichier en sauvegardant grace au true
excelApp.quit 'on quite Excel
pour cela il suffit de mettre ' devant
tu auras alors le temps de voir si la cellule A1 prend bien la valeur de ton combobox
si elle reste vide vérifie que dans ton combobox il y a bien quelque chose de sélectionné et que ton combobox est bien dans la meme form que ton bouton de commande qui ouvre excel
tu peux remplacer la ligne
feuille.range("A1")=combo1.text ' on copie alors l'item sélectionné du combobox dans le fichier excel
par ceci pour voir si la cellule est bien renseignée
If combobox.text ="" then
feuille.range("A1")="VIDE"
Else
feuille.range("A1")=combo1.text
end if
maintenant peut être que ta version d'excel ne reconnais pas
book.close( True)
dans ce cas tu peux la remplacer par
book.save
book.close
pour décomposer l'enregistrement et la fermeture du classeur
tu peux aussi exécuter le code que je t'ai donné l'autre jour en mode pas à pas
pour cela tu mets un point d'arret au début du code
tu lances ton programme
et quand il arrivera au point d'arret tu continues à l'éxécuter avec la touche F8 qui te permet à chaque appui sur cette touche d'éxécuter ligne par ligne la suite le code pour voir exactement ce qui se passe
dernier point possible de non fonctionnement
est ce que les noms des classeurs, feuilles, combobox sont bien identiques à ceux du code.
si ces tests ne donnent rien et que ton VB6 ne te donnes aucun message d'erreur fais un zip de ton programme et envoi le moi par mail
je te donnes par MP mon mail
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 10 avril 2009 à 08:22
en relisant tout je viens de voir que tu disais que tu entrait la valeur a mettre dans le dossier excel par textbox1
il faut donc remplacer dans le code que je t'ai donné
combobox.text
par
textbox1.text
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
greg070706
Messages postés12Date d'inscriptionsamedi 28 mars 2009StatutMembreDernière intervention10 mai 2009 14 avril 2009 à 11:52
Bonjour,
Maintenant tout fonctionne correctement.
Voici le code finale de mon bouton :
Private Sub Command3_Click()
Dim sheet As Object
Dim exldoc As Object
Dim exlapp As Object
Dim i As Integer
Dim j As Integer
Set exlapp = CreateObject("excel.application")
Set exldoc = exlapp.Workbooks.Open("C:\Users\Grég\Desktop\TEST\OK")
Set sheet = exlapp.ActiveWorkbook.ActiveSheet