Re : choix de deux requête en liste déroulante
Bonjour à tous,
J'ai réussi à créer un script VBA, que voici. (J'ai abandonné l'idée d'une liste déroulante et suis parti sur un bouton pour un client pour plus de simplicité. J'ai donc autant de boutons que de clients, avec pour chacun cette macro modifiée en fonction du nom du client)
Sub client1()
'
'
'
With Sheets("Requete demandes").QueryTables.Add(Connection:= _ "URL;
https://***************************...***************************************export client 1 demandes**************" _
, Destination:=Sheets("Requete demandes").Range("$A$1"))
.Name = "export.php?format=spreadsheet&login_mode=basic&query=14&arg_client=client 1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
With Sheets("Requete incidents").QueryTables.Add(Connection:= _ "URL;
https://***************************...***************************************export client 1 incidents**************" _
, Destination:=Sheets("Requete incidents").Range("$A$1"))
.Name = "export.php?format=spreadsheet&login_mode=basic&query=8&arg_client=client 1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Cela fonctionne plutôt bien à première vue.
Elle charge les deux feuilles de données pour le client dans les deux premières feuilles.
Le premier problème est que lorsque l'on souhaite charger un nouveau client, celui ci se met à la suite et en A1. J'ai donc rajouté en début de macro ceci:
Worksheets("Requete demandes").Range("A1:S60000").ClearContents
et
Worksheets("Requete incidents").Range("A1:S60000").ClearContents
Cela marche bien, les cellules se vident et les données s’actualisent d'abord avec le nouveau client.
SAUF QUE,un gros problème arrive, dont je n'arrive absolument pas à me dépatouiller et auquel je ne pense pas avoir les capacités de répondre.
En effet, lorsque je clic sur un client 1, excel me charge les deux rapports de données du client 1. Lorsque je clic sur le bouton du client 2, il me charge les données du client 2, PUIS me recharge les données du client 1.
J'ai l'impression qu'en réalité, la feuille est connectée à une requête web prioritaire et que lorsque l'on en charge une autre, excel va d'abord exécuter la requête voulue, puis remettre à jour la requête initiale dont je ne veux plus.
Auriez vous une idée pour que lorsque l'on choisisse un client, les requêtes précédentes arrête de se charger?
J'espère être suffisamment clair dans mes propos désolé si ce n'est pas le cas.
Cordialement.