Remplissage "dynamique" d'un classeur excel...

stefsuire Messages postés 5 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 31 mai 2005 - 27 mai 2005 à 09:29
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016 - 27 mai 2005 à 15:57
Bonjour,



je developpe actuellement un petit logiciel qui recupere des données physique via une carte d'acquisition "maison".

je suis bloqué sur la chose suivante:



je desire conserver, en fonction d'un indice "t", 4 valeurs
(appelons les val1 à 4), dans un classeur excel. Mon probleme est que
je ne sais pas comment remplir les lignes suivantes, une fois la
premiere remplie ( ca boucle sur l'indice t)

bref, utiliser un indice de ligne variable pour recuperer.





ma procédure:



j'ouvre le classeur excel





debut de la boucle for avec t en indice

je recupereles valeurs val1

val2

val3

val4



stockage de t dans la colonne A a la lignet

stockage de val1(t) dans la colonne B a la ligne t

stockage de val2(t) dans la colonne C a la ligne t

stockage de val3(t) dans la colonne D a la ligne t


stockage de val4(t) dans la colonne E a la ligne t



boucle jusqu'a ce que je dise d'arreter...



voila..





merci d'avance



stef

5 réponses

Sensei01 Messages postés 94 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 27 juin 2006
27 mai 2005 à 09:33
Sensei01
comme ca :



'Variables Relative à la génération du fichier Excel



Dim ExcelObject
As
Object



Dim ExcelBook
As
Object



Dim ExcelSheet
As
Object


'Génération du fichier Excel :


ExcelObject = CreateObject("Excel.application")


ExcelBook = ExcelObject.Workbooks.Add


ExcelSheet = ExcelBook.Worksheets(1)

for ....


' Remplissage du fichier Excel :


Ligne = Ligne + 1
ExcelSheet.Application.Range("B" & Ligne).Value = val1
ExcelSheet.Application.Range("C" & Ligne).Value = val2
ExcelSheet.Application.Range("D" & Ligne).Value = val3
ExcelSheet.Application.Range("E" & Ligne).Value = val4

end for

/******** Sans audance pas de gloire !! ********/
0
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
27 mai 2005 à 10:03
y'a plusieurs manières, je propose celle-ci avec un typage un peu plus précis :

Dim apex As excel.Application
Dim sheet_excel As excel.Workbook 'fichier Excel

sub module()
Set apex = New excel.Application
Set sheet_excel = apex.Workbooks.Open("nom du fichier")
apex.Visible = False 'pour pas "l'ouvrir"
apex.DisplayAlerts = False ' pour pas voir les nombreux messages débiles que peut contenir excel

for i = 0 to .... (3 )
sheet_excel.sheets("nomd'une feuille").range("a1").offset(i,0).value = t
next i

format_excel.Close
Set format_excel = Nothing
apex.Application.Quit
Set apex = Nothing
end sub

ce qui permet de changer de feuille, de fichier,....il suffit de changer les liens
0
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
27 mai 2005 à 10:13
tient juste pour rire

t(0)-----val(0) = 3
------val(1) = 5
t(1)-----val(0) = 8
------val(1) = 12
------val(2) = 5
t(2)-----val(0) = 3
------val(1) = 5
------ .......

etc

type montypedetableau
val() as integer
end type

dim tab() as montypedetableau
.......

sub(main)
....
call module(tab())
end sub

sub module(byref tab() as montypedetableau à moi)
Set apex = New excel.Application
Set sheet_excel = apex.Workbooks.Open("nom du fichier")
apex.Visible = False 'pour pas "l'ouvrir"
apex.DisplayAlerts = False ' pour pas voir les nombreux messages débiles que peut contenir excel

for j=0 to ubound(tab) 'pour récupérer la taille du tableau (pour chaque t, tu as des val)
for i = 0 to ubound(tab(j).val)
sheet_excel.sheets("nomd'une feuille").range("a1").offset(i,0).value = tab(j).val(i) ' tu colles la valeur i du tab j
next i
sheet_excel.sheets("nomd'une feuille").range("a1").offset(ubound(tab(i).val),0).select
next j

format_excel.Close
Set format_excel = Nothing
apex.Application.Quit
Set apex = Nothing
end sub
0
stefsuire Messages postés 5 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 31 mai 2005
27 mai 2005 à 13:45
toutes ces methodes me plaisent bien...merci messieurs et peut etre mesdemoiselles !!!



ca marche en ce moment meme.!!!



maintenant, l'atpe suppémentaire, ca serait de faire un bout de
programme qui m'affiche ces point stockés ( en temps réel..pas facile
je pense ) dans un graphique, sur ma feuille principale..ca doir etre
faisable mais comme je suis pas un Jedi...avec Excel...vous ecririez quoi ?



le top ca serait de pouvoir faire un zoom sur une zone specifique avec
le cliquer-reclacher de la souris (dessin d'un cadre de zoom)...



une fois mon taf terminé , je ne maquerait pas de mettre le code source ici !!



encore merci !!





stef
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
27 mai 2005 à 15:57
vite fait : le fameux "doevents" te permet d'éxécuter un truc en temps réel

par exemple dans une boucle for, tu colles un texte qui s'affiche dans une autre form (un log temps réel par ex)

la form ne se mettra pas à jour si tu colles pas doevents dansla boucle (ou à chaque fois que tu veux mettre à jour qqchose tu me vois venir ??

dans ton cas ce sera un chartobjects donc

Dim cht As ChartObject

Set cht = sheet_excel..Sheets(nom).ChartObjects.Add(ch_left, ch_top, 300, 150)
With cht.Chart
.ApplyCustomType ChartType:=a voir
.SeriesCollection.Add ma_plage1

end with

...... et tout et tout
0
Rejoignez-nous