mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 2008
-
16 oct. 2007 à 04:21
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 2008
-
17 oct. 2007 à 16:00
Bonjour,
J'ai un fichier excel dont le style est déjà configuré (taille colonnes, taille lignes, font, ...). Pour conserver ces paramètres, je veux l'ouvrir et modifier le contenu. Pour la fermeture, ça peut se faire à la main et peu importe s'il me demande d'enregistrer à la fermeture.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201826 16 oct. 2007 à 17:40
Re,
Les instructions
objExcel.DisplayAlerts=False ' True, False
objExcel.ActiveWindow.DisplayGridlines = False ' True, False
objExcel.Application.Visible=True ' True, False
sont conventionnelles et non obligatoires.
Mais les modifications en début de script devront être reportées à l'inverse en fin de script.
Pour le sheet, s'il y a un seul onglet, inutile de préciser (1) puisqu'implicite.
Pour redimensionner les colonnes:
'Mise en forme des colonnes
objExcel.Columns("A:B").Select
objExcel.Selection.Columns.AutoFit
ObjExcel.Range("A1").Select
Pour le vbTab, n'étant pas vbaiste, je ne saurais répondre (je plaisante) que par l'utilisation (déconseillée) de sendkeys.
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 20081 16 oct. 2007 à 04:59
re...
bon ben j'ai trouvé. Par contre, je ne comprend pas pourquoi ça marche. On ouvre l'application, puis on ouvre le fichier (jusque la ok). Mais comment se fait-il que ça ne soit pas objSpread qui doit être utilisé à la place de objExcel dans la 3ème ligne? (objExcel.Cells(1,..... ). C'est pourtant objSpread qui est le fichier excel ouvert!?
si quelqu'un peut m'expliquer le pourquoi du comment?
Set objExcel = CreateObject("Excel.Application")
Set objSpread = objExcel.Workbooks.Open("c:\temp\exceltest.xls")
objExcel.Cells(1, 1).Value = "tst222sts"
objExcel.Quit
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 20081 16 oct. 2007 à 15:11
Bonjour Jean-Marc,
Merci pour la réponse...
question cependant : Sans les lignes suivantes, cela fonctionne aussi. sont-elles cependant nécessaire pour éviter tout problème à la crosoft?
objExcel.ActiveWorkbook.Sheets("Exemple1").Select 'selection de mon onglet
Nouvelles questions : quand j'écris une longue phrase dans une case, j'aimerai qu'elle se prolonge dans les cases vides de sa droite. avec Cell, tout est dans la case. de plus la case prend des dimension importantes pour tout voir. Y a-t-il une façon d'activer ce mode?
De plus, j'aimerai bien utiliser les tab et return (chr(13) et chr(9)) mais je n'arrive pas à le faire accepter par cells. Y a-t-il un moyen d'y parvenir????
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 20081 17 oct. 2007 à 09:21
Bonjour,
En fait si je pose la question, c'est que lors de ma première création d'un fichier excel ça marchait bien (cf code ci-dessous). Mais si on écrit comme sur cette soluce, on écrase le contenu du fichier.
Dim FSys
Dim MonFic
Set FSys = CreateObject("Scripting.FileSystemObject")
Set MonFic = FSys.CreateTextFile(FileNameSave)
With MonFic 'Pour écrire dans le fichier texte
.write "text1" & chr(13) & "Text2"
End With
Mais je comprend bien que c'est déconseillé quand ça fonctionne pas tout le temps .
Merci
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201826 17 oct. 2007 à 12:53
Bonjour à tous,
Bonjour [auteur/MITSH666/357083.aspx mitsh666],
Il ne faut pas utiliser la méthode "CreateTextFile" pour créer un .xls
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("d:\testfile.xls", True)
MyFile.WriteLine("Ceci est un test.")
MyFile.Close
Cet exemple crée effectivement le fichier et écrit dans la cellule(1,1).
Pour créer un .xls:
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
ça crée pas un fichier... ça ouvre excel et ça ouvre une feuille. Mais j'ai compris l'astuce. voici d'ailleurs la fonction pour créer un fichier excel pour ceux qui la désirent :
function fctCreateExcelFile(ByVal FilePath)
Dim objExcel, objClasseur, objWorkbook, objWorksheet
Set objExcel = CreateObject("Excel.Application")
objExcel.DisplayAlerts = False 'enlève l'alerte (oui=True, non=False)
'objExcel.Application.Visible = True 'Cache le classeur (oui=True, non=False)
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet = objWorkbook.Worksheets(1)
objExcel.ActiveWorkbook.SaveAs FilePath 'sauvegarde le classeur
objExcel.ActiveWorkbook.Close 'Fermeture d'Excel
objExcel.DisplayAlerts = True 'remet l'alerte oui=True non=False
'objExcel.Application.Visible=True 'remet la visibilité
objExcel.Quit
Set objExcel = Nothing
Set objClasseur = Nothing
end function
et pour modifier ce qu'il y a dans le fichier excel :
function fctModifyExcelFile(ByVal FilePath)
Dim objExcel, objClasseur
Set objExcel = CreateObject("Excel.Application")
Set objClasseur = objExcel.Workbooks.Open(FilePath)
objExcel.DisplayAlerts = False 'enlève l'alerte (oui=True, non=False)
'objExcel.Application.Visible = True 'Cache le classeur (oui=True, non=False)
objExcel.ActiveWorkbook.Sheets(1).Select 'selection de mon onglet
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 20081 17 oct. 2007 à 16:00
Nouvelle question.
Pour modifier la taille de la ligne automatiquement en fonction du contenu, comment fait-on?
Je m'explique, j'ai une cellule avec le contenu suivant :
Et des remarques, on peut en avoir une pétée, ça peut même déplacer la place qui est octroyée. Enfin, j'ai plus envie de parler, donc je vais faire des dfkféjasklfjaséfléhgfkjvhsfkdashfkéldshafklashfklashfklasjfhasklhfjasklashfklashfkashfklasjhfaskfaskfhhfklashfklasfkfélàkfkfélàélodasjfijoweiurjjfaslkfjlasjfélaskjfaséjfklasjfélasjfklasjfljflaskj.wmer.,mdsfa.fmmwkefjlsjflaskjfasélfas
Juste pour faire fun
j'aimerai que la cellule affiche tout le texte. Elle ne peut pas changer la taille de la cellule, mais uniquement celle de la ligne. J'ai en effet fait un Merge (fusion de cellules) sur x colonnes afin d'avoir un espace texte qui utilisera toute la place de la feuille lors de l'impression. Concéquences, on ne peux bouger que la taille de la ligne pour faire apparaître tout le texte.