Copier fichier Excel et suppression d'onglet

Résolu/Fermé
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
-
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
-
Bonjour,

Sur Excel, je cherche à copier un fichier et a suprimer les onglets dont le nom ne se trouve pas dans un tableau du fichier de base.
Le tout en VBA beinsur ;)

Est-ce possibel?
Qq'un aurait une idée?

Merci

Fred

6 réponses

Messages postés
164
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
9 octobre 2012
98
bien sur que c'est possible, je le ferais de la manière suivante :

1- Création d'une liste des onglets autorisés
2- Parcours des onglets et test avec instr

en résumé

Sub suppr_Onglets()
dim int_I as integer
dim str_aut as string
For int_I= 1 to 10 (si 10 entrée)
str_aut=str_aut & "\" & ThisWorkbook.Worksheets("Summary").Cells(int_i, 2).value
next int_i
'ensuite on parcours les onglets
for int_i=ThisWorkbook.Worksheets.Count to 1 step -1
if instr(1,ThisWorkbook.Worksheets(int_i).name,str_aut)=0 then
ThisWorkbook.Worksheets(int_i).delete
end if

'attention a ne pas supprimer le worksheet "summary"

pour enregistrer sous :

Do
fName = Application.GetSaveAsFilename
Loop Until fName <> False
ThisWorkbook.SaveAs Filename:=fName

Irem

next int_i

end sub
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007

Merci pour la réponse,

par contre les noms de onglets que je veux garder, je les mets dans "summary"?
A quel niveau?
Faut-il que je nome une plage de donnée?

le code ne concerne que le fichié créé?

Y-at-il un fichier qque part qui reprend ce type de code ?

Merci

fred
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007

J'ai modifié un peut le code...

Pour moi ca marche..

Est-ce algorithmatiquement et programatiquement ;) logique..



Sub creer()
Dim Nom As String
Dim int_I As Integer
Dim str_aut As String

Worksheets("Summary").Select
ActiveWorkbook.Save
Nom = ActiveWorkbook.Path & "\" & ActiveWorkbook.Sheets("Summary").Range("G1") & ".xls"
Nom2 = ActiveWorkbook.Sheets("Summary").Range("G1") & ".xls"
Worksheets("Summary").Select
ActiveWorkbook.SaveCopyAs Filename:=Nom

Workbooks.Open Nom
Workbooks(Nom2).Activate

For int_I = 1 To 10 '(si 10 entrée)
str_aut = str_aut & "\" & Workbooks(Nom2).Worksheets("Summary").Cells(int_I, 2).Value
Next int_I
'ensuite on parcours les onglets
For int_I = Workbooks(Nom2).Worksheets.Count To 1 Step -1
If InStr(str_aut, Workbooks(Nom2).Worksheets(int_I).Name) = 0 Then
Workbooks(Nom2).Worksheets(int_I).Delete
End If
'attention a ne pas supprimer le worksheet "summary"
Next int_I

Workbooks(Nom2).Save
Workbooks(Nom2).Close
End Sub
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007

Re

Dans la suppression d'un onglets, j'ai une boite de dialogue qui demande si je veux bien suprimer l'onglet...
Est-il possible par code ou autre d'éviter que cette boite de dialogue ne s'affiche. (en gros d'accepter directement la suppression sans demander l'autorisation)???

Merci

Fred
Messages postés
164
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
9 octobre 2012
98
Application.DisplayAlerts = False
ThisWorkbook.Sheets(int_I).Delete
Application.DisplayAlerts = True

Irem
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007

Superbe merci bcp

En utilisant que la ligne

Application.DisplayAlerts = True

Ca marche tres bien..

Merci infiniement.

fred

-----------

Pour récapituler, il s'agissait au départ de créer un fichier avec seulement certains onglets définis ds un tableau du fichier source.
En testant un premier code, fonctionnant par copier coller, les macro du fichier source n'était pas gardées, la mise en forme des cellules non plus.
L'autre solution consistait à copier le fichier source sous un autre non et à suprimer les onglets ne figurant pas dans le tableau de ce fichier source.

Enfin, il s'avère qu'à la suppression d'un onglet, un message d'alerte s'affiche.
Se qui peut etre ennuyeux à devoir attendre que ces derniers apparaissent pour les valider.
Du coup il a fallu créer un code pour annuler ceci..


Un gd merci à IREM pour son aide et sa connaissance ;).

Fred