Document Excel

Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003 - 7 août 2003 à 11:56
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005 - 7 août 2003 à 14:29
salut
je suis toujours sur mon probleme avec excel
en fait j ai presque reussi mais mon programme me rouvre une feuille excel a chaque fois au lieu de me mettre tt sur la mm feuille

Ce qui me faudrait C tester si il y a deja une feuille excel d ouverte et si il y en a une dy rentrer les donnees ds celle ci .

voici mon code
----------------------------------------------------------------------

Dim XlSheet As Excel.Application
Dim toto As Integer
Dim titi As Integer
Dim tata As Integer
Dim x As Integer
Dim y As Integer

Private Sub cmdGo_Click()
check_blank ' teste si les champs sont vide
End Sub

Sub check_blank()
' teste si les champs sont vides
toto = 0
If out1.Text = "" Then
toto = 1
End If
If out2.Text = "" Then
totot = 1
End If
If vi.Text = "" Then
toto = 1
End If
If toto = 1 Then
MsgBox ("You Must Use The Calculate Button Before Using The Excel Button !! ")
End If
If toto = 0 Then
CreationClasseur
End If
End Sub

Sub color()
XlSheet.Range("A1:B1").Select
With XlSheet.Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
XlSheet.Range("C1").Select
XlSheet.Selection.Interior.ColorIndex = 8
XlSheet.Range("A1:C1").Select
End Sub

Sub CreationClasseur()
tata = 0

If tata = 0 Then
Set XlSheet = New Excel.Application ' crée une application Excel
XlSheet.Application.DisplayAlerts = False 'annule les messages
XlSheet.Application.Visible = True 'rend la fenetre Excel visible
XlSheet.Workbooks.Add 'ajoute un classeur
color
XlSheet.Sheets("Feuil1").Name = "Vi"
XlSheet.Range("A1:C1947").Select
With XlSheet.Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
tata = 1
End With
End If
'cellule de début = A1 trés important pour dire ou commence les données à mettre dans le graph
'titi = 0
If titi = 0 Then
x = 2
y = 1
If XlSheet.Worksheets(1).Cells(1, 1).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 1).Value = "KV-40"
End If
If XlSheet.Worksheets(1).Cells(1, 2).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 2).Value = "KV-100"
End If
If XlSheet.Worksheets(1).Cells(1, 3).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 3).Value = "VI"
End If
End If
titi = 1
If out1.Text <> "" Then
XlSheet.Worksheets(1).Cells(x, y).Value = out1.Text
y = y + 1
XlSheet.Worksheets(1).Cells(x, y).Value = out2.Text
y = y + 1
XlSheet.Worksheets(1).Cells(x, y).Value = out2.Text
x = x + 1
y = 1
End If

'XlSheet.Quit
Set XlSheet = Nothing
End Sub

Private Sub Command1_Click()
MsgBox ("C est Juste pour ki remplisse les champs ;)")
out1.Text = "42"
out2.Text = "42"
vi.Text = "42"
End Sub

----------------------------------------------------------------------

A bon entendeur salut

6 réponses

Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
7 août 2003 à 13:00
tu met le
Set XlSheet = New Excel.Application
dans l'évènement Form_load et les instructions
XlSheet.Quit
Set XlSheet = Nothing
dans Form_unload

et tu change ta proc CreationClasseur comme ca :

Sub CreationClasseur()
tata = 0

If tata = 0 Then
XlSheet.Application.DisplayAlerts = False 'annule les messages
XlSheet.Application.Visible = True 'rend la fenetre Excel visible
XlSheet.Workbooks.Add 'ajoute un classeur
color
XlSheet.Sheets("Feuil1").Name = "Vi"
XlSheet.Range("A1:C1947").Select
With XlSheet.Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
tata = 1
End With
End If
'cellule de début = A1 trés important pour dire ou commence les données à mettre dans le graph
'titi = 0
If titi = 0 Then
x = 2
y = 1
If XlSheet.Worksheets(1).Cells(1, 1).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 1).Value = "KV-40"
End If
If XlSheet.Worksheets(1).Cells(1, 2).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 2).Value = "KV-100"
End If
If XlSheet.Worksheets(1).Cells(1, 3).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 3).Value = "VI"
End If
End If
titi = 1
If out1.Text <> "" Then
XlSheet.Worksheets(1).Cells(x, y).Value = out1.Text
y = y + 1
XlSheet.Worksheets(1).Cells(x, y).Value = out2.Text
y = y + 1
XlSheet.Worksheets(1).Cells(x, y).Value = out2.Text
x = x + 1
y = 1
End If

End Sub
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
7 août 2003 à 13:27
-------------------------------
Réponse au message :
-------------------------------

>les instructions
> XlSheet.Quit
> Set XlSheet = Nothing
> dans Form_unload
>

pardonne mon ignorance mais je vois pas du tt ou se trouve form_unload

il faut dire que j ai commence il y a trois jours le VB
;)

Merci encore pour ta reponse Mooiz
0
nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007
7 août 2003 à 13:48
en fait c une propriété du formulaire....

Qd tu doubles cliques sur un epartie grise de ton formulaire, tu as la fenetre du code qui s'ouvre....

en haut de cette fenetre, tu as deux listes déroulantes blanches.
celle de gauche t'indique sur quel elément tu te trouves et celle de droite permet de choisir a partir de quel evenement tu veux que le code soit executé... c'est ds cette liste qu'il faut que tu choisisses unload...

Voila !

:-p :-p :-p :-p :-p :-p :-p :-p
Nag
ICQ# : 132028600
msn = giraudnba@msn.com
:-p :-p :-p :-p :-p :-p :-p :-p
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
7 août 2003 à 14:06
-------------------------------
Réponse au message :
-------------------------------

> en fait c une propriété du formulaire....
>
> Qd tu doubles cliques sur un epartie grise de ton formulaire, tu as la fenetre du code qui s'ouvre....
>
> en haut de cette fenetre, tu as deux listes déroulantes blanches.
> celle de gauche t'indique sur quel elément tu te trouves et celle de droite permet de choisir a partir de quel evenement tu veux que le code soit executé... c'est ds cette liste qu'il faut que tu choisisses unload...

ok merci ;)

mais cela na pas arrange mon probleme :( ca enregistre toujours ds une nouvelle feuille excel et cela ne rajoute pas les nouvelles donnees ds la mm feuille excel

----------------------------------------------------------------------
Dim XlSheet As Excel.Application
Dim toto As Integer
Dim titi As Integer
Dim tata As Integer
Dim x As Integer
Dim y As Integer

Private Sub cmdGo_Click()
check_blank ' teste si les champs sont vide
End Sub

Sub check_blank()
' teste si les champs sont vides
toto = 0
If out1.Text = "" Then
toto = 1
End If
If out2.Text = "" Then
totot = 1
End If
If vi.Text = "" Then
toto = 1
End If
If toto = 1 Then
MsgBox ("You Must Use The Calculate Button Before Using The Excel Button !! ")
End If
If toto = 0 Then
CreationClasseur
End If
End Sub
Sub color()
XlSheet.Range("A1:B1").Select
With XlSheet.Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
XlSheet.Range("C1").Select
XlSheet.Selection.Interior.ColorIndex = 8
XlSheet.Range("A1:C1").Select
End Sub

Sub CreationClasseur()
tata = 0

If tata = 0 Then
XlSheet.Application.DisplayAlerts = False 'annule les messages
XlSheet.Application.Visible = True 'rend la fenetre Excel visible
XlSheet.Workbooks.Add 'ajoute un classeur
color
XlSheet.Sheets("Feuil1").Name = "Vi"
XlSheet.Range("A1:C1947").Select
With XlSheet.Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
tata = 1
End With
End If
'cellule de début = A1 trés important pour dire ou commence les données à mettre dans le graph
'titi = 0
If titi = 0 Then
x = 2
y = 1
If XlSheet.Worksheets(1).Cells(1, 1).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 1).Value = "KV-40"
End If
If XlSheet.Worksheets(1).Cells(1, 2).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 2).Value = "KV-100"
End If
If XlSheet.Worksheets(1).Cells(1, 3).Value = "" Then
XlSheet.Worksheets(1).Cells(1, 3).Value = "VI"
End If
End If
titi = 1
If out1.Text <> "" Then
XlSheet.Worksheets(1).Cells(x, y).Value = out1.Text
y = y + 1
XlSheet.Worksheets(1).Cells(x, y).Value = out2.Text
y = y + 1
XlSheet.Worksheets(1).Cells(x, y).Value = out2.Text
x = x + 1
y = 1
End If
End Sub
Private Sub Command1_Click()
MsgBox ("C est Juste pour ki remplisse les champs ;)")
out1.Text = "42"
out2.Text = "42"
vi.Text = "42"
End Sub
Private Sub Form_Load()
Set XlSheet = New Excel.Application
End Sub
Private Sub Form_Unload(Cancel As Integer)
XlSheet.Quit
Set XlSheet = Nothing
End Sub
----------------------------------------------------------------------
0

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

Posez votre question
nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007
7 août 2003 à 14:11
g peut etre une solution a ton probleme mais il faut dissocier la création du classeur et le remplissage des cellules...
si tu peux faire ca, j'aurai surment une solution... arange toi et ton programme pour que ds "CreerClasseur" tu ne cré seulement le classeur et pui tu fais une fonction ou une sub "Traitement" qui remplit les cellules...

PS : garde qd meme une copie de ce que tu as !! lol

:-p :-p :-p :-p :-p :-p :-p :-p
Nag
ICQ# : 132028600
msn = giraudnba@msn.com
:-p :-p :-p :-p :-p :-p :-p :-p
0
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
7 août 2003 à 14:29
j'ai une autre solution (qui revient probablement au même que ce que dit nagattaque) :
en fait il faut deplacer ces lignes :

XlSheet.Workbooks.Add 'ajoute un classeur

XlSheet.Sheets("Feuil1").Name = "Vi"
XlSheet.Range("A1:C1947").Select
With XlSheet.Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With

depuis ta procédure CreationClasseur vers le form_load
En fait c'est surtout XlSheet.Workbooks.Add qu'il faut déplacer pour les autres lignes c'est à toi de voir
Ce qu'il y a c'est que dans ton code actuel, a chaque fois que tu cliques sur le bouton, tu vas creer un nouveau classeur qui va devenir le classeur actif du coup c'est normal que tu perdes tout a chaque clic (en fait tu perd pas tout tu changes juste de classeur)
0
Rejoignez-nous