VB6 enregistrer ds un excel une ligne apres ligne

Signaler
Messages postés
111
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2010
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour à tous les amis,
comme indique le titre: j'ai un petit prbleme ,j'arrive a connecté vb avec Excel, a expoter des cellule bien définit,mais j'arrive pas comment enregistrer des infos d'une feuille excel ligne apres ligne dans la meme feuille,c-à-d quand je clic sur une boutton tous les zone de texte qui se trouve ds mon form vont exporter vers Excel ,quand je clic une deuxieme fois les infos serons enregistrer ds la ligne suivante.
Si quelqu'un d'entre vous à la solution,et merci

8 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Si tu réussis déjà à exporter des données, il ne te reste qu'à
déterminer la ligne sur laquelle tu veux exporter les données suivantes.


PremiereLigneVide = objetXlSheet.Cells.Find("*", objetXlSheet.Range("A1"),,,xlbyrows,xlprevious).row + 1

(ça devrait fonctionner...)


Tu connais donc la première ligne vide où tu veux en principe écrire tes données


Si tu mettais le bout de ton code qui te sert déjà à exporter, ce serait probablement plus simple de te répondre ...

MPi
Messages postés
111
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2010

voila le mon code , mais ici j'ai definit les rangés "A5" et "B5",moi ce que je veux que les ranges serons dynamique,
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel


Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\MonFich.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)

appExcel.Application.DisplayAlerts = False
wsExcel.Range("A5").Value = Text1.Text
wsExcel.Range("B5").Value = Text2.Text


wbExcel.Save
wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
'permet d'enregistrer les modification que l'on fait dans le fichier Excel si True
'sinon ne sauvegarde pas les modification apportées
   appExcel.Application.DisplayAlerts = True


'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

voici l'intégration de la function de MPi dans ton code (vois bien ce qui est mis en rouge) :

    Dim appExcel    As Excel.Application 'Application
Excel
    Dim wbExcel     As Excel.Workbook 'Classeur
Excel
    Dim wsExcel     As Excel.Worksheet 'Feuille
Excel

Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier
Excel

Set wbExcel = appExcel.Workbooks.Open("C:\MonFich.xls")
'wsExcel correspond à la première
feuille du fichier

Set wsExcel = wbExcel.Worksheets(1)

PremiereLigneVide = wsExcel.Cells.Find("*", wsExcel.Range("A1"),,,xlbyrows,xlprevious).row + 1

appExcel.Application.DisplayAlerts = False  '**********inutile car
'ce qui fait que tu auras des messages c'est au niveau de l'enregistrement.
'Que je t'ai modifié plus bas, tu ne devrais pas avoir de message

wsExcel.Range("A" & PremiereLigneVide).Value = Text1.Text ' modif ici
wsExcel.Range("B" & PremiereLigneVide).Value = Text2.Text ' et là

wbExcel.Save '**********inutile
wbExcel.Close True 'c'est là que tu enregistres 'Fermeture classeur
appExcel.Quit 'Fermeture de
l'application Excel
   appExcel.Application.DisplayAlerts = True '**********inutile

'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing


--Mortalino-- Colorisation
automatique

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
111
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2010

j'ai integré le code mais ne marche pas,quand j'execute ;il ya une message d'erreur qui s'affiche "variabe objet ou variable bloc non definie",et le debouguage pointe sur :
PremiereLigneVide = wsExcel.Cells.Find("*", wsExcel.Range("A1"), , , xlByRows, xlPrevious).Row + 1
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Ca tombe bien, j'ai travaillé récemment sur une fonction qui présenté le même problème, en fait dans la ligne, il faut remplacer wsExcel par appExcel :
PremiereLigneVide = appExcel .Cells.Find("*", appExcel.Range("A1"), , , xlByRows, xlPrevious).Row + 1

et si t'as encore une erreur, fait ceci :
wsExcel.Range("A1").Select
PremiereLigneVide = appExcel.Cells.Find("*", ActiveCell, , , xlByRows, xlPrevious).Row + 1

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
111
Date d'inscription
mardi 31 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2010

j'ai essayé tous les cas mais il reste le même probleme ,
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Arf, ça ne m'avais pas sauté aux yeux :
PremiereLigneVide, tu l'asdéclaré ??

Dim PremiereLigneVide As Integer

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
L'erreur peut survenir si la feuille est entièrement vide.

Tu pourrais réessayer le test en inscrivant, au préalable, des entêtes si c'est le cas.

MPi