zewriggles
Messages postés11Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention30 avril 2009
-
24 avril 2009 à 17:04
zewriggles
Messages postés11Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention30 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
zewriggles
Messages postés11Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention30 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?
zewriggles
Messages postés11Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention30 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