Installation macro par macro
Bonjour,
Est-il possible par l'éxécution d'une macro d'installer une macro :
dans personnal macro
de tester si module1 est créer sinon le créer
dans le module1 coller le code suivant :
sub test
msgbox("installation réussi")
end sub
Ensuite si la première question est possible serait-il possible de mettre à jour ce même code par macro en remplaçant directement les fonction au par autres méthodes ?
Merci beaucoup par avance,
Gloutoni.
Bonjour
oui cela est possible
donc dans le principe on demande a l'utilisateur de
sélectionner le fichier
j'ouvre le fichier
déprotège le vba project par macro
fait la correction du code en rajoutant les lignes oubliées
fermeture du fichier traité
a+
Fred
Option Explicit
Sub corrige_erreur_frappe()
'Dim VBComp As VBComponent
Dim Ancien As String, Nouveau As String, Cible As String
Dim WB As Workbook
Dim i As Integer
Dim nomfichier As String
Dim code, code2 As String
Dim toto
Set WB = ActiveWorkbook
'demande le fichier de validation de projet
nomfichier = Application.GetOpenFilename("Fichiers Excel (*.xlsm), *.xlsm", , "Choix du fichier ")
If nomfichier = "" Then Exit Sub
If nomfichier = "Faux" Then Exit Sub
'empeche l'execution des macros a l'ouverture du fichier
Application.EnableEvents = False
'ouverture du fichier destination
Workbooks.Open nomfichier
Application.EnableEvents = True
'deproctection du VBA project
UnprotectVBProject ActiveWorkbook, "TOTO"
DoEvents
code = code & "If tableau(i, j) Like ""*_*"" Then" & vbCr
code = code & "tab_item(UBound(tab_item) - 1) = Mid(tableau(i, j), 7, 7)" & vbCr
code = code & "Else" & vbCr
code2 = "End if" & vbCr
'recherche et corrige la ligne
If ActiveWorkbook.Name <> WB.Name Then
With ActiveWorkbook.VBProject.VBComponents("module1").CodeModule
' pour le remplacement d'une ligne entière
'test ligne par ligne pour retrouvé l'endroit approprié
For i = 100 To .CountOfLines
Cible = .Lines(i, 1)
If LTrim(Cible) = "For j = Range(""H1"").Column To Range(""J1"").Column Step 2" Then
'vérifie qu'on est sur la bonne boucle
If LTrim(.Lines(i + 2, 1)) = "If tableau(i, j) Like ""*_*"" Then" Then Exit Sub
.InsertLines i + 2, code
.InsertLines i + 7, code2
ActiveWorkbook.Save
Exit For
End If
Next
End With
MsgBox ("Correction du Code effectuée")
'fermture du fichier de validation avec enregistrement
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Else
toto = MsgBox("vérifier les options d'excel, le projet VBA doit etre approuvé", vbExclamation)
Set WB = Nothing
End If
End Sub
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
End Sub
Bonjour,
J'ai parcouru le tuto et je n'ai pas trouvé comment installer dans les macros personnelles.
bonjour
Installer dans les macros personnelles, jamais fait... j'ai peut-être mal compris la demande initiale....
fred
Bonjour,
Pour détailler un peu :
J'ai une macro qui doit être installer dans les macros personnelles, que je vais envoyer à pas mal de personnes et je souhaiterais créer un petit installeur qui avec un clic copie le code dans le module1 des macros personnelles.
Si le module1 existe alors copier le code à la suite sinon le créer.
Merci par avance