[ VBA EXCEL] Enregistrement Macro

cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006 - 10 juil. 2006 à 10:54
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006 - 11 juil. 2006 à 11:38
Bonjour,

Pour réaliser la traçabilité de pièces, je réalise un archivage à chaque fois qu'une pièce sort de la ligne d'assemblage.
Pour Réaliser ceci , j'appelle un fichier excel archive avec une macro qui me permet de charger mes données de la pièce puis d'enregistrer un nouveau fichier avec le nom de la piece. ( fonction SaveAs).
Le problème est que la macro est enregistrée avec le nouveau fichier que j'enregistre.
Je ne voudrais pas que cette macro soit enregistrée avec.
Comment faire pour enregistrer mon nouveau fichier Excel avec seulement mon tableau Excel et pas la macro?

Merci à vous.

Mike

18 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 juil. 2006 à 12:42
Salut,

alors ajoute un nouveau classeur (Application.WorkBooks.Add)
Et copie te feuille vers le nouveau classeur.

Sinon là je l'ai pas sur moi mais demain je te mettrai le code pour supprimer du code (ou / et un module)

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
10 juil. 2006 à 13:58
Je vois ta petite feinte mais je peux pas utiliser cette technique.
Je dois avoir un fichier Excel par code commande pour ma tracabilité.
J'attends que tu me mettes le code pour supprimer du code.

Bon aprem.

A+

Mike
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 juil. 2006 à 14:01
Merci & bonne Aprem à toi aussi. Je te met le code demain matin.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 06:32
Salut,

' rajoute la référence suivante :
' Microsoft Visual Basic for Applications 6.0 Extensibility
' (Program Files\Microsoft Visual Studio\VB98\VB6EXT)


'*** 1 ERE POSSIBILITE : SUPPRESSION OBJET ***
Sub EffaceModule()

Workbooks.Open ("C:\Documents and Settings\Nic\Bureau\Test Suppr.xls") _
On Error GoTo ErrHandle

ActiveWorkbook.VBProject.VBComponents.Remove _
ActiveWorkbook.VBProject.VBComponents("Module1")

MsgBox "Le Module a été suprimer"
ActiveWorkbook.Close True
Exit Sub

ErrHandle:
MsgBox "ERREUR dans la suppression du Module", vbOKOnly + vbCritical

End Sub

'*** 2 NDE POSSIBILITE : SUPPRESSION CODE DANS OBJET ***
Sub EffaceCodeObjet()

Workbooks.Open ("C:\Documents and Settings\Nic\Bureau\Test Suppr.xls") _
On Error GoTo ErrHandle

' l'exemple au dessous c'est pour effacer le code dans Module1 (tu peux faire pareil
'en remplacant 'Module1' par 'UserForm1', 'Class1'.(met les noms que tu as mis))

With ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 1, .CountOfLines
End With

MsgBox "Le code du Module a été suprimer"
ActiveWorkbook.Close True
Exit Sub

ErrHandle:
MsgBox "ERREUR dans la suppression du code du Module", vbOKOnly + vbCritical

End Sub

'*** 3 EME POSSIBILITE : SUPPRESSION CODE DANS THISWORKBOOK_OPEN ***
Sub EffaceCodeThisWorkBook()
Dim xlApp As New Excel.Application
Dim xlBook As Workbook

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("C:\Documents and _
Settings\Nic\Bureau\Test Suppr.xls")

xlApp.Visible = True
xlBook.Close True
Set xlBook = Nothing
Set xlApp = Nothing

'En utilisant cette procédure pour effacer dans ThisWorkbook_Open,
'il faut absolument placer ce code ci-dessous dans ThisWorkbook_Open
'du classeur original, en premier dans la pocédure

'If Application.Visible = False Then
' With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
' .DeleteLines 1, .CountOfLines
' End With
'End If

End Sub


'Voilà, j'y ai passé 2 heures avec les test mais je te remercie, car je n'avais que lit
'ces procédures sans les tester, et ça m'a appris des choses.
'D'ailleurs, je l'ai mis en source. ;-))

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 08:34
Merci beaucoup pour cette belle recherche.
J arrive pas a appliquer la troisieme methode.
Ou place tu ce code dans ta macro "ThisWorbook"?
J'ai fait plusieurs essais mais j'y arrive pas. C'est trop la lutte.
Merci

Private Sub Workbook_Open()

-------------
-------------

------------

Fichier = "C:\Temp\Archivage_Chariots" & CStr(ReferenceChassis) & " du " & _
Replace(CStr(Format(Date, vbShort)), "/", "_") & ".xls"


ActiveWorkbook.SaveAs Filename:=Fichier
       
Application.DisplayAlerts = False
Application.Quit

End Sub

Mike
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 08:50
Comment rajouter cette réference aussi s'il te plait?
Comme tu peux le constater , je ne sui spas expert en VBA.
Merci.

a+

Mike
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 08:58
Salut,

dans l'éditeur VB d'Excel, dans le menu Outils, référence.
(c'est par ordre alphabétique)

Ensuite, dans ton fichier 'original', place

If Application.Visible = False Then
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
End With
End If

Dans ThisWorkBook_Open, en tout premier (avant tes codes)

Le reste :

Dim xlApp As New Excel.Application
Dim xlBook As Workbook

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("C:\Documents and _
Settings\Nic\Bureau\Test Suppr.xls")

xlApp.Visible = True
xlBook.Close True
Set xlBook = Nothing
Set xlApp = Nothing


doit être placé dans ta procédure, juste après avoir enregistré ton fichier par le 'SaveAs' et l'avoir fermé.

En gros, t'enregistre le fichier avec la date du jour, tu fermes ce fichier.
Tu le réouvres avec mon code (donc en invisible) et le code de suppression de la procédure s'execute.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 09:08
Ok, impossible d'aller dans outils\References, je ne peux pas selectionner...

Mike
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 09:08
Ah si c bon.
Je test tout ca.
Merci encore.

Mike
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 09:22
De rien.

N'hésite pas si t'as des soucis !

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 09:22
De rien.

N'hésite pas si t'as des soucis !

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 09:43
Je n'y arrive pas.
Mon programme plante méchamment.
Pour la reference je n'ai que la 5.3 de dispo et pas la 6.0

Début de mon prog :

Private Sub Workbook_Open()



If Application.Visible = False Then
    With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
    End With
End If







Voici la fin de mon pgm: ( ca plante ou a la ligne surlignée en rouge)

Fichier = "C:\Temp\Archivage_Chariots" & CStr(ReferenceChassis) & " du " & _
Replace(CStr(Format(Date, vbShort)), "/", "_") & ".xls"



ActiveWorkbook.SaveAs Filename:=Fichier



 Dim xlApp As New Excel.Application
    Dim xlBook As Workbook
   
        Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False

        Set xlBook = xlApp.Workbooks.Open("C:\Temp\Archivage_Chariots" & CStr(ReferenceChassis) & " du " & _
Replace(CStr(Format(Date, vbShort)), "/", "_") & ".xls")
   
xlApp.Visible = True
xlBook.Close True
        Set xlBook = Nothing
        Set xlApp = Nothing




 



       
Application.DisplayAlerts = False
Application.Quit




 



End Sub



Mike
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 09:46
alors remplace

Set xlBook = xlApp.Workbooks.Open("C:\Temp\Archivage_Chariots" & CStr(ReferenceChassis) & " du " & _
Replace(CStr(Format(Date, vbShort)), "/", "_") & ".xls")

par

Set xlBook = xlApp.Workbooks.Open(Fichier)

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 09:59
Quand je fais ca :

Set xlBook = xlApp.Workbooks.Open(CStr(ReferenceChassis) & " du " & _
Replace(CStr(Format(Date, vbShort)), "/", "_") & ".xls")

Ca plante aussi, ca me met une erreur : "Erreur définie par l'application ou par l'objet"

C'est la bonne lutte, je me rends malade

Mike
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 10:10
Je pense que c'est à cause du ReferenceChassis.
Il n'est connu que dans sa procédure initiale.

Dans les déclarations du Module (ou UserForm),
met Dim ReferenceChassis, tout en haut.

Et supprime la déclaration de cette variable là où tu l'avais mis à l'origine.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 10:26
Toujours pas,

J'ai fais comme ca, et j'ai un bon nom de fichier dans   NomFichier

NomFichier = CStr(ReferenceChassis) & " du " & _
Replace(CStr(Format(Date, vbShort)), "/", "_") & ".xls"
Set xlBook = xlApp.Workbooks.Open(NomFichier)

Je ne comprends pas du tout.
Excuse moi de t'embeter autant

Mike
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 10:58
Vérifie les processus Excel !
Par sécurité, enregistre ton fichier et ferme le. Puis Kill tous les processus Excel.

T'en as paut-être qui ne se sont pas fermé.

En attendant je regarde mais je comprends pas vraiment pourquoi.

Pour la version 5.3 de l'extensibility, c'est bon quand même.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_mike42 Messages postés 16 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 11 juillet 2006
11 juil. 2006 à 11:38
Toujours la meme erreur.
Je comprends plus la....

A+

Mike
0
Rejoignez-nous