[Résolu par Efgé] Supprimer le module lors de la sauvegarde

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous :)

avec la macro ci-dessous, je n'arrive pas à supprimer le module lors de la sauvegarde(Enregistrer sous).

Code:
Sub Enrg_Sous()
Dim WbSource, WbDest As Workbook, chemin As String, nom As String
Application.ScreenUpdating = False
Set WbSource = Workbooks("Tableau.xls")
chemin = "C:\Users\" & Environ("username") & "\Desktop\Macro Test\"
With WbSource
.Sheets("Data").Range("a1:i37").AutoFilter Field:=1, Criteria1:=ActiveCell, Operator:=xlAnd
.Sheets("Data").Range("a2:i37").SpecialCells(xlCellTypeVisible).Copy .Sheets("Report").Range("a65536").End(xlUp)(2)
.Sheets("Report").Range("A:I").Columns.AutoFit
.Sheets("Report").Activate
nom = Activesheet.Range("a2")
ActiveWorkbook.SaveAs Filename:=chemin & nom & ".xls", FileFormat:=xlExcel8

Application.DisplayAlerts = False
ActiveWorkbook.Sheets("Data").Delete
'ActiveWorkbook.VBProject.VBComponents.Remove _
ActiveWorkbook.VBProject.VBComponents.Item("Module1")
ActiveWorkbook.Save
Application.Quit
End With
End Sub

Mais, ce qui me surprend le plus, c'est que la feuille "Data" est bien supprimée mais pas le module. J'aimerais y inclure aussi une condition: si le module n'existe pas, ne pas prendre en considération la ligne de suppression.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Supprimer le module lors de la sauvegarde

Bonjour
Sans exemple..... une idée:
Pourquoi faire simple quand on peux faire compliqué.
VB:
Sub Enrg_Sous()
Dim WbSource, WbDest As Workbook, chemin As String
Application.ScreenUpdating = False
Set WbSource = Workbooks("Tableau.xls")
chemin = "C:\Users\" & Environ("username") & "\Desktop\Macro Test\"
With WbSource
    .Sheets("Data").Range("a1:i37").AutoFilter Field:=1, Criteria1:=ActiveCell, Operator:=xlAnd
    .Sheets("Data").Range("a2:i37").SpecialCells(xlCellTypeVisible).Copy .Sheets("Report").Range("a65536").End(xlUp)(2)
    .Sheets("Report").Range("A:I").Columns.AutoFit
    .Sheets("Report").Copy
 End With
ActiveWorkbook.SaveAs Filename:=chemin & nom = ActiveSheet.Range("a2") & ".xls", FileFormat:=xlExcel8
Application.ScreenUpdating = True
End With
Cordialement
 

Lone-wolf

XLDnaute Barbatruc
Re : Supprimer le module lors de la sauvegarde

Rebonjour

@ Efgé: une correction de la correction de la ligne

ActiveWorkbook.SaveAs Filename:=chemin & nom = ActiveSheet.Range("a2") & ".xls" > Erreur Chemin

Code:
Sub Enrg_Sous()
Dim WbSource, WbDest As Workbook, chemin As String
Application.ScreenUpdating = False
Set WbSource = Workbooks("Tableau.xls")
chemin = "C:\Users\" & Environ("username") & "\Desktop\Macro Test\"
With WbSource
    .Sheets("Data").Range("a1:i37").AutoFilter Field:=1, Criteria1:=ActiveCell, Operator:=xlAnd
    .Sheets("Data").Range("a2:i37").SpecialCells(xlCellTypeVisible).Copy .Sheets("Report").Range("a65536").End(xlUp)(2)
    .Sheets("Report").Range("A:I").Columns.AutoFit
    .Sheets("Report").Activate
    ActiveSheet.Copy
    nom = ActiveSheet.Range("a2")
   ActiveSheet.SaveAs Filename:=chemin & nom & ".xls", FileFormat:=xlExcel8
 End With
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.Quit
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : Supprimer le module lors de la sauvegarde

Re

Dans le fichier, j'ai deux macros maintentant (Enregistrer-sous et Copier à la suite dans le classeur créé)

Il y a moyens d'en faire qu'une seule à l'aide d'une condition? Exemple:

Si le fichier n'existe pas
Créer le fichier
Sinon
Ouvrir le fichier et copier à la suite.
 

Pièces jointes

  • Tableau.xls
    40.5 KB · Affichages: 28
  • Tableau.xls
    40.5 KB · Affichages: 22

Efgé

XLDnaute Barbatruc
Re : Supprimer le module lors de la sauvegarde

Re
Bon, pourrais tu expliquer ce qu tu veux?
S'agit il de faire un classeur par nom en le créant si il n'éxiste pas et d'ajouter les données si le classeur existe déja ?
(Et ce pour chaque nom)
Cordialement
 

Lone-wolf

XLDnaute Barbatruc
Re : Supprimer le module lors de la sauvegarde

Re Efgé,

Et si tu supprimais les noms dont tu n'as pas besoin dans le tableau source?

Si tu supprime les données en trop, comment ferais-tu par calculer le CA, la vente des produits par catégorie etc. de chaque employé??

Et ce pour chaque nom
Bein oui, c'est bien ce que font mes deux macros.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Supprimer le module lors de la sauvegarde

Re

Si c'est pour chaque nom, c'est pour tous les noms.
Si il faut faire des choix, il faut comprendre comment tu fait le choix.

Si tu peux faire des tris "a la main" tu peux masquer les lignes superflux et on ne prendra en compte que les lignes visibles.

Ou alors, ne prendre que la cellule que tu auras sélectionnée, mais c'est pas très propre....


Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 499
Messages
2 089 000
Membres
104 002
dernier inscrit
SkrauzTTV