Copier fichier Excel et suppression d'onglet
Résolu/Fermé
jackfred
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
-
5 juin 2007 à 09:37
jackfred Messages postés 9 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 19 juin 2007 - 8 juin 2007 à 08:51
jackfred Messages postés 9 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 19 juin 2007 - 8 juin 2007 à 08:51
A voir également:
- Copier fichier Excel et suppression d'onglet
- Fichier rar - Guide
- Forcer suppression fichier - Guide
- Liste déroulante excel - Guide
- Fichier host - Guide
- Fichier iso - Guide
6 réponses
irem
Messages postés
164
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
9 octobre 2012
99
6 juin 2007 à 12:01
6 juin 2007 à 12:01
Application.DisplayAlerts = False
ThisWorkbook.Sheets(int_I).Delete
Application.DisplayAlerts = True
Irem
ThisWorkbook.Sheets(int_I).Delete
Application.DisplayAlerts = True
Irem
irem
Messages postés
164
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
9 octobre 2012
99
5 juin 2007 à 11:09
5 juin 2007 à 11:09
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
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
jackfred
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
5 juin 2007 à 14:23
5 juin 2007 à 14:23
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
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
jackfred
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
5 juin 2007 à 15:24
5 juin 2007 à 15:24
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jackfred
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
5 juin 2007 à 16:25
5 juin 2007 à 16:25
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
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
jackfred
Messages postés
9
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
19 juin 2007
8 juin 2007 à 08:51
8 juin 2007 à 08:51
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
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