Test "requête connexion" PQuery existe

Bonjour à tous,

Je travaille avec Excel 2016.

Je dois consolider des données industrielles stockées par année et par fichier (chaque fichier prend le nom de son année) dans un fichier de consolidation.

Le fichier consolidant comprend donc:

  • une "requête connexion" par année
  • une requête qui consolide ces requêtes, chargée sous forme de table dans l'onglet wks_consolidation

Je souhaite créer une fonction pour tester l'existence d'une requête connexion puis de la créer si la valeur est false.

Vous trouverez le code dans le module "TestsEtFonctions" du fichier "ConsolidationThermoFormeuse_4.xlsm" ci-joint/

https://we.tl/t-eHtqChjaIC

Je bute sur le test de l'existence d"une connexion: je ne trouve pas de quel objet il s'agit. J'ai écrit "Len(ActiveWorkbook.Connections(str_Requete_DontExistenceAtester)) > 0": je sais que ça ne renvoie aucune valeur, mais vous comprenez ce que je veux obtenir j'espère.

Merci.

Etxe.

Sub macro_TestExistence_Requete()

Dim str_Requete_ApasserEnParametreFonctionTestExistence As String

With wks_formulaire

str_Requete_ApasserEnParametreFonctionTestExistence = .Range("cell_Annee").Value

End With

If function_TestExistence_RequetePowerQuery(str_Requete_ApasserEnParametreFonctionTestExistence) = True Then

MsgBox "Ok, la requete existe", vbOKOnly + vbInformation

Else

MsgBox "la requete spécifiée n'existe pas", vbOKOnly + vbExclamation

End If

End Sub

Public Function function_TestExistence_RequetePowerQuery(str_Requete_DontExistenceAtester As String) As Boolean

'Dans quelle collection pointer? et avec quelle méthode?

On Error Resume Next

If Len(ActiveWorkbook.Connections(str_Requete_DontExistenceAtester)) > 0 Then

Debug.Print ActiveWorkbook.Connections(str_Requete_DontExistenceAtester)

function_TestExistence_RequetePowerQuery = True

On Error GoTo 0

Else

function_TestExistence_RequetePowerQuery = False

End If

End Function

Bonjour

Pourquoi ne pas stocker les fichier dans un dossier et consolider en une requête le dossier ?

Ce serait plus dynamique et transparent, je crois

Bonjour Chris,

Oui, cela fonctionne.

Je souhaiterais tout de même trouver comment tester l'existence d'une requête connexion, aurais-tu une piste s'il te plaît?

Merci de ton aide.

Etxe.

Bonjour,

Pour vérifier l'existence d'une connexion, tu peux utiliser cette fonction :

Public Function ConnExists(name As String, Optional wb As Workbook) As Boolean
    If wb Is Nothing Then Set wb = ActiveWorkbook
    On Error Resume Next
    ConnExists = CBool(Len(wb.Connections(name).name))
End Function

Pour une requête, :

Public Function QueryExists(name As String, Optional wb As Workbook) As Boolean
    If wb Is Nothing Then Set wb = ActiveWorkbook
    On Error Resume Next
    QueryExists = CBool(Len(wb.Queries(name).name))
End Function

Cdlt.

Bonjour Jean-Eric, merci pour ta réponse, ça marche.

J'avais trouvé une solution entre temps, plus lourde que la tienne (cf infra).

J'ai une question: au sujet de CBool, je vois sur l'aide que " Si l’expression correspond à une valeur différente de zéro, CBool renvoie vrai, dans le cas contraire, elle renvoie faux." Est-elle aussi par défaut = faux? En effet on provoque une erreur si le string est vide, on ne met pas la valeur à zéro.

Merci d'avance!

Etxe.

Public Function function_TestExistence_RequetePowerQuery(str_Requete_DontExistenceAtester As String) As Boolean

On Error GoTo Erreur:

If Len(ActiveWorkbook.Queries(str_Requete_DontExistenceAtester).name) > 0 Then function_TestExistence_RequetePowerQuery = True

Exit Function

Erreur:

function_TestExistence_RequetePowerQuery = False

End Function

Rechercher des sujets similaires à "test requete connexion pquery existe"