santiago06
Messages postés21Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention25 janvier 2008 9 janv. 2008 à 16:48
bonjour,
a partir d'un userform je veux avec soit une liste déroulante soit une listbox pouvoir afficher une feuille d'un autre classeur .
Voici le code que j'utilise (code trouvé sur forum)
Dim Ap As New Application
Private Sub Form_Load()
Ap.Visible = False
Ap.Workbooks.Open ("Agenda.xls")
Dim W As Worksemaine
For Each W In Ap.Workbooks("Agenda.xls").Worksemaine
Combo1.AddItem W.Name
Next W
End Sub
Private Sub ComboBox1_Click()
Ap.Workbooks.Open ("f:\institut\projet access\Agenda.xls")
Ap.ActiveWorkbook.Worksemaine(Combo1.Text).Activate
"""cette ligne me génère un code erreur 424""""
Ap.Visible = True
Set Ap = Nothing
End
End Sub
apres pas mal de recherche sur le forum je ne trouve pas de solution
si on peut me dire ce qui ne va pas dans cette ligne
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 9 janv. 2008 à 22:54
Dim Ap As New Application
Écris plutôt
Dim Ap As New Excel.Application
Dim Bk as Excel.Workbook ' déclaration d'un objet ClasseurPrivate Sub Form_Load()
Ap.Visible = False
Ap.Workbooks.Open ("Agenda.xls")
Set Bk = ActiveWorkbook ' assignation du classeur à la variable
<strike>Dim W As Worksemaine</strike> ???
Dim W As Excel.Worksheet ' déclaration d'un objet Feuille
For Each W In Bk 'lire toutes les feuilles W du classeur Bk
Combo1.AddItem W.Name
Next W
End Sub
Private Sub ComboBox1_Click()
Ap.Workbooks.Open ("f:\institut\projet access\Agenda.xls")
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 janv. 2008 à 23:29
Es-tu bien certain que la feuille du deuxième fichier porte exactement le même nom que ce que tu sélectionnes dans le Combobox, soit le nom du premier fichier ?
Ap.ActiveWorkbook.Sheets(Combo1.Text).Activate
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
santiago06
Messages postés21Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention25 janvier 2008 11 janv. 2008 à 20:58
Bonsoir,
Pour MPi,merci tu avais raison problème de nom de feuille.
par contre maintenant je n'affiche qu'une feuille ,si je veux afficher la feuille choisie dans la liste il faut que je change le nom dans le code.
j'ai donc essaye de rajouter une ligne de code par semaine,le problème est que la dernière ligne de code prime sur les autres.c'est toujours la 4 qui s'affiche.
Avant j'ai essaye avec comme 2ème ligne seulement Sheets("semaine2")
erreur de syntaxe même avec . Activate
Voici la fonction en entière
For Each W In Bk 'lire toutes les feuilles W du classeur Bk
semaine.AddItem W.feuil
J'ai essaye aussi de faire plusieurs combinaisons avec cette ligne sans grands changements.
Next W
End Sub
Private Sub ComboBox1_Click()
Ap.Workbooks.Open ("f:\institut\projet access\Agenda2.xls")
Ap.ActiveWorkbook.Sheets("semaine1").Activate
Ap.Visible = True
Set Ap = Nothing
End
End Sub
j'arrive grâce a toi a afficher déjà le document voulu et je remercie encore une fois j'avance .
je continue a chercher un moyen mais si tu as une idée je suis preneur.
merci d'avance
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 janv. 2008 à 23:23
OK, on repart du début...
À voir le Form_Load(), j'imagine que tu travailles sous VB6 (pas seulement Excel) et que tu ouvres 2 fichiers Excel qui se nomme Agenda.xls et Agenda2.xls, mais dans 2 répertoires différents...(?)
C'est ça ?
Peux-tu expliquer ce que tu cherches à faire exactement avec ces 2 fichiers ?
Pourquoi inscrire les noms des feuilles dans une liste ?
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
santiago06
Messages postés21Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention25 janvier 2008 13 janv. 2008 à 17:35
bonjour,
je ne veux ouvrir qu'un seul fichier excel. les agenda.xls et agenda2.xls sont des fichiers d'essais pour mettre au point les codes.
je veux a partir d'un userform pouvoir afficher une feuille d'un classeur que j'appelle agenda par exemple.je veux pouvoir choisir la semaine qui m'interesse à l'aide d'une liste déroulante.
aujourd'hui j'arrive à afficher une feuille du classeur mais une seule et toujours la même.j'affiche une autre feuille en changeant le numéro de la feuille dans la ligne suivante.
santiago06
Messages postés21Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention25 janvier 2008 14 janv. 2008 à 00:05
Bonsoir,
pour MPi je me suis réjuit trop vite ton code marche pour le classeur actif mais pas s'il est passif.
j'ai toujours mon problème d'une seule feuiile éditée quelque soit le numéro choisit.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 janv. 2008 à 00:29
Si tu dois travailler avec plusieurs fichiers, il te faudra déclarer un objet Workbook que tu assignes au classeur passif
Private Sub ComboBox1_Click()
objWkBook.Sheets(ComboBox1.Text).Activate
End Sub
Private Sub UserForm_Initialize()
Dim Ws As Worksheet
'vérifier auparavant si le fichier est bien ouvert
For Each Ws In objWkBook.Worksheets
ComboBox1.AddItem Ws.Name
Next
End Sub
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI