Copier fichier Excel et suppression d'onglet
Résolu
jackfred
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
jackfred Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
jackfred Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Copier fichier Excel et suppression d'onglet
- Forcer suppression fichier - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Word et excel gratuit - Guide
- Fichier rar - Guide
6 réponses
Application.DisplayAlerts = False
ThisWorkbook.Sheets(int_I).Delete
Application.DisplayAlerts = True
Irem
ThisWorkbook.Sheets(int_I).Delete
Application.DisplayAlerts = True
Irem
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
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
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
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
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