Renvoi de valeur d'un text ou combo vers classeur [Résolu]

greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 8 avril 2009 à 14:39 - Dernière réponse : greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 8 avril 2009 à 22:53
3
Merci
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

Merci pile_poil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de pile_poil
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 8 avril 2009 à 15:21
0
Merci
bonjour
workbook("classeur1").worksheet("feuil1").range("A1")=combo1.text

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Commenter la réponse de pile_poil
greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 8 avril 2009 à 17:13
0
Merci
Bonjour,
Quand j'inscris le code j'ai une erreur :"compile error: sub or function not defined".
Si vous pouviez me donner plus de détails.
Merci
Commenter la réponse de greg070706
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 8 avril 2009 à 19:21
0
Merci
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
Commenter la réponse de pile_poil
greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 8 avril 2009 à 21:02
0
Merci
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()


End Sub
Commenter la réponse de greg070706
greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 8 avril 2009 à 21:03
0
Merci
Petite precision, la valeur que je rentre est dans le textbox1.
Commenter la réponse de greg070706
greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 9 avril 2009 à 08:19
0
Merci
Etant débutant je ne pensais pas qu'il fallait autant de code. C'est parfais là tout est clair.
Je te remercie.  
Commenter la réponse de greg070706
greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 9 avril 2009 à 21:30
0
Merci
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
Commenter la réponse de greg070706
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 10 avril 2009 à 08:19
0
Merci
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
Commenter la réponse de pile_poil
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 10 avril 2009 à 08:22
0
Merci
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
Commenter la réponse de pile_poil
greg070706 12 Messages postés samedi 28 mars 2009Date d'inscription 10 mai 2009 Dernière intervention - 14 avril 2009 à 11:52
0
Merci
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
  
sheet.Application.ActiveSheet.RANGE("D6").Value = Text1.Text
sheet.Application.ActiveSheet.RANGE("K6").Value = Combo1.Text
sheet.Application.ActiveSheet.RANGE("J8").Value = Combo2.Text
sheet.Application.ActiveSheet.RANGE("B8").Value = Combo3.Text


exlapp.Workbooks.Close
   
Set sheet = Nothing
Set exldoc = Nothing
Set exlapp = Nothing
End Sub

Je te remercie, si jamais j'ai d'autre question j'hésite pas.
Commenter la réponse de greg070706

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.