" Modifier une partie d'une macro à partir d'une autre macro "

Résolu
Amatheux Messages postés 7 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 10 janvier 2016 - 10 janv. 2016 à 16:16
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 11 janv. 2016 à 20:24
Bonjour tout le monde,

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...!

bien cordialement,
Amatheux

1 réponse

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 janv. 2016 à 16:25
Comme précédemment suggéré, je te conseil de passer un paramètre à ta Sub Import afin de lui donner l'URL cible.
0
Amatheux Messages postés 7 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 10 janvier 2016
10 janv. 2016 à 16:42
Bonjour M. Henry,

Au niveau rédactionnel ça devrait donner quoi exactement ?
J'ai bien essayé, mais j'ai encore pas mal de choses à apprendre, je pense...!
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 janv. 2016 à 16:49
En utilisant l'aide de VBA sur le mot clé Sub, cela donnera les informations nécessaires.

Sinon, une recherche avec : VBA Sub parametres
me donne :
https://msdn.microsoft.com/en-us/library/aa263527%28v=vs.60%29.aspx
0
Amatheux Messages postés 7 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 10 janvier 2016
Modifié par NHenry le 10/01/2016 à 17:47
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

Merci d'y penser dans tes prochains messages.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 janv. 2016 à 17:48
adresse est une variable, il faut donc concaténer cette variable avec le teste précédent :
"URL;" & adresse
0
Amatheux Messages postés 7 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 10 janvier 2016
10 janv. 2016 à 17:53
ça coince toujours !
Il me met en jaune la dernière ligne d'instructions

".Refresh BackgroundQuery:=False"
de la deuxième macro !
0
Rejoignez-nous