Programmation Visual Basic sous Excel

[Résolu]
Signaler
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012
-
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012
-
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

Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
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:
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

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
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

Je valide la première réponse car avec:

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

MT Productions
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

Merci je testerais ça ce soir et je te tiens au courant, merci pour cette réponse.

MT Productions
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

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
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

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
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

Je maitrise pas trop les modules comment on pourrais le faire en code simple?

MT Productions
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

Oui mais comment fait on que si on clique sur Supprimer qui me lance cette fonction?

MT Productions
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

??!! jz vois mais ça ne marche pas pourtant je suis sur de bien tous placé...

MT Productions
Messages postés
207
Date d'inscription
lundi 26 septembre 2005
Statut
Membre
Dernière intervention
9 juillet 2012

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