VBA supprimer des feuilles

Résolu
zewriggles Messages postés 11 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 30 avril 2009 - 24 avril 2009 à 17:04
zewriggles Messages postés 11 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 30 avril 2009 - 28 avril 2009 à 16:30
Bonjour, je suis débutant dans le VBA même si j'ai eut quelques cours il date de longtemps donc c'est comme si il n'y avait rien . J'ai un programme qui ouvre deux fixhiers excel dans lesquels je dois retirer plusieurs feuille mais ne garder que les feuilles qui s'apelle soit "sem16" ou "Feuil1" et de renomer ces derniéres par "Feuil1" quand c'est pas déjà le cas. bref voici mon code dîtes moi quel est le pb SVP (vous verrez qu'il y a quelques essais en commentaires mais ce n'est qu'une légére partie de tout ce que j'ai pu tester)
        Dim wbExcel As excel.Workbook 'Classeur Excel
        Dim wsExcel As excel.Worksheet 'Feuille Excel
        Set wbExcel = appExcel.Workbooks.Open("cheminfichier")
        i = 1
        nomfeuille = ""
        nbrfeuille = wbExcel.Worksheets.Count
        Do While i - 1 <> nbrfeuille
        nbrfeuille = wbExcel.Worksheets.Count
        MsgBox ("nbrfeuille = " & nbrfeuille)
            Set wsExcel = wbExcel.Worksheets(i)
            If wsExcel.Name <> "sem" & sem And wsExcel.Name <> "Feuil1" Then
                'nomfeuille = wbExcel.Worksheets(i)
                wsExcel.Delete
                'nomfeuille = nomfeuille & ", " & i
                Worksheets(i).Delete
            Else
                wsExcel.Name = "Feuil1"
                wbExcel.Sheets("Feuil1").Copy
            End If
                i = i + 1
        Loop

Le pb est surtout que je n'arrive a bien activé les feuilles que je veux supprimer car ce programme marche sur ma feuille où se trouve mon bouton.

a envie de chocolat

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 avril 2009 à 05:40
Salut
Essaye un truc du genre (que tu arrangeras à ta sauce) :
    Dim maFeuille As Worksheet
    For Each maFeuille In Sheets
        If maFeuille.Name <> "Feuil1" Then maFeuille.Delete
    Next

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
zewriggles Messages postés 11 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 30 avril 2009
27 avril 2009 à 10:37
Avec ce que tu m'avais proposé, j'ai écrit ceci :

        i = 1
        Dim maFeuille As Worksheet
        For Each maFeuille In wbExcel.Worksheets
        Set wsExcel = wbExcel.Worksheets(i)
        nbrfeuille = wbExcel.Worksheets.Count
        MsgBox ("nbrfeuille = " & nbrfeuille)
            If wsExcel.Name = "sem" & sem Then
                wsExcel.Name = "Feuil1"
            End If
            If maFeuille.Name <> "Feuil1" And maFeuille.Name <> "sem" & sem Then
                maFeuille.Delete
            Else
                i = i + 1
            End If
        Next

le probléme est que ma messagebox m'écrit qu'il y a toujours 6 feuille dans mon classeur alors qu'il devrait diminuer pratiquement à chaque tour pour atteindre le chiffre 1. Est-ce que tu saurais pourquoi?

a envie de chocolat
3
zewriggles Messages postés 11 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 30 avril 2009
28 avril 2009 à 16:30
Je viens de comprendre mon probléme j'espére que vouspourrez répondre à celui-ci, j'ai écrit ces lignes de prog pour faire des tests et le probléme vient du fait que mon classeur que j'ai ouvert n'est pas actif donc ces lignes supprime les feuilles où se trouve mon boutton de lancement du programme. Est-ce que vous seriez comment activer un classeur que l'on vient d'onvrir??   

Dim appExcel As excel.Application 'Application Excel
Dim wbExcel As excel.Workbook 'Classeur Excel
Dim wsExcel As excel.Worksheet 'Feuille Excel
Set wbExcel = appExcel.Workbooks.Open("[null \\dataserverSaran\.............\Home\DECISIONNEL\Programme] SAS\Charlie\Dossier\Fichier excel\recap_042009.xls")
     i = 1
        Do While i <> nbrfeuille
            nbrfeuille = wbExcel.Worksheets.Count
            Set wsExcel = wbExcel.Worksheets(i)
            If wsExcel.Name <> "sem" & sem And wsExcel.Name <> "Feuil1" Then
                'nomfeuille = wbExcel.Worksheets(i)
                wsExcel.Delete
                'nomfeuille = nomfeuille & ", " & i
                Worksheets(i).Delete
            Else
                i = i + 1
                wsExcel.Name = "Feuil1"
            End If
        Loop

a envie de chocolat
0
Rejoignez-nous