Modifier macro par macro

C

Cerber

Guest
Bonjour le forum!
Merci a tous pour votre aide, grace a vous je suis passe du stade d'ignare sur excel au stade "jarrivabienbidouillerlevba" en l'espace de deux semaines. Et c'est donc grace a vous que j'ai pu pondre un petit fichier de suivi statistique de la production dans l'entreprise ou je fais mon stage qui ravi tout le monde.
Merci merci et merci!

Jusque la je me suis contente de la fonction "chercher" du forum mais la je lance un nouveau sujet:
je sais que celui ci a deja ete aborde car je l'ai apercu durant une de mes nombreuses precedentes recherches mais je suis incapable de retrouver le message...

Mon but est maintenant de creer un espece de petit fichier d'installation qui modifiera automatiquement les chemins des differents fichiers appeles dans les macros du programme principal et pour cela j'ai besoin de savoir comment on peut modifier le contenu d'une macro grace a une macro.

Merci d'avance !!!

Cerber
 
@

@+Thierry

Guest
Bonjour Cerber, Le Forum

Alors très heureux d'avoir pu contribuer en quelque chose dans ton stage !

Pour ce qui est de ton histoire d'écriture ou de changement dans une macro, je pense que ce fil devrait être un de ceux que tu cherches (c'est facile pour moi de le retrouver car je l'ai écrit ;-) !

=>Lien supprimé(Voir mon long post du 21/04/2003 à 20:47)

La méthode la plus fiable à mon avis, sera de détruire la macro concernée sélectivement pour la ré-écrire (ou la copier d'un autre module)...


En me relisant dans ce fil... dans la partie "Création à la volé d'un bouton dans un UserForm" je finissais par : Mais ne me demandez pas de joindre les deux.... Je n'ai pas encore capté, enfin c'est just for the fun si çà peut donner des idées... et aujourd'hui je suis heureux de pouvoir maitriser en partie ceci aussi, et je recommande donc à ceux/celles susceptibles d'être interressé(e)s de voir mes démos :

=> USF_ListBox_A_La_Volee.zip (48k) dans ce Ce Fil...
Ou encore...
=> USF_Message_Position_du_RightClick.V01.zip (32k) dans ce

Ceci dit, si c'est juste pour un chemin d'accès ptet qu'il y a plus simple à faire... Avec, par exemple, une variable basée sur des Constantes qui contiendraient les différents chemins... Mais faut voir le contexte plus en détail !

Bon Appétit
@+Thierry
 
C

Cerber

Guest
Merci pour cette rapide reponse!
Tu m'interesse avec tes histoires de variables qui correspondraient aux chemins... ;o)
Quel serait le moyen de faire cohabiter ca avec la fonction Openfile et les guillemets qui suivent ?
(en fait j'en suis plus au stade "jarrivabidouillerunpeulevba" ).

Bon appetit aussi!

Cerber
 
@

@+Thierry

Guest
Re salu Cerber, le Forum

Je ne sais pas ce que tu cherches à faire, mais voici un exemple avec un appel API et une fonction qui va retourner la version de Windows (c'est pas de moi, mais c'est pour faire un exemple concrèt)... En fonction de çà, la variable "Chemin" sera initialisée avec une des trois constantes en top de module... C'est juste à titre d'exemple, car il faudrait aussi retourner le User ID car "UserName" est évidemment faux.


Option Explicit

Const WinNT As String = "C:\WinNt\Profiles\UserName\Personal\"
Const Win2K As String = "C:\Documents and Settings\UserName\My Documents\"
Const Win9x As String = "C:\My Documents\"

Public lpVersionInformation As OSVERSIONINFO

Private Declare Function GetVersionExA Lib "kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Long
'de Zeloran Stronghold, adapté VBA par Patrick Penet
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Public Function OperatingSystem() As Integer
lpVersionInformation.dwOSVersionInfoSize = Len(lpVersionInformation)
Call GetVersionExA(lpVersionInformation)
If (lpVersionInformation.dwPlatformId = 0) Then
OperatingSystem = 0
ElseIf (lpVersionInformation.dwPlatformId = 1) And _
(lpVersionInformation.dwMinorVersion = 0) Then OperatingSystem = 1
ElseIf (lpVersionInformation.dwPlatformId = 1) And _
(lpVersionInformation.dwMinorVersion = 10) Then OperatingSystem = 2
ElseIf (lpVersionInformation.dwPlatformId = 1) And _
(lpVersionInformation.dwMinorVersion = 90) Then OperatingSystem = 3
ElseIf (lpVersionInformation.dwPlatformId = 2) And _
(lpVersionInformation.dwMajorVersion < 5) Then OperatingSystem = 4
ElseIf (lpVersionInformation.dwPlatformId = 2) And _
(lpVersionInformation.dwMajorVersion = 5) And _
(lpVersionInformation.dwMinorVersion = 0) Then OperatingSystem = 5
ElseIf (lpVersionInformation.dwPlatformId = 2) And _
(lpVersionInformation.dwMajorVersion = 5) And _
(lpVersionInformation.dwMinorVersion = 1) Then OperatingSystem = 6
End If
End Function


Sub ShowWVersion()
Dim OS As String, a As String, Chemin As String
a = OperatingSystem
Select Case a
Case 0: OS = "Windows 32": MsgBox "Ouh Là Là !!": Exit Sub
Case 1: OS = "Windows 95": Chemin = Win9x
Case 2: OS = "Windows 98": Chemin = Win9x
Case 3: OS = "Windows ME": Chemin = Win9x
Case 4: OS = "Windows NT": Chemin = WinNT
Case 5: OS = "Windows 2000": Chemin = Win2K
Case 6: OS = "Windows XP": Chemin = Win2K
End Select

MsgBox "Votre Opérating Système est :" & OS & vbCrLf & _
"le chemin d'accès de vos documents devrait être : " & vbCrLf _
& Chemin

End Sub


Voilà, Cerber c'est peut-être pas du tout ce dont tu as besoin, mais c'est un exemple d'initialisation de Chemin d'une manière variable.

Ensuite pour "OpenFile" (Open tout seul, car "OpenFile" n'existe pas) tu peux faire comme ceci :

Sub Cerber ()
Dim Chemin As String
Dim Fichier As String

Chemin = "C:\Mes Documents\" '(qui donc pourrait être initialisé avec des conditions)

Fichier = "TOTO.xls"

Workbooks.Open Chemin & Fichier
End Sub

Voilà c'est pas vraiment compliqué.

Bon Après Midi
@+Thierry
 
C

Cerber

Guest
Recoucou @Thierry!

Je crois qu'on a pas la meme notion de pas vraiment complique!!! ;oD

En fait, pendant que tu prenais de ton temps pour me repondre, j'ai trouve la solution.
En fait je n'ai pas ete tres clair avant, je m'explique:
Mon "programme" fait appelle a d'autre fichiers, notamment des bases de donnees qui se trouvent dans le meme repertoire que celui-ci.
Mon but etait de faire une macro qui modifie les chemins de ces autres fichiers en reperant le chemin du fichier principal pour pouvoir faire fonctionner celui ci peu importe l'emplacement ou il a ete copie.

Tu m'a donc plus qu'eclaire en me suggerant d'utiliser des variables en tant que chemin.
J'expose ma solution des fois que quelqu'un ai le meme "probleme " que moi a l'avenir... (et surtout passque je suis tout fier a chaques fois que je trouve qqchose PRESQUE tout seul...):

Creer deux fichier nommes "Essai1" et "Essai2" dans le meme dossier:
Vous faites un petit bouton dans le fichier Essai1 avec cette macro:

Sub Button1_Click()

chemin = ThisWorkbook.FullName
nom = ThisWorkbook.Name
lnom = Len(nom)
lchemin = Len(chemin)
chemindeessai2 = Left(chemin, lchemin - lnom) & "Essai2.xls"
Workbooks.Open Filename:=chemindeessai2

End Sub

Et le bouton vous permet d'ouvrir le fichier Essai2 peu importe ou vous ayez cree le repertoire avec les deux fichiers!

Merci encore @Thierry de m'avoir plus que mis sur la piste...
Et encore merci a tout le forum!

Cerber
 

Discussions similaires