Excel et VB

Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003 - 6 août 2003 à 14:44
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005 - 6 août 2003 à 16:23
salut je realise un prog mais j ai un petit probleme

j ai une fenetre avec 3 champs et j ai un boutton "Exel" ki rentre ces donnees ds un tableau sous excel mais j ai un probleme. Je veux ka chaque klik sur le boutton excel il rajoute les donnes des champs ds ce mm tableau mais a la ligne d en dessous si il y deja des donnees a la premiere ligne.
j avais trouve un code qui etait pas mal mais le problem c est qu'a chaque klik il rouvrait un document excel
J espere avoir ete asses clair
Merci
;)
{Tetris.}
----------------------------------------------------------------------

Dim XlSheet As Object
Dim toto As Integer

Private Sub cmdGo_Click()
check_blank ' teste si les champs sont vide
Set XlSheet = Nothing
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 Use The Excel Button !! ")
End If
If toto = 0 Then
CreationClasseur
End If
End Sub

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

Sub CreationClasseur()

Set XlSheet = CreateObject("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
'cellule de début = A1 trés important pour dire ou commence les données à mettre dans le graph
XlSheet.Worksheets(1).Cells(1, 1).Value = "KV-40"
XlSheet.Worksheets(1).Cells(1, 2).Value = "KV-100"
XlSheet.Worksheets(1).Cells(1, 3).Value = "VI"
Sheets("Feuil1").Name = "Vi"
Range("A1:C1947").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
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

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

4 réponses

Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
6 août 2003 à 15:10
code corrigé :

Dim XlSheet As Excel.Application
Dim toto 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 'La on peut mettre un else si toto ne prend
'que deux valeurs différentes
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()

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
'cellule de début = A1 trés important pour dire ou commence les données à mettre dans le graph
XlSheet.Worksheets(1).Cells(1, 1).Value = "KV-40"
XlSheet.Worksheets(1).Cells(1, 2).Value = "KV-100"
XlSheet.Worksheets(1).Cells(1, 3).Value = "VI"
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
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

Voila comme ca ca devrait marcher. Je te conseille de regarder cette source pour comprendre un peu mieux ton problème. J'ai peut e^tre laissé quelques erreurs mais après avoir lu la source juste au dessus tu devrais pouvoir les corriger
0
nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007
6 août 2003 à 15:36
oula oula !! ca c du code en vrac !!!! lol

alors deja si tu veux tester si il y a deja des valeurs dans ton tableau c'est très simple. Par contre il faudrait savoir a quelle ligne et a quel colonne il faut commencer la présence de données. Visiblement pour toi, tu remplies a partir de la case A1 si je lis bien tes commentaires.

Donc pour regarder s'il y a des données :

dim x as integer

x = 0 ' position de la ligne
Do
x = x + 1
Cells(x, 1).Select
If ActiveCell.Value = "" Then Exit Do
Loop
msgbox "Il n'y a plus de donnees a partir de la ligne : " & x
cells(x,1).select 'position de la premiere cellule vide du tablo

et a partir de la tu tappes ton code pour remplir les cellules avec les donnees de tes champs.

par exemple :
activecell.value = NOM_DE_TON_CHAMP1.text 'pour la case 1
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Value = NOM_DE_TON_CHAMP2.text 'tu te deplace d'une cellule vers la droite et tu remplie la case 2
ActiveCell.Offset(rowoffset:=0, columnoffset:=2).Value = NOM_DE_TON_CHAMP3.text 'tu te deplace de 2 cellules vers la droite et tu remplie la case 3

voila.. avec ca tu devrais y arriver...

Bon courage et tiens moi au courant si tu as des problemes... je suis dispo jusqu'a 17h.

:-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
6 août 2003 à 15:39
> Voila comme ca ca devrait marcher. Je te conseille de >regarder ID=10017 cette source pour comprendre un peu >mieux ton problème. J'ai peut e^tre laissé quelques erreurs >mais après avoir lu la source juste au dessus tu devrais >pouvoir les corriger

ok deja un grand merci pour avoir lu mon message et repondu
mais j ai essaye ton code et a chaque fois ke je klike sur le bouton je vois un document excel qui s ouvre et se ferme automatiquement :(
Je sais pas si c est moi qui me suis mal exprime (90% de chances ) ou si il y a une faute ds ton code.
donc ce ke jj aurai voulu c est qu au premier clik il ouvre une feuille excel et qu aux suivants kliks il aille rajoute au document excel les nouvelles donnees a la suite des anciennes

du type
12 12 12 ligne 1
42 42 42 ligne 2
24 24 24 ligne 3

;)

Merci encore de m avoir repondu ;)
0
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
6 août 2003 à 16:23
Ok alors dans ce cas là tu fais le Set XlSheet = new Excel.Application avant de cliquer sur le bouton (dans form_load par exemple) et pour quitter tu mets xlsheet.quit puis Set XlSheet = Nothing dans form_unload (par exemple... ;-). Il faudra evidement effacer ces instruction dans la procédure CreationClasseur (si tu reprend le code que j'ai fait)
Pour le reste de la procedure j'ai pas regardé en detail, si tu as besoin d'aide : MP
Le tout c'est de ne pas faire appel à Set XlSheet = new Excel.Application quand tu cliques sur ton bouton sinon il va rouvrir une session excel
0
Rejoignez-nous