" 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
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022
- 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
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022
161
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
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022
161
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
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022
161
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