Tableau excel dans VB

M

Mick

Guest
Salut

Je cherche à ouvrir un tableau excel àpartir de Visual, faire des modifications dessus, toujours à partir de Visual (jusqu'à là , j'arrive) et surtout enregistrer ces modifications pour pouvoir réutiliser mon tableau par la suite.

voici mon code:

Dim xlApp As Object
Dim xlSheet As Object

Private Sub Form_Load()

Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.open filename:="\\Zeus\M1GMP\croguemi\Mes documents\dernier\dédéa tableau.xls"
Set xlSheet = xlApp.Worksheets(1)
xlSheet.Application.Visible = True

End Sub

Private Sub Modif_Click()
xlSheet.Cells(1, 1) = "DEDE"
End Sub

Private Sub Enregistrer_Click()
?????> xlApp.Workbooks.SaveAs filename:="\\Zeus\M1GMP\croguemi\Mes documents\dernier\dédéa tableau.xls"

End Sub

Salut
 
Z

Zon

Guest
Salut,

Il faut affecter une variable quand tu ouvres ton classeur

dim xlclasseur as object


set xlclasseur=xlApp.Workbooks.open (filename:="\\Zeus\M1GMP\croguemi\Mes documents\dernier\dédéa tableau.xls")

private Sub Enregistrer_Click()
xlclasseur.saveas ....
End Sub


Il serait plus propre (tu t'y retrouveras mieux sur un gros projet) de rajouter une référence Microsoft Excel Object library 1X à ton projet VB comme cela on pourrait déclarer

Dim xlApp As excel.application
Dim xlSheet As excel.worksheet
Dim XlClasseur as excel.workbook


A+++
 
M

Mick

Guest
Merci Zon

J'avance

J'aimerais savoir comment utiliser l'évènement .Range, si c avec
Xlapp
Xlclasseur ou bien
Xlsheet

Si tu comment incrémenter une variable lorsque celle ci est une lettre

Je cherche à faire une boucle du genre:
while Xlapp.range (m & n) = ""
m = m + 1
wend

mais m est une lettre est cela ne marche pas.

Merci encore
 
Z

Zon

Guest
Salut,


Pour incrémenter une lettre il faut passer par son code Ascii qui lui est numérique
while Xlapp.range (m & n) = ""
m = chr(asc(m) + 1)
wend

Mais à partir de la 27 ème colonne ça va être l'usine à gaz.

Il vaudra mieux passer par la proprété Cells pour incrémenter les colonnes

Dim I&,J& 'on déclare en long

I=1:j=1


while xlapp.cells(i,j)=""
j=j+1
wend

Si tu travailles avec xlapp ou xlclasseur cells(i,j) représente une cellule de la feuille active. Par contre avec xlsheet(définie bien entendu) tu travailleras sur la feuille en question même si ce n'est pas la feuille active.

A+++
 
Z

Zon

Guest
Salut,

Pour insérer une cellule vers le bas

with xlsheet
.range("A3").insert -4121
end with


Pour insérer une ligne vers le bas

with xlsheet
.rows(3).insert -4121 'ou .range("A3").entirerow.insert -4121
end with

Il vaut mieux utliiser les constantes par leur valeur numérique que par leur valeur nommée (ici xldown). Tu trouveras les correspondances numérqiues en utilisant l'explorateur de projet dans VBE sous Excel.

A+++
 

Discussions similaires

Statistiques des forums

Discussions
314 177
Messages
2 106 872
Membres
109 711
dernier inscrit
leveille