Macro qui copie une feuille dans nouveau doc et effacer code VBA...

CyberNeo99

XLDnaute Occasionnel
Bonjour à tous,


Je cherche le moyen d'effacer le code VBA via une macro. Voici ce que je veux faire via une macro.

1. Je veux copier une feuille Excel vers un nouveau classeur. Cette partie je n'ai aucun Pb.
2. Une fois la feuille copier, cette feuille contient dans le fichier d'origine du code VBA. Le code se trouve dans la feuille et non dans le module. Je voudrais effacer ce code VBA via la création de la macro. Je veux qu'il efface le code VBA car dans le code VBA il y a une fct appeler qui se trouve dans un module dans le fichier d'origine et lors de la copie de la feuille cette fct est absente du classeur donc provoque une erreur de compilation.

J'ai cherché sans succès


Grand Merci à l'avance


Neo
 

CyberNeo99

XLDnaute Occasionnel
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

Bonjour Pierrot93,


Effectivement c'est une solution mais dans la code je dois ainsi forcer le nom du nouveau fichier, classeur, car lorsqu'on créer un nouveau document Excel choisit le nom du genre classeur1, classeur 2,....dans le code VBA apapraît le nom du classeur lors de la création de la macro et le nom est incrémenté de 1 à chaque fois. La solution est de créer un nouveau document en choisissant son nom, si j'ai ce code aucun Pb.... Il me suffira ensutie de copier le contenu de la feuille en valeur avec le format...

Merci à l'avance


Neo
 

CyberNeo99

XLDnaute Occasionnel
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

Bonjour,

J'ai trouvé ceci comme code

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 5)
xlApp.SheetsInNewWorkbook = 5
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
xlBook.SaveAs ("Mon Classeur.xls")
'On rend le classeur visible
xlApp.Visible = True
'On créer l'objet onglet dans le nouveau classeur créé
Set xlSheet = xlBook.Worksheets(1)
'On affecte un nom aux l'onglets
xlSheet.Name = "Janvier"
'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
Set xlSheet = Nothing
'
'
Set xlSheet = xlBook.Worksheets(2)
xlSheet.Name = "Février"
'
'....... On donne un nom à chaque onglets
'
'
'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3
'On ferme l'application
xlApp.Quit


Cela fonctionne pour créer une nouveau document par contre j'aimerais pouvoir l'adapté et ainsi au lieu de mettre un nom précis au nouveau classeur en l'occurence dans ce code c'est Mon classeur, je voudrais qu'il puisse aller chercher l'information de différentes cellules, disons 2 et si plus il me suffira d'adapter le code en concéquence. Par contre la difficulté que je vois s epointer est que le l'information qu'il doit aller chercher se trouvera dans un classeur qui ne portera pas toujours le même nom, comment faire pour qu'il puisse aller chercher l'information dans ce classeur.... Je me demande si lors de la création du nouveau classeur il est déjà dans le fichier source où il doit aller prendre cette information alors je ne crois pas qu'il y est un problème mais`là je ne suis pas sûr....


Merci à l'avance


Neo
 

CyberNeo99

XLDnaute Occasionnel
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

ReBonjour,


J,ai peut être trouvé un filon sauf que le code bloque. Le voici



Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim Chemin$, Client$, Fichier$, Projet$



'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 5)
xlApp.SheetsInNewWorkbook = 5
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
' xlBook.SaveAs ("Mon Classeur.xls")
Chemin = "C:\Documents and Settings\ABCD"
Client = Range("A9").Value
Projet = Range("A10").Value
Fichier = Projet & ".xls"

'xlBook.SaveAs ("Mon Classeur.xls")



If Dir(Chemin & Client, 16) = "" Then MkDir Chemin & "\" & Client
ActiveWorkbook.SaveAs Chemin & "\" & Client & "\" & Fichier

'On rend le classeur visible
xlApp.Visible = True
'On créer l'objet onglet dans le nouveau classeur créé
Set xlSheet = xlBook.Worksheets(1)
'On affecte un nom aux l'onglets
xlSheet.Name = "Janvier"
'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
Set xlSheet = Nothing
'
'
Set xlSheet = xlBook.Worksheets(2)
xlSheet.Name = "Février"
'
'....... On donne un nom à chaque onglets
'
'
'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3
'On ferme l'application
xlApp.Quit



Il bloque sur la ligne en rouge. Je ne sais quoi faire.....


Je vous joint le fichier an attachement. Ce que je veux en fait qu'il puisse mettre le fichier dans un path avec un sous-dossier dépendant du contenu d'une cellule en fait un fournisseur et ensuite je veux que le nom du fichier, classeur porte le nom d'un projet qui se trouve dans une autre cellule..... Dans l'exemple que je joint le fournisseur est en cellule A9 et le nom du projet en cellule A10. dans mon fichier originale ce ne sotn leurs emplacements mais ce que je recherche avant tout c'est le code....


Grand Merci à l'avance


Neo
 

Pièces jointes

  • Créer le nom d'un fichier selon 2 infos dans cellules.xls
    26.5 KB · Affichages: 61

CyberNeo99

XLDnaute Occasionnel
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

ReBonjour,


Il y a une chose qui est vraiment étrange, avec le code que j'ai mis plus hautj'ai un Pb majeur, mes macros Complémentaires, les fcts s'y rattachant disparaissent. J'utilise la macros complémentaires Analysis ToolPak et il y aune fct que j'utilise Workday, elle dispraît ce qui me cause un Pb dans mon fichier, la fct où elle est utilisé ne retrouve pas se nom ce qui est compréhensible mais pourquoi avec ce code toutes les fcts du ToolPak dispraissent..... Je dois redémarrer l'ordinateur pour retrouver ces fcts....


Neo
 

Yaloo

XLDnaute Barbatruc
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

Bonsoir CyberNeo99, le forum,

Pour ta ligne en rouge, tu pourrais peut être écrire ça comme ça :

VB:
 ' xlBook.SaveAs ("Mon Classeur.xls")
 Chemin = "C:\ABCD"
 Client = Range("A9").Value
 Chemin = Chemin & "\" & Client
 Projet = Range("A10").Value & ".xls"
 Fichier = Chemin & "\" & Projet

 'xlBook.SaveAs ("Mon Classeur.xls")
 If Dir(Chemin, 16) = "" Then MkDir Chemin
ActiveWorkbook.SaveAs Fichier

Pour tes macros complémentaires je ne sais pas.

A+
 

CyberNeo99

XLDnaute Occasionnel
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

Bonjour Yaloo,

Avec ton code j'arrive à faire créer le répertoire dont le nom se trouve en cellule A9 mais par contre le Pb que j'ai est lorsque le répretoire existe déjà, dans ce cas par exemple, ABC, il me fait une erreur de compilation sur la ligne du Test

If Dir(Chemin, 16) = "" Then MkDir Chemin

Il semble bloquer sur le chemin de sauvegarde.

Il me faut faire alors un Test si le répertoire existe déjà j'imagine et s'il existe déjà il lui sauvegarder au chemin qu'il doit le mettre car la ligne lus haut citer créer un répertoire mais dans le cas qu'il n'existe pas mais s'il existe il ne faut pas faire ce test alors il me faut mettre un test juste vant ce dernier pour savoir si ce répetoire existe déjà, si je ne me trompe. Je ne suis pas progammeur alors....

En plus lorsque je rééxécuter le fichier, je réouvre le fichier, le fichier est ouvert mais il y a un autre classeur avec un nom du genre classeurx où x est nombre représentant le x ième classeur. Étrange...... Je ne sais comment contourner ce problème... Je joint le ficher avec ton code

Lors de l'activation de la macro il sauvegarde le fichier à l'endroit souhaiter si bien sûr le répertoire n'existe pas sinon j'ai une erreur de code, et un nouveau classeur apparaît du genre classeurx comme j'ai expliquer auparavant..... et il me demande si je veux sauvegarder ce classeur... comment ne pas faire appraître cette fenêtre.....


Il me faut essayer ça et je reviens.... si tu peux me confirmeralors génial....


Merci pour ton code


Neo
 

Pièces jointes

  • Créer le nom d'un fichier selon 2 infos dans cellules v2.xls
    28 KB · Affichages: 49
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

Avec ton code j'arrive à faire créer le répertoire dont le nom se trouve en cellule A9 mais par contre le Pb que j'ai est lorsque le répretoire existe déjà, dans ce cas par exemple, ABC, il me fait une erreur de compilation sur la ligne du Test

If Dir(Chemin, 16) = "" Then MkDir Chemin

Il semble bloquer sur le chemin de sauvegarde.

Cela me semble bizarre, car cela veut dire "si le répertoire est égale à "" (donc il n'existe pas) alors il faut le créer (MkDir)"

A te relire

Yaloo
 

CyberNeo99

XLDnaute Occasionnel
Re : Macro qui copie une feuille dans nouveau doc et effacer code VBA...

Bonjour Yaloo,


J'ai trouvé la solution. En premier il vérifie si le répertoire existe, s'il n'existe pas il créer alors le répertoire. dans le cas contraire si le répertoire existe déjà alors il vérifie s'il y a déjà un fichier portant le même nom et si c'est le cas alors il fait apparaître une boîte de dialogue. Si le fichier n'existe pas alors il sauvegarde le fichier. J'y ai ajout.é la date et l'heure pour ainsi rendre le tout plus unique. par contre il possible que l'heure soit de trop, je vais peut être l'enlever....

Merci pour ton aide.

Là j'ai un autre Pb que je vais faire une recherche avant et si je ne trouve rien alors je vais créer une autre discussion.


Neo
 

Pièces jointes

  • Créer le nom d'un fichier selon 2 infos dans cellules v3.xls
    40.5 KB · Affichages: 68

Discussions similaires

Réponses
8
Affichages
178
Réponses
24
Affichages
432

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise