choix de deux requête en liste déroulante

benzodiazepine

XLDnaute Nouveau
Bonjour,

Dans le cadre d'un projet je développe un fichier excel qui permet de sortir des rapports propres en fonctions de données brutes reçues depuis des requêtes web.

Tout est fait j'ai eu plus ou moins de mal pour certaines choses mais c'est bon.

Les rapports se basent sur plusieurs TCD eux même basés sur 2 requêtes différentes.

Ces requêtes répertorient les tickets générés pour un client donné. Une requête1 pour un type de ticket, une requete 2 pour un autre type.

Ce que j'aimerai faire, c'est pouvoir choisir à l'aide d'un bouton, ou d'une liste déroulante, une façon de pouvoir choisir le nom du client, et que en fonction du choix, les deux requêtes sur les feuille 1 et 2 soient celles du client recherché.

Je précise que les requêtes web sont les même pour tous les client à l'exception de l'argument client en fin de requete qui diffère évidemment.

Auriez vous une idée de comment procéder?

Merci.
 

benzodiazepine

XLDnaute Nouveau
Re : choix de deux requête en liste déroulante

Bonjour,

Je ne pense pas que ce soit utile de fournir les TCD en fait. Les TCD sont simplement basés sur les feuilles 1 et 2 où se trouvent les 2 résultats de requête.

Le problème est vraiment pas du tout sur eux.

L'objectif est de faire en sorte que grâce à une liste déroulante, surement liée à une macro, l'on puisse choisir la requête souhaitée qui s'affichera sur les feuille 1 et 2. En gros, que le manager choisisse client Tartanpion dans la liste et que excel charge les deux requêtes relative au client Tartanpion dans les feuille 1 et 2

De plus, je ne peux pas créer de fichier zip depuis mon poste de travail, seulement des fichiers rar et ils ne sont pas acceptés ici apparemment. Désolé.

Cordialement
 

job75

XLDnaute Barbatruc
Re : choix de deux requête en liste déroulante

Re,

Je ne pense pas aller plus loin (c'est casse-pieds), mais pour ceux que ça intéresse je joins le fichier.

A+
 

Pièces jointes

  • 3Hipaa2oI3m_tableaux_ovr_annuel_et_focus_mois.xlsm
    746.6 KB · Affichages: 57

Tirou

XLDnaute Occasionnel
Re : choix de deux requête en liste déroulante

Bonjour,

Si j'ai bien compris, tu souhaites n'afficher des données d'un rapport que d'un client particulier. Pourquoi cela modifierait tes requêtes ? :s toujours si j'ai bien compris, tes feuilles 1 et 2 servent de BD et tes TCD servent à la visualisation. (je ne peux regarder ton fichier, excel est en train de mouliner chez moi)

Auquel cas, je te conseille de regarder du coté des segments : ces filtres bien visuels que tu peux lier à plusieurs TCD en même temps.

Edit : un petit post d'un autre forum où la démarche détaillée avait été donnée en réponses (ici aussi, mais la flemme de chercher) Gestion de plusieurs filtres en simultanés pour TCD : Excel - VBA
 
Dernière édition:

benzodiazepine

XLDnaute Nouveau
Re : choix de deux requête en liste déroulante

Bonjour,

Les requêtes sont différentes pour chaque client.
Je vais tenter d'expliquer, sachant que je suis une buse en informatique.
En gros, plutot que de parler de requêtes, ce sont d'après excel des données externes WEB. Chaque client à un lien précis le définissant. Les données qui ressortiront auront exactement les mêmes intitulés de colonnes et donc le même type d'infos mais il n'y a pas de lien multi client.
Ainsi, ce que je souhaite, c'est qu'a partir d'une liste déroulante l'on puisse choisir le client, et que cela charge les deux liens du client donné.

J'espère avoir été à peu près clair.

PS: Très franchement le fichier excel n'apporte pas grand chose, les TCD se basent sur les deux fauilles, mais en fait là n'est pas le problème, c'est vraiment de savoir comment faire pour pouvoir charger des données web différentes depuis une liste déroulante.
 

benzodiazepine

XLDnaute Nouveau
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.
 
Dernière édition:

Tirou

XLDnaute Occasionnel
Re : choix de deux requête en liste déroulante

Peut-être qu'au lieu de rajouter une requête dans ta collection d'objets QueryTables, tu pourrais modifier les requêtes déjà existantes. Ou encore supprimer celles existantes avant de lancer ta macro. Un truc du genre
Code:
'On error resume next 'A mettre une fois qu'on sais que ça marche, pour s'éviter le cas où il n'y a pas encore de requète)
Sheets("Requete incidents").QueryTables(1).delete
Sheets("Requete demandes").QueryTables(1).delete
'On error goto 0
 

benzodiazepine

XLDnaute Nouveau
Re : choix de deux requête en liste déroulante

En gros au lieu de vider les cellules vider les requêtes?

Cela videra quand même les cellules ou bien je peux combiner les deux?

Je testerai dans l'après midi dés que j'ai le temps.

Merci de ton aide en tout cas je te fais un retour des que possible.
 

Discussions similaires

Réponses
8
Affichages
363