nagstef
Messages postés93Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 septembre 2008
-
29 avril 2006 à 19:13
meriam13 -
2 mai 2006 à 18:44
Bonjour !!
J'utilise cette façon de procéder pour écrire dans des feuilles excel.
Set feuille = GetObject("c:\toto.xls")
Set classeur = feuille.Application.Workbooks("toto.xls")
classeur.worksheets("Feuil1").Cells(1, 1).Value = "toto"
classeur.save
Or, j'ai un problème.
Lorsque je fais une modificationet sauvegarde, la feuille passe automatiquement en "affichage masqué".
Sauriez-vous quelle ligne supplémentaire pourrais-je rajouter pour rendre cette feuille "affiché" par défaut ...
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 avril 2006 à 22:42
dim ExApp As Object
dim ClBook As Object
dim Feuille As Object 'rajoute ça, c'est pour créer l'objet feuille (ou Onglet)
Set ExApp = CreateObject("Excel.Application") )
Set ClBook = ExApp.Workbooks.Open("c:\tonfichier.xls")
Set Feuille = ClBook.Worsheets.Item(1) ' remplace 1 par le numéro de la feuille voulue
ExApp.Visible = True
'pour rendre Excel visible
Feuille.
Cells(1, 1).Value = "toto" c'est comme quand tu utilises excel, mis a part qu'au lieu de lui dire Sheets(1).Cells .....
Feuille.Cells ....
il faut utiliser les terme déclarés en Set
ClBook.Close True
ExApp.Quit
Donc quand je dis tu mets ton code, c'est pour que tu places les données où tu le souhaites dans la feuille (ici n°1)
Mortalino
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 avril 2006 à 23:39
Salut Jean Paul
Me concernant je ne peux télécharger ta source aujourd'hui mais j'ai regardé le code et ça a vraiment l'air sympa ce que tu as fait et dans la semaine je te le récupèrerai pour voir mieux.
Effectivement c'est bon d'avoir ces codes sous la main.
nagstef
Messages postés93Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 septembre 20081 30 avril 2006 à 15:07
Encore moi :)
Voici ce que je déclare dans un module.bas.
sub feuille_load()
Dim ExApp As Object
Dim ClBook As Object
Set ExApp = CreateObject("Excel.Application")
Set ClBook = ExApp.Workbooks.Open("c:\toto.xls")
Set feuille = ClBook.Worksheets.Item("aaa")
Set feuille1 = ClBook.Worksheets.Item("bbb")
Set feuille2 = ClBook.Worksheets.Item("ccc")
En faite, j'utilise souvent le meme chier excel, mais des onglets souvent différents .
Donc, plutot que d'ecrire pour chaque bouton à chaque fois la declaration ci dessous, dans chaque bouton, le pensais pouvoir y accéder
par un module.bas
Je pense que cela doit marcher, par contre, la valeur de feuille, feuille1 et feuille2 ne sont pas reconnues lorsque le programme reprend son fil
apres avoir lu le module.bas
De quelle façon dois-je déclarer (dim feuille As ?????? ) la formule feuille, feuille1 etc ... pour que la form du programme reconnaisse correctement cette valeur ??
dans le form
If feuille1.Cells(1, 1).Value "" Then GoTo 100> Erreur, un objet est requis ...!!
Merci de votre aide toujours précieuse pour avancer !!!
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 30 avril 2006 à 21:18
Salut,
Tes feuilles doivent être déclarées comme l'appli et le classeur, de type Object.
Dim ExApp As Object
Dim ClBook As Object
Dim Feuille As Object
Dim Feuille1 As Object
Dim Feuille2 As Object
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 30 avril 2006 à 23:32
dans ta ligne If Feuille1.Cells(1, c).Value = "" Then GoTo 100
tu as mis la valeur "c" en colonne, as tu bien fait la boucle For c = x To x... Next ?
(x étant un nombre)
Par contre je ne vois pas à quoi correspond ton GoTo 100
100 c'est la ligne où tu souhaites que ton prog saute ou tu as placé quelque part un
"100:" puis code ?
nagstef
Messages postés93Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 septembre 20081 30 avril 2006 à 23:38
Le goto 100 est bien bon, et comme je te dis, tout marche nickel si je remplace "Feuille_load" par les lignes qu'il y a dans mon module.
Mais des feuille_load, dans tout le projet, y'en a au moins 40, ce qui alourdirait serieusement le code !!
En fait, il est clair apparement que le soft ne reconnait pas la valeur "feuille1" ou du moins, ne la garde pas en mémoire apres son passage dans le module.
Pourtant à ce que tu me dit, la valeur "feuille1" devrait être reconnu dans le form arpes etre passé par le module ..
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 30 avril 2006 à 23:45
Alors pour que tes objets soient reconnus tout le temps, enlève
Dim ExApp As Object, ClBook As Object, Feuille As Object, Feuille1 As Object, _
Feuille2 As Object
de la procédure et met
Public ExApp As Object, ClBook As Object, Feuille As Object, Feuille1 As Object, _
Feuille2 As Object
dans les déclarations (à placer tout en haut du module)