Je suis complètement novice en VBA, et à mes heures perdues j'essaie de m'amuser à apprendre comment faire des macros sous excel.
N'ayant pas de formation là dedans, j'arrive tant bien que mal à bidouiller, mais là je suis sur un problème dont je n'arrive pas résoudre:
" Modifier une partie d'une macro à partir d'une autre macro en utilisant un userform".
Je suis tombé dans un "vieux" forum donnant le code suivant:
Public Adresse_Serveur As String
__________________________________________
Sub Ma_Macro()
Dim Ttl As Long
Dim i As Integer
Ttl = 1
For i = 1 To 10
Ttl = Ttl * i
Next
Workbooks.Open Filename:="essai" & gmao & ".slk"
End Sub
___________________________________________
Sub usf()
UserForm1.Show
End Sub
En fait j'aimerai faire quelque chose d'équivalent :
1) Une première macro qui ouvre une page internet et qui la recopie sur une page excel comme celle-ci:
Sub import()
' import Macro
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.turfomania.fr/fiches/jockeys/gelormini-g.html?idjockey=7721", _
Destination:=Range("$A$1"))
.Name = "gelormini-g.html?idjockey=7721_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
2) Puis une deuxième macro qui, avec un userform, me permettrait d'exécuter la première macro mais avec la nouvelle adresse internet que j'aurai rentrée dans le userform.
Je ne sais pas si vous avez un peu de temps pour vous plonger dans ce problème?
En tout cas ça m'aiderai bien...!
J'ai essayé de faire ceci comme modifications sur les macros:
Sub Appel()
'
' Appel Macro
Dim adresse As String
import (adresse)
End Sub
__________________________
Sub import(adresse As String)
'
' import Macro
'
'
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;adresse", _
Destination:=Range("$A$1"))
.Name = "gelormini-g.html?idjockey=7721_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Mais ça beugue....!
Puis en essyant de rajouter dans la première macro la ligne de commande: UserForm1.Show avant de faire appel à la deuxième macro, ça coince aussitôt....!!!!
Help me, please...!
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici : ICI
Set VBComp = ActiveWorkbook.VBProject.VBComponents("Module1")
With VBComp
For i = 1 To .CodeModule.CountOfLines
Recherche = .CodeModule.Lines(i, 1)
Recherche = Replace(Recherche, Anciene_Adresse, Nouvelle_Adresse)
.CodeModule.ReplaceLine i, Recherche
Next
End With
Sheets("Feuil1").Range("A2") = TextBox2.Text
Ma_Macro (TextBox2)
Unload Me
End Sub
__________________________________________________________
Private Sub CommandButton2_Click()
Unload Me
Ma_Macro (TextBox2)
End Sub
__________________________________________________________
Private Sub UserForm_Initialize()
Adresse_Serveur = Sheets("Feuil1").Range("A2").Text
TextBox1 = Adresse_Serveur
End Sub
__________________________________________________________
" TextBox2 " joue le rôle de " adresse " dans mes précédentes macros.
J'ai donc essayé d'incorporer la ligne de commande " import (TextBox2) " un peu de partout dans les différentes macros ci-dessus, mais ça ne fonctionne toujours pas....! J'ai même Excel qui se ferme par frustration...!
En étant moins ambitieux, j'ai fait modifié ma première macro par : __________________________________________________________
Sub Appel()
'
' Appel Macro
Dim adresse As String
adresse = Range("A1").Value
import (adresse)
End Sub
__________________________________________________________
Il me suffit alors de rentrer l'adresse voulue en A1 puis de lancer la macro Appel et ça marche...!
Faudra que j'y revienne une autre fois avec l'histoire du bouton qui permet de changer les choses....!
Encore merci M. Henry pour cet échange qui m'a permis d'apprendre quelque chose aujourd'hui..!
10 janv. 2016 à 16:42
Au niveau rédactionnel ça devrait donner quoi exactement ?
J'ai bien essayé, mais j'ai encore pas mal de choses à apprendre, je pense...!
10 janv. 2016 à 16:49
Sinon, une recherche avec : VBA Sub parametres
me donne :
https://msdn.microsoft.com/en-us/library/aa263527%28v=vs.60%29.aspx
Modifié par NHenry le 10/01/2016 à 17:47
Mais ça beugue....!
Puis en essyant de rajouter dans la première macro la ligne de commande: UserForm1.Show avant de faire appel à la deuxième macro, ça coince aussitôt....!!!!
Help me, please...!
Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.
10 janv. 2016 à 17:48
"URL;" & adresse
10 janv. 2016 à 17:53
Il me met en jaune la dernière ligne d'instructions
".Refresh BackgroundQuery:=False"
de la deuxième macro !