[Résolu][VBA-Excel]Problème d'affichage de feuille

Problème d'affichage de feuille [Résolu][VBA-Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 26-08-2008 à 14:31:11    

Alors voilà, en essayant de faire une listbox qui permettrait de changer de page, je tombe toujours avec une erreur que je ne parviens pas à résoudre.
 
Voilà mon programme (j'ai fait ma listbox dans ma userform):
 

Code :
  1. Sub ListBox1_Change()
  2. If ListBox1.Selected(0) = True Then   -<Erreur Ici  :"Erreur d'exécution 424 : Objet Requis"
  3. Call Affichage_Feuille1
  4. ElseIf ListBox1.Selected(1) = True Then
  5. Call Affichage_Feuille2
  6. Else: Call Affichage_Feuille3
  7. End If
  8. End Sub


 
Voilà les procédures d'affichage :

Code :
  1. Sub Affichage_Feuille1()
  2. Dim MaFeuille
  3.    MaFeuille = "Feuil1"
  4.    Sheets(MaFeuille).Visible = xlSheetVisible
  5.    Sheets(MaFeuille).Activate
  6. End Sub
  7. Sub Affichage_Feuille2()
  8. Dim MaFeuille
  9.    MaFeuille = "Feuil2"
  10.    Sheets(MaFeuille).Visible = xlSheetVisible
  11.    Sheets(MaFeuille).Activate
  12. End Sub
  13. Sub Affichage_Feuille3()
  14. Dim MaFeuille
  15.    MaFeuille = "Feuil3"
  16.    Sheets(MaFeuille).Visible = xlSheetVisible
  17.    Sheets(MaFeuille).Activate
  18. End Sub


 
 
J'ai vérifié les dénominations, pas de problème, mais ça ne fonctionne pas (j'ai rempli ma listbox à part).
 
Merci d'avance d'un potentiel coup de main.


Message édité par Venceslas2010 le 27-08-2008 à 16:15:40
Reply

Marsh Posté le 26-08-2008 à 14:31:11   

Reply

Marsh Posté le 27-08-2008 à 13:53:52    

Essaye plutot en utilisant une seule fonction Affichage_Feuille. En clair, fais seulement un

Code :
  1. Sub Affichage_Feuille2(byval feuil as string)
  2.    Sheets(feuil).Visible = xlSheetVisible
  3.    Sheets(feuil).Activate
  4. End Sub


Et ensuite, pour l'appeler, plutot de que verifier si ta listbox est soit de valeur 1 soit de valeur 2 soit de valeur 3, passe juste sa valeur en parametre de la fonction afficher_feuille :

Code :
  1. Sub ListBox1_Change()
  2. Dim feuil as string
  3. feuil = ListBox1.value
  4. afficher_feuille(feuil)
  5. End Sub


Reply

Marsh Posté le 27-08-2008 à 14:25:22    

Hum, alors, en utilisant ta méthode, j'aboutis à la même erreur : erreur 424 (j'ai bien remplacé afficher_feuille par Affichage_Feuille 2), mais j'arrive de nouveau à un problème d'objet...
A la ligne 3 où tu a ttribues à la "feuil" la valeur de la List_Box1...
Etrange, n'est-il pas?
Donc en résumé, toujours coincé par la même erreur.

Reply

Marsh Posté le 27-08-2008 à 14:35:20    

J'ai oublié de preciser qu'il fallait mettre sheets(nom_de_la_feuille_où_y'a_la_lb) avant listbox1.value
Voici une boucle que j'utilise et qui me permet de faire une comparaison entre des noms inscrits dans des cellules et la valeur séléctionnée dans la listbox, et de recuperer le numero de ligne correspondant, si cela peut t'aider...

Code :
  1. l = 0
  2. While Sheets(fParametres).Range("Redacteur" ).Offset(1 + l, 0).Value <> Sheets(fParametres).lbArchi.Value
  3.     l = l + 1
  4. Wend


Le Range("Redacteur" ).Offset(1 + l, 0) me permet de selectionner la cellule qui a un décalage de 1+l ligne par rapport a la cellule que j'ai nommé "Redacteur"...
 
J'espere que ce coup-ci sera la bonne... ;)


Message édité par Moonschild le 27-08-2008 à 14:36:33
Reply

Marsh Posté le 27-08-2008 à 14:52:43    

Alors, ça ne fonctionne toujours pas...
Voilà mes lignes de code
 
 

Code :
  1. 1.Sub Affichage_Feuille2(ByVal feuil As String)
  2. 2.   Sheets(feuil).Visible = xlSheetVisible
  3. 3.   Sheets(feuil).Activate
  4. 4.End Sub
  5. 1.Private Sub ListBox1_Change()
  6. 2.Dim feuil As String
  7. 3.feuil = Sheets(Feuil1).ListBox1.Value
  8. 4.Affichage_Feuille2 (feuil)
  9. 5.End Sub


 
 
 
Erreur à la ligne 3  : Erreur 13 :"Incompatibilité de type"...
 
 
 
Pour éclaircir le problème, je vais t'expliquer ce que je cherche à faire :
Alors, en fait je crée une LB dans une Userform, car je voudrais qu'elle reste au premier plan pendant qu'à l'arrière s'affiche la feuille qui porte le même nom que ce qu'il y a de sélectionné dans la LB... C'est pour ça, quand tu me demandes sur quelle page se trouve la LB, je ne peux pas vraiment répondre...  
 
Voilà,
Merci d'avance.


Message édité par Venceslas2010 le 27-08-2008 à 15:01:38
Reply

Marsh Posté le 27-08-2008 à 14:57:15    

Ah d'accord, en fait je pensais que la listbox était intégrée a une feuille... Dans ce cas, si tu l'as fais dans une userform, replace "sheets("feuil1" )" par le nom de ton userform...  
En théorie ca devrait fonctionner, le cas échéant, j'approfondirai afin de te trouver une solution, tiens moi au courant....
PS: afin d'eviter les foudres des moderateurs, insere une balise "[code]" au debut de ton code et une balise fermante a la fin ;)
 
Edit : Le code va evidement dans le code de ton userform....


Message édité par Moonschild le 27-08-2008 à 14:58:38
Reply

Marsh Posté le 27-08-2008 à 15:06:45    

Alors, ça progresse, c'est plus la même erreur : à la même ligne, cette fois-ci, j'ai "Erreur 94: utilisation incorrecte de Null"...
J'ai remplacé Sheets (...) par UserForm1 (me casse pas la tête à changer les noms, moi)...
Mais ça mène à une autre erreur...
Ca va finir par marcher...
 
EDIT: Ca marche, c'st bon, merci beaucoup...
Hum, petite question au passage, sais-tu s'il est possible de faire la même chose à la seule différence que là, il n'est plus nécessaire de cliquer sur la sélection après avoir fait tourner la liste (par exemple, là je dois faire tourner la liste puis cliquer pour que ça marche, mais je voudrais que ça se fasse automatiquement quand je tourne... Merci d'avance!)


Message édité par Venceslas2010 le 27-08-2008 à 15:17:07
Reply

Marsh Posté le 27-08-2008 à 15:17:45    

Voila ce que j'ai fais : J'ai ouvert un nouveau fichiers xls, et j'ai créé dans les macro un userform que j'ai, comme toi, laissé avec le nom d'origine. Dans le code de ce userform1(que j'active avec un bouton dans la feuil1 par un "userform1.show" ), voila ce que j'ai mis

Code :
  1. Option Explicit
  2. Private Sub ListBox1_Click()
  3.     Dim feuil As String
  4.     feuil = Me.ListBox1.Value
  5.     Sheets(feuil).Select
  6. End Sub
  7. Private Sub UserForm_Activate()
  8.     Me.ListBox1.AddItem "feuil1"
  9.     Me.ListBox1.AddItem "feuil2"
  10.     Me.ListBox1.AddItem "feuil3"
  11. End Sub


Ceci permet de changer de feuille en cliquant directement sur le nom de la feuille dans la listbox... ce n'est pas exactement ce que tu demandes, mais cette base fonctionne, a toi de voir si tu peux l'adapter a ton probleme ;)


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 27-08-2008 à 15:40:06    

C'était exactement le résultat auquel j'arrivais avec mon code quelque peu bancal.
Donc Merci beaucoup, j'essaierai de ma débrouiller pour l'adapter...
Pour le bouton j'y ai pensé aussi (les grands (enfin "grands" ) esprits se rencontrent) donc de ce point de vue là pas de problème.
Merci encore!

Reply

Marsh Posté le 27-08-2008 à 15:42:24    

Aucun probleme ;)
On a enfin réussit a avoir ce que tu voulais ^^
PS: un p'tit [Résolu] dans ton titre de post, ca peut servir a d'autres :)
Bon courage pour la suite ;)


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 27-08-2008 à 15:42:24   

Reply

Marsh Posté le 27-08-2008 à 16:16:14    

OK Merci Bonne continuation et bon courage à toi de même.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed