OVH Cloud OVH Cloud

copie de classeur ET des modules d'icelui

14 réponses
Avatar
sabatier
bonjour mes bien chers frères et soeurs...
c'est ma première question de l'année mais gaffe, AV, toi qui es
d'astreinte, j'en ai encore 7459 à exposer ici avant le 31 décembre
2003, s'entend...
la voici donc :
si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés (j'ai pu vérifier que seuls
les Click des Commandbutton dans les modules de feuille suivent le
movement) ; que faudrait-il rajouter dans cette proc

With Worksheets
.Copy
End With

pour que les modules s'installent dans le nouveau classeur avec leur
contenu?
merci par avance
jps

10 réponses

1 2
Avatar
John Fuss
Slt,

peut-être utiliser les File System Object (je les aime bien) pour copier
comme Windows sait le faire à l'identique ou alors exporter tes modules et
userform dans des fichiers .bas et les importer dans ds le classeur créé par
ton workbooks.Copy

Je reste dispo si tu as besoin....

John

"sabatier" a écrit dans le message de
news:
bonjour mes bien chers frères et soeurs...
c'est ma première question de l'année mais gaffe, AV, toi qui es
d'astreinte, j'en ai encore 7459 à exposer ici avant le 31 décembre
2003, s'entend...
la voici donc :
si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés (j'ai pu vérifier que seuls
les Click des Commandbutton dans les modules de feuille suivent le
movement) ; que faudrait-il rajouter dans cette proc

With Worksheets
.Copy
End With

pour que les modules s'installent dans le nouveau classeur avec leur
contenu?
merci par avance
jps


Avatar
sabatier
merci john pour ton judicieux conseil...
j'vas de ce pas me plonger dans les File System Object (ils ne m'aiment pas!)
jps
PS je ne pense pas, par contre, qu'on puisse avec une macro créer les .bas, les
exporter du classeur et les importer dans l'autre...sinon ça se saurait...mais
justement, allez savoir avec cette bande de cachottiers...
jps

John Fuss wrote:

Slt,

peut-être utiliser les File System Object (je les aime bien) pour copier
comme Windows sait le faire à l'identique ou alors exporter tes modules et
userform dans des fichiers .bas et les importer dans ds le classeur créé par
ton workbooks.Copy

Je reste dispo si tu as besoin....

John

"sabatier" a écrit dans le message de
news:
bonjour mes bien chers frères et soeurs...
c'est ma première question de l'année mais gaffe, AV, toi qui es
d'astreinte, j'en ai encore 7459 à exposer ici avant le 31 décembre
2003, s'entend...
la voici donc :
si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés (j'ai pu vérifier que seuls
les Click des Commandbutton dans les modules de feuille suivent le
movement) ; que faudrait-il rajouter dans cette proc

With Worksheets
.Copy
End With

pour que les modules s'installent dans le nouveau classeur avec leur
contenu?
merci par avance
jps




Avatar
AV
si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés


Et si au lieu de copier les feuilles tu faisais un :
ActiveWorkbook.SaveAs Filename:=".......


AV

Avatar
John Fuss
Tu te trompes sur 2 points :

déja les FSO t'aiment, mais si....

de plus il est tout à fait possible d'exporter des élements de tes projets
en fichiers et de les réimporter dans d'autres projets. de même qu'il est
possible d'insérer dans un module (par ex) du code présent dans un fichier
texte.

Pour ce qui est du code pour exporter les fichiers je ne l'ai pas mais j'ai
celui de l'import de texte via un fichier texte que je te mets ci-dessous.
L'export est de la même trempe.

Je reste à dispo

With ThisWorkbook.VBProject
With .VBComponents("Mod_JMO").CodeModule
CodeMod_JMO = .Lines(1, .CountOfLines)
End With
With .VBComponents("cAccesFile").CodeModule
CodecAccesFile = .Lines(1, .CountOfLines)
End With
End With
For i = 1 To Application.VBE.VBProjects.Count
If Application.VBE.VBProjects(i).name <>
GetFileInfo(ThisWorkbook.name, Nom) And Application.VBE.VBProjects(i).name
<> "VBAProject" Then
With Application.VBE.VBProjects(i)
With .VBComponents("Mod_JMO").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString CodeMod_JMO
End With
With .VBComponents("cAccesFile").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString CodecAccesFile
End With
Workbooks(GetFileInfo(.FileName, NomComplet)).Save
End With
End If
Next


"sabatier" a écrit dans le message de
news:
merci john pour ton judicieux conseil...
j'vas de ce pas me plonger dans les File System Object (ils ne m'aiment
pas!)

jps
PS je ne pense pas, par contre, qu'on puisse avec une macro créer les
.bas, les

exporter du classeur et les importer dans l'autre...sinon ça se
saurait...mais

justement, allez savoir avec cette bande de cachottiers...
jps

John Fuss wrote:

Slt,

peut-être utiliser les File System Object (je les aime bien) pour copier
comme Windows sait le faire à l'identique ou alors exporter tes modules
et


userform dans des fichiers .bas et les importer dans ds le classeur créé
par


ton workbooks.Copy

Je reste dispo si tu as besoin....

John

"sabatier" a écrit dans le message de
news:
bonjour mes bien chers frères et soeurs...
c'est ma première question de l'année mais gaffe, AV, toi qui es
d'astreinte, j'en ai encore 7459 à exposer ici avant le 31 décembre
2003, s'entend...
la voici donc :
si je ne m'abuse, losqu'on copie un classeur, les contenus des
modules



y compris le ThisWorkbook ne sont pas copiés (j'ai pu vérifier que
seuls



les Click des Commandbutton dans les modules de feuille suivent le
movement) ; que faudrait-il rajouter dans cette proc

With Worksheets
.Copy
End With

pour que les modules s'installent dans le nouveau classeur avec leur
contenu?
merci par avance
jps







Avatar
John Fuss
Pas bête

"AV" a écrit dans le message de
news:
si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés


Et si au lieu de copier les feuilles tu faisais un :
ActiveWorkbook.SaveAs Filename:=".......


AV





Avatar
sabatier
merci, alain, mais cela suppose que je dois baptiser le nouveau classeur
à
chaque fois ou bien y-a-il une astuce pour lui donner le nom de l'autre
en
lui ajoutant un p'tit keukechose pour le différencier de façon à ce que
la
macro s'exécute quel que soit le classeur à copier....
à vot' bon coeur, m'sieurs dames
jps

AV wrote:

si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés


Et si au lieu de copier les feuilles tu faisais un :
ActiveWorkbook.SaveAs Filename:=".......

AV



Avatar
sabatier
bonjour john
alors là, tu me gâtes (je n'ose pas dire aussi "ça se gâte") et merci
pour cette
longue proc dont je vais tenter l'essai pour le jour de l'an....si vous
ne me
revoyez pas après cette date, c'est que je serai resté coincé entre le
Module1
et le ThisWorkbook où il ne me restera plus qu'à prier le dieu des
VBAprojects
pour que personne n'utilise l'ascenseur....
merci encore, john et à +
jps

John Fuss wrote:

Tu te trompes sur 2 points :

déja les FSO t'aiment, mais si....

de plus il est tout à fait possible d'exporter des élements de tes projets
en fichiers et de les réimporter dans d'autres projets. de même qu'il est
possible d'insérer dans un module (par ex) du code présent dans un fichier
texte.

Pour ce qui est du code pour exporter les fichiers je ne l'ai pas mais j'ai
celui de l'import de texte via un fichier texte que je te mets ci-dessous.
L'export est de la même trempe.

Je reste à dispo

With ThisWorkbook.VBProject
With .VBComponents("Mod_JMO").CodeModule
CodeMod_JMO = .Lines(1, .CountOfLines)
End With
With .VBComponents("cAccesFile").CodeModule
CodecAccesFile = .Lines(1, .CountOfLines)
End With
End With
For i = 1 To Application.VBE.VBProjects.Count
If Application.VBE.VBProjects(i).name <>
GetFileInfo(ThisWorkbook.name, Nom) And Application.VBE.VBProjects(i).name
<> "VBAProject" Then
With Application.VBE.VBProjects(i)
With .VBComponents("Mod_JMO").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString CodeMod_JMO
End With
With .VBComponents("cAccesFile").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString CodecAccesFile
End With
Workbooks(GetFileInfo(.FileName, NomComplet)).Save
End With
End If
Next

"sabatier" a écrit dans le message de
news:
merci john pour ton judicieux conseil...
j'vas de ce pas me plonger dans les File System Object (ils ne m'aiment
pas!)

jps
PS je ne pense pas, par contre, qu'on puisse avec une macro créer les
.bas, les

exporter du classeur et les importer dans l'autre...sinon ça se
saurait...mais

justement, allez savoir avec cette bande de cachottiers...
jps

John Fuss wrote:

Slt,

peut-être utiliser les File System Object (je les aime bien) pour copier
comme Windows sait le faire à l'identique ou alors exporter tes modules
et


userform dans des fichiers .bas et les importer dans ds le classeur créé
par


ton workbooks.Copy

Je reste dispo si tu as besoin....

John

"sabatier" a écrit dans le message de
news:
bonjour mes bien chers frères et soeurs...
c'est ma première question de l'année mais gaffe, AV, toi qui es
d'astreinte, j'en ai encore 7459 à exposer ici avant le 31 décembre
2003, s'entend...
la voici donc :
si je ne m'abuse, losqu'on copie un classeur, les contenus des
modules



y compris le ThisWorkbook ne sont pas copiés (j'ai pu vérifier que
seuls



les Click des Commandbutton dans les modules de feuille suivent le
movement) ; que faudrait-il rajouter dans cette proc

With Worksheets
.Copy
End With

pour que les modules s'installent dans le nouveau classeur avec leur
contenu?
merci par avance
jps









Avatar
Philippe.R
Bonsoir JP,
Un truc comme ça peut être...
Dans ton classeur une cellule nommée lepetitchose
et dans ta procédure:

dim leNom as string, leNouvNom as string
leNom=thisworkbook.name
leNouvNom=lenom & [lepetitchose]
ActiveWorkbook.SaveAs Filename:=taratataBouéesSauegardes" & leNouvNom
[lepetitchose]=[lepetitchose]+1

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"sabatier" a écrit dans le message de news:
merci, alain, mais cela suppose que je dois baptiser le nouveau classeur
à
chaque fois ou bien y-a-il une astuce pour lui donner le nom de l'autre
en
lui ajoutant un p'tit keukechose pour le différencier de façon à ce que
la
macro s'exécute quel que soit le classeur à copier....
à vot' bon coeur, m'sieurs dames
jps

AV wrote:

si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés


Et si au lieu de copier les feuilles tu faisais un :
ActiveWorkbook.SaveAs Filename:=".......

AV





Avatar
sabatier
ah astucieux, philippe, ce truc...
que penses-tu si je modifies lepetitchose par groscont'auraisputrouvertoutseul?
merci en tous cas je vais adapter tout cela à mes répertoires et en avant la zizique...
bonne soirée et à +
jps

"Philippe.R" wrote:

Bonsoir JP,
Un truc comme ça peut être...
Dans ton classeur une cellule nommée lepetitchose
et dans ta procédure:

dim leNom as string, leNouvNom as string
leNom=thisworkbook.name
leNouvNom=lenom & [lepetitchose]
ActiveWorkbook.SaveAs Filename:=taratataBouéesSauegardes" & leNouvNom
[lepetitchose]=[lepetitchose]+1

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"sabatier" a écrit dans le message de news:
merci, alain, mais cela suppose que je dois baptiser le nouveau classeur
à
chaque fois ou bien y-a-il une astuce pour lui donner le nom de l'autre
en
lui ajoutant un p'tit keukechose pour le différencier de façon à ce que
la
macro s'exécute quel que soit le classeur à copier....
à vot' bon coeur, m'sieurs dames
jps

AV wrote:

si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés


Et si au lieu de copier les feuilles tu faisais un :
ActiveWorkbook.SaveAs Filename:=".......

AV







Avatar
sabatier
et je pense à un truc : plutôt que de nommer une cellule, on pourrait peut-être écrire comme cela :

dim leNom as string
leNom=thisworkbook.name
ActiveWorkbook.SaveAs Filename:=C:taratataBouéesSauvegardes" & leNom + 1

je vais essayer mais ça me semble trop simple
jps

"Philippe.R" wrote:

Bonsoir JP,
Un truc comme ça peut être...
Dans ton classeur une cellule nommée lepetitchose
et dans ta procédure:

dim leNom as string, leNouvNom as string
leNom=thisworkbook.name
leNouvNom=lenom & [lepetitchose]
ActiveWorkbook.SaveAs Filename:="C:taratataBouéesSauegardes" & leNouvNom
[lepetitchose]=[lepetitchose]+1

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"sabatier" a écrit dans le message de news:
merci, alain, mais cela suppose que je dois baptiser le nouveau classeur
à
chaque fois ou bien y-a-il une astuce pour lui donner le nom de l'autre
en
lui ajoutant un p'tit keukechose pour le différencier de façon à ce que
la
macro s'exécute quel que soit le classeur à copier....
à vot' bon coeur, m'sieurs dames
jps

AV wrote:

si je ne m'abuse, losqu'on copie un classeur, les contenus des modules
y compris le ThisWorkbook ne sont pas copiés


Et si au lieu de copier les feuilles tu faisais un :
ActiveWorkbook.SaveAs Filename:=".......

AV







1 2