Programmation Visual Basic sous Excel

Résolu
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012 - 27 mars 2007 à 18:10
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012 - 28 mars 2007 à 22:25
Bonjour, j'ai grand besoin d'aide pour deux choses que je ne sais pas faire (manque de pratique).
J'ai un classeur Excel qui comporte des pages dont le noms des pages sont: "Accueil";"Page vierge" et des pages "Feuil1";Feuil 2"; "Feuil 3";..... .
J'aimerais savoir comment on pourrais faire afficher tous les noms des pages sauf des pages "Accueil" et "Page vierge" dans une Zone de liste et que si je double clique sur un nom d'une page que cette page s'affiche.
Cette Zone de liste se trouvera dans un User Form et à côté de cette zone de liste il y aura un bouton "Supprimer" et que si je clique sur "Supprimer" que celà me supprime la feuille de mon classeur que j'aurais sélectioner dans ma Zone de liste en cliquant une seule fois dessus.
Voilà j'espère que j'aurais été asser clair pour que vous puissiez m'aider.
Si vous pouvez m'envoyer un code bien expliquer ou un exemple.
Merci d'avance pour ma deuxième question j'attendrai la réponse de la prémière.

MT Productions

16 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
27 mars 2007 à 22:34
Salut,

Voilà un bout de code à étoffer ......
 Private SubCommandButton1_Click()

  ' On vérifie que le classeur contient au moins une feuille

  If Sheets.Count > 1 Then

    ' Bon pas de confirmation on efface directement

    Application.DisplayAlerts = False

    ' Si oui on efface

    Sheets(ListBox1.Text).Delete

    ' On met à jour la liste

    If ListBox1.ListCount > = 1 Then

      ListBox1.RemoveItem (ListBox1.ListIndex)

    End If

    Application.DisplayAlerts = True

  Else

    MsgBox " Un Classeur doit contenir au moins une feuille !!!!"

  End If

End Sub

Private Sub

CommandButton2_Click()  

Unload Me End Sub

Private Sub

UserForm_Activate()  

Dim i As Long   With

ThisWorkbook

   

For i = 1 To .Sheets.Count      

' Attention select case respecte la case donc utiliser Lcase ou autre      

Select Case LCase(.Sheets(i).Name)      

Case "accueil"        

' On ignore cette feuille      

Case "page vierge"        

' Et celle là aussi      

Case Else        

' les autres sont ajoutées dans la liste        

ListBox1.AddItem .Sheets(i).Name      

End Select     Next

  End With

End Sub

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
28 mars 2007 à 08:34
Salut, autre façon:

Private Sub UserForm_initialize()


Dim Wh As Worksheet


For Each Wh In Worksheets


If Wh.Name <> "Accueil" And Wh.Name <> "Page vierge" Then



'Ajout dans un combobox
ComboBox1.AddItem Wh.Name



'Ajout dans un listbox
ListBox1.AddItem Wh.Name


End If


Next


End Sub

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 18:36
J'ai trouveais pour afficher la page quand je double clique sur ma zone liste.

Sheets(Listefiches.Text).Select
Range("A1").Select
Unload Me

J'ai mis ça dans le code de la zone de liste.

MT Productions
3
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 18:39
Je valide la première réponse car avec:

ListBox1.RemoveItem (ListBox1.ListIndex)
celà nous permet d'actualiser la liste box

MT Productions
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
28 mars 2007 à 20:06
Pas compliqué, quand tu es sur ta fenêtre De programmation à coté de l'icone pour revenir à Ecxel (à droite de la barre d'outils) tu clique sur la flèche et tu choisi module au lieu de UserForm c'est tout ensuite tu colle ta fonction dedant elle sera visible de tout tes feuilles et modules

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
28 mars 2007 à 22:21
pfffffffff suis fatigué là, c'est ma faute
If FeuilleExiste(TextBox1.Text) And Sheets.Count > 1 Then Sheets(TextBox1.Text).Delete

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 07:56
Merci je testerais ça ce soir et je te tiens au courant, merci pour cette réponse.

MT Productions
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
28 mars 2007 à 18:11
Houla la ......
Ou avais-je la tête, bien sur c'est beaucoup plus simple, sans commentaire, par contre je préfère le select case au If plus simple a mon avis.
Allez zou faut y retourner

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 18:21
Merci pour toutes ces réponses, pour faire afficher les noms des fiches dans une liste box je choisis la deuxième réponse. En revanche la réponse de Drikce06 me donne pas la solution pour supprimer une fiche quand je la selection de ma liste et que je clique sur supprimer je vais voir sur la première réponse peut être que je dois combiner les deux.
Merci quand même la deuxième question va bientôt arriver.
Merci et milles merci encore.

MT Productions
0
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 18:48
Voici ma deuxième question, dans un User Form j'ai un bouton supprimer et un textbox.
Quand je tape le nom d'une feuille dans le textbox et que je clique sur supprimer celà me supprimer la fiche; jusque là normal. Mais si je fais une faute de frappe c'est à dire que si je met un nom de feuille qui n'existe pas dans mon classeur cela me provoque un bug et une demande "Fin" ou "Réparer" alors que je voudrais que celà m'affiche un msgbox critical.

MT Productions
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
28 mars 2007 à 19:47
Lut, voilà une fonction bien utile.

 'A METTRE DANS UN MODULE

Function

FeuilleExiste(Nom$) As Boolean  

On Error Resume Next  

FeuilleExiste = Sheets(Nom).Name <> ""  

Err.Clear End Function

'ET ICI L'APPEL DE TA FONCTION

If

FeuilleExiste(Textbox1.Text) And Sheets.Count > 1 Then Sheets(Textbox1.Text).Remove

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 19:58
Je maitrise pas trop les modules comment on pourrais le faire en code simple?

MT Productions
0
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 20:20
Oui mais comment fait on que si on clique sur Supprimer qui me lance cette fonction?

MT Productions
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
28 mars 2007 à 21:38
Bé alors !!!!!
Je te l'ai dis
 If FeuilleExiste(Textbox1.Text) And Sheets.Count > 1 Then Sheets(Textbox1.Text).Remove
ce code et à mettre dans la sub de ton bouton supprimer

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 21:44
??!! jz vois mais ça ne marche pas pourtant je suis sur de bien tous placé...

MT Productions
0
Triboutmatthieu Messages postés 207 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 9 juillet 2012
28 mars 2007 à 22:25
Merci bien grâce à ton aide et à tous d'ailleurs j'ai pu mettre à therme mon programme reste à le protéger.
Merci encore. Bye.

MT Productions
0
Rejoignez-nous