modifier macro en fin de macro

F

friscogreencar

Guest
Bonsoir à tous,

Peut-on modifier une ligne de la macro lors de son utilisation ?
Ex :
X=activewokbook.path
Y= X & '\\\\\\\\' & Range('B13') & '\\\\\\\\'
ActiveSheet.SaveAs Filename:=Y & Nomxls
.........
.........
'Modifier ligne 2
Y=X

Afin qu'à l'utilisation du nouveau fichier Nomxls, la macro n'utilise que le répertoire X et non le sous répertoire Y

Merci de votre aide

FC
 

Blister58

XLDnaute Nouveau
Bonsoir

A ma connaissance aucun moyen de modifier automatiquement un cose VBA.
C'en est d'ailleurs le principe que de figer des actions conditionnelles non gérées par Excel lui même.
Par contre dans le code du Workbook tu peut gérer une condition ordonnant la gestion de tes fichiers

Cordialemment
 
F

friscogreencar

Guest
Bonsoir blister58

je n'ai pas bien saisi ce que tu veux dire.

Par contre j'ai trouvé sur le site de microsoft cette macro :

Sub DeleteAfterRun()

Dim x As Object

' This is the code that I want to run once.
MsgBox 'Hello, World!'

Set x = Application.VBE.ActiveVBProject.VBComponents

' Delete the current module.
x.Remove VBComponent:=x.Item('TestModule')
End Sub

qui pourrait correspondre à mes besoins mais quand je la lance j'ai une erreur :
'erreur 1004
la méthode 'VBE' de l'objet'_application a échoué' à la ligne
Set x = Application.VBE.ActiveVBProject.VBComponents

pourtant ça vient du support Msft.

Merci de ton aide

FC
 

Blister58

XLDnaute Nouveau
Suite : pas aisé a comprendre ou tu veux en venir.
Si tu enregistre ton fichier existant sous un autre nom en fait,la macro restera inchangée et donc tu ne pourras pas utiliser a partir du nouveau fichier l'ancien path sans en modifier a la main le code du nouveau fichier.Tu me suis...
Pas de modif possible du code après enregistrement.
désolé!

Cordialemment
 
F

friscogreencar

Guest
Blister58, tu as raison, mais il suffit que j'enregistre après avoir fait la modif.

En fait je démarre dans un répertoire, et en fonction des cellules remplies, je veux copier ce xls dans un sous répertoire dont le nom est une de ces cellules. Ces xls doivent avoir un code modifié alors que je n'enregistre pas la modif dans le xls d'origine.
je vais ainsi créer une dizaine de sous rép.
Ensuite je reprends ces nouveaux fichiers afin de les compléter, mais je ne veux plus qu'ils s'enregistrent dans un nouveau sous rép. mais dans celui où il se trouvent.
D'où ce besoin de modif du code. Sinon je me l'appuie à la main, et j'ai plusieurs rép de départ x plusieurs sous rép ça fait plusieurs modif ce que j'essaie d'éviter.

cordialement
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour FriscoGreenCar, Blister, le Forum

Dans le Forum XLD 1ère génération tu trouveras ce Fil de discussion où je me suis efforcé de regrouper pas mal de méthodes pour écrire, effacer des Codes VBA en RunTime.

=> 'VBA Effacement/Ecriture Macro'

Il est aussi important sous Office XP (2002) ou bien 2003 de paramétrer la sécurité depuis Excel Menu / Outils / Macro / Sécurité => Onglet 'Editeurs Approuvés' comme suit :



En cochant la case 'Faire Confiance au Projet Visual Basic'

Par contre en lisant ta demande, je pense que tu montes une usine à Gaz en voulant aller modifier des lignes de codes pour le chemin...

Je n'ai pas vraiment tout saisi dans ton synopsis de construction, mais on peut assez facilement tester le 'Len' du 'Path'... Un truc du Style :

If Len(ThisWorkBook.Path) > 55 Then
Action si on est dans un Sous-Répertoire
Else
Action si on est dans le répertoire Maître
End If


On peut également même faire Lire à VBA le dernier répertoire du Path où se trouve le Fichier :

Sub CurrentDir()
Dim Rep As Variant

Rep = Split(ThisWorkbook.Path, Chr(92))

MsgBox 'Ce Fichier se trouve dans ' & Rep(UBound(Rep))

End Sub

NB la fonction Split ne fonctionne qu'à partir d' Excel 2000.

A partir de là tu pourras facilement tester si ton Fichier est dans un Sous-Répertoire Voulu ou pas encore...

On peut même envisager des Select Case en cas de Multi-Sous-Répertoires...

Bonne Journée
[ol]@+Thierry[/ol]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour Blister, FRisco, le Forum

J'ai survolé ce Fil Lien supprimé

Je ne sais pas du tout si tu arriveras à retourner un Object Range depuis une Function directement de la sorte, mais je ne suis pas spécialiste des Customs Functions...

Enfin tu trouveras une approche niveau Syntax dans ton Fil d'Origine Blister...

Bon Aprèm
[ol]@+Thierry[/ol]
 
F

friscogreencar

Guest
Merci thierry et blister de vos réponses.

En fait, tu as raison thierry, j'ai essayé de trouver une solution simple, mais je suis tellement limité en VBA, que j'imagine des solutions abracadabrantes et ne vois pas les simples.
J'ai bien pensé à if, mais je n'ai pas trouvé de condition adéquate. Tu me proposes Len, mais ça ne me satisfait pas.
En fait il faudrait que je mette en équation:
if path contient 'range xy' then
Action .......
Else
Action........
puisque tous mes sous répertoires et noms de fichiers utilisent la cellule 'range xy' de la feuille xls.
je vais potasser de ce côté pour réduire mon usine à gaz.

encore merci, et si toi le grand maître du forum, dixit blister, tu pouvais jeter un oeil à mon autre question sur le forum intitulée Printout PDF, ce serait super, car personne ne m'a encore fourni une piste.

@+ FC
 

Discussions similaires

Réponses
0
Affichages
176
Réponses
2
Affichages
407
Réponses
1
Affichages
195

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 950
dernier inscrit
Thomas Solioz