cs_Loic34000
Messages postés27Date d'inscriptionmardi 11 mars 2008StatutMembreDernière intervention 6 juin 2008
-
17 mars 2008 à 10:17
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
27 mars 2008 à 02:18
Bonjour a tous,
Je suis débutant en visual basic 6 et j'ai des difficultés a terminer mon programme comme je le desire, mon programme est assez simple il contient un bouton avec une zone de texte.
Lorsque je clique sur le boutton je fait afficher l'heure et la date du système dans la zone de texte puis j'ouvre une feuille excel afin de l'enregistrer.
Mon problème est d'enregistrer l'heure et la date a chaque clic dans une cellule differente (A1, A2, A3...) et non a chaque fois reécrire par dessus la précedement sauvegarder.
Voila un morceau de mon programme :
' Commande simulant le transfert d'un Kwh.
Private Sub CmdTransfert_Click()
Text1 = "Transfert d'un Kwh au réseau"
Text2.Text = Format(Now, "dd/mm/yyyy hh:mm:ss")
Dim oExcel As Excel.Application
Dim oWk As Workbook
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True 'Affiche l'application excel.
Set oWk = oExcel.Workbooks.Add
'rajoute Text2 (la date et heure actuelle du transfert) en Feuil1 cellule A1.
oWk.Sheets(1).Range("A1") = Text2
'Sauve le classeur.
oExcel.DisplayAlerts = False ' Pour éviter des questions si classeur déjà existant.
oWk.SaveAs App.Path & "\MonClasseur.xls"
oWk.Close False 'Ferme le classeur.
oExcel.Quit 'quitte excel.
Set oWk = Nothing
Set oExcel = Nothing 'libération mémoire.
End Sub
Si quelqu'un aurait une idée...
Merci d'avance
A voir également:
Afficher dans une cellule excel a partir d'une textbox avec décalage
Maintenant, dans ton code, il ne faut pas créer un nouveau classeur à chaque fois que tu passes par ta procédure. Sinon, tu enregistres par-dessus l'ancien classeur et tu perds tes données précédentes...
Plutôt que
oExcel.Workbooks.Add
utilise Workbooks.Open App.Path & "\MonClasseur.xls"
Tu peux utiliser Dir pour vérifier s'il existe avant de l'ouvrir. S'il n'existe pas, à ce moment-là tu peux le créer avec Add comme tu le fais.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Loic34000
Messages postés27Date d'inscriptionmardi 11 mars 2008StatutMembreDernière intervention 6 juin 2008 18 mars 2008 à 10:43
Salut a tous,
J'ai essayé la solution proposée par MPI, le programme à l'air de vouloir fonctionner mais fini par afficher un message d'erreur :
Erreur d'execution 1004
La methode 'Sheets' de l'objet global a échoué.
Voila le morceaux de mon prog qui me pose problème :
' Commande simulant le transfert d'un Kwh.
Private Sub CmdTransfert_Click()
Text1 = "Transfert d'un Kwh au réseau"
Text2.Text = Format(Now, "dd/mm/yyyy hh:mm:ss")
Dim oExcel As Excel.Application
Dim owk As Workbook
Dim lignevide As Object
Set lignevide = Sheets(1)
Set oExcel = CreateObject("Excel.Application")
Workbooks.Open App.Path & "\MonClasseur.xls"
'rajoute Text2 (la date et heure actuelle du transfert) en Feuille 1 cellule A1.
lignevide = owk.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
owk.Sheets(1).Range("A" & lignevide) = Text2
'Sauve le classeur.
oExcel.DisplayAlerts = False ' Pour éviter des questions si classeur déjà existant.
owk.SaveAs App.Path & "\MonClasseur.xls"
owk.Close False 'Ferme le classeur.
oExcel.Quit 'quitte excel.
Set owk = Nothing
Set oExcel = Nothing 'libération mémoire.
End Sub
Je ne comprend pas pourquoi il affiche cette erreur.
Si quelqu'un aurait une idée.
cs_Loic34000
Messages postés27Date d'inscriptionmardi 11 mars 2008StatutMembreDernière intervention 6 juin 2008 19 mars 2008 à 16:27
Je cherche par quoi remplacer la constante xlUp pour excel 2007 mais en vain. Aurait-tu une idée est ce dans VB6 ou plutôt dans Excel que je peut trouver ca ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 21 mars 2008 à 22:05
Si tu as trouvé la constante ou la manière de faire, inscrit la réponse pour aider ceux qui viendrait lire ce message... et accepte ta réponse (petit bouton)
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Loic34000
Messages postés27Date d'inscriptionmardi 11 mars 2008StatutMembreDernière intervention 6 juin 2008 25 mars 2008 à 10:39
Salut MPI,
Je n'ai pas réussi a trouver la constante pour Excel 2007 mais l'application fonctionne sur le PC de mon labo ou ils ont excel 2003, je continu a chercher pour qu'il fonctionne aussi sur mon PC dès que je trouve je le mettrai sur le forum.
cs_Loic34000
Messages postés27Date d'inscriptionmardi 11 mars 2008StatutMembreDernière intervention 6 juin 2008 27 mars 2008 à 00:44
Salut MPI,
J'ai intallé Excel 2003 de manière à ce que l'application que j'ai réalisé fonctionne sur mon PC mais j'ai le problème avec l'erreur 91qui revient, elle provient toujours de la même ligne à savoir :
Commande simulant le transfert d'un Kwh.
Private Sub CmdTransfert_Click()
Text1 = "Transfert d'un Kwh au réseau"
Text2.Text = Format(Now, "dd/mm/yyyy hh:mm:ss")
Dim oExcel As Excel.Application
Dim oWk As Workbook
Dim LigneVide As Long
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True 'Affiche l'application excel.
Workbooks.Open App.Path & "\MonClasseur.xls"
LigneVide = oWk.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
oWk.Sheets(1).Range("A" & LigneVide) = Text2
'Sauve le classeur.
oExcel.DisplayAlerts = False ' Pour éviter des questions si classeur déjà existant.
oWk.SaveAs App.Path & "\MonClasseur.xls"
oWk.Close False 'Ferme le classeur.
oExcel.Quit 'quitte excel.
Set oWk = Nothing
Set oExcel = Nothing 'libération mémoire.
Je n'y comprend plus rien, on dirai que c'est une erreur de ma part ou un oublie par rapport à une réference qu'un problème de version d'excel (2003 ou 2007) .
Je ne sais pas comment faire pour résoudre ce problème
Si quelqu'un aurait une idée
Merci d'avance.