Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
cette fois savoir, j'aimerais savoir s'il y a une propriété qui puisse me dire le nom du fichier source d'une zone de données externes.
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1 Pour récupérer le chemin d'accès de la source (qui est fermée !) Dans un module ordinaire (attention aux possibles retours à la ligne intempestifs et aux guillemets !):
Function CHEM(Cel As Range) x = Chr(34) & Cel.Formula & Chr(34) CHEM = Evaluate("substitute(substitute(left(" & x & ",find(""]""," & x & ")-1),""='"",""""),""["","""")") End Function 'AV
Et si possible d'inscrire également en C3, la date de ce fichier externe.
Function DATE_MAJ(Cel As Range) x = Chr(34) & Cel.Formula & Chr(34) DATE_MAJ = FileDateTime(Evaluate("substitute(substitute(left(" & x & ",find(""]""," & x & ")-1),""='"",""""),""["","""")")) End Function 'AV
AV
cette fois savoir, j'aimerais savoir s'il y a une propriété qui puisse me dire
le nom du fichier source d'une zone de données externes.
Si, par ex., tu as dans une cellule de la feuille un truc du genre :
='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1
Pour récupérer le chemin d'accès de la source (qui est fermée !)
Dans un module ordinaire
(attention aux possibles retours à la ligne intempestifs et aux guillemets !):
Function CHEM(Cel As Range)
x = Chr(34) & Cel.Formula & Chr(34)
CHEM = Evaluate("substitute(substitute(left(" & x & ",find(""]""," & x &
")-1),""='"",""""),""["","""")")
End Function 'AV
Et si possible d'inscrire également en C3, la date de ce fichier externe.
Function DATE_MAJ(Cel As Range)
x = Chr(34) & Cel.Formula & Chr(34)
DATE_MAJ = FileDateTime(Evaluate("substitute(substitute(left(" & x &
",find(""]""," & x & ")-1),""='"",""""),""["","""")"))
End Function 'AV
cette fois savoir, j'aimerais savoir s'il y a une propriété qui puisse me dire le nom du fichier source d'une zone de données externes.
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1 Pour récupérer le chemin d'accès de la source (qui est fermée !) Dans un module ordinaire (attention aux possibles retours à la ligne intempestifs et aux guillemets !):
Function CHEM(Cel As Range) x = Chr(34) & Cel.Formula & Chr(34) CHEM = Evaluate("substitute(substitute(left(" & x & ",find(""]""," & x & ")-1),""='"",""""),""["","""")") End Function 'AV
Et si possible d'inscrire également en C3, la date de ce fichier externe.
Function DATE_MAJ(Cel As Range) x = Chr(34) & Cel.Formula & Chr(34) DATE_MAJ = FileDateTime(Evaluate("substitute(substitute(left(" & x & ",find(""]""," & x & ")-1),""='"",""""),""["","""")")) End Function 'AV
AV
Ma Dalton
Salut Alain,
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1
Malheureusement, c'est pas ce que j'ai. Ma zone de données externe provient plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête MS-Query qui se met à jour lors de chaque ouverture.
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
merci
Salut Alain,
Si, par ex., tu as dans une cellule de la feuille un truc du genre :
='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1
Malheureusement, c'est pas ce que j'ai. Ma zone de données externe provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête
MS-Query qui se met à jour lors de chaque ouverture.
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à
faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1
Malheureusement, c'est pas ce que j'ai. Ma zone de données externe provient plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête MS-Query qui se met à jour lors de chaque ouverture.
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
merci
AV
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1 Malheureusement, c'est pas ce que j'ai. Ma zone de données externe provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête MS-Query qui se met à jour lors de chaque ouverture.
Ben c'était un exemple évidemment ! A priori, peu importe le type de fichier La condition nécessaire (que j'avais cru comprendre) est que tu aies une liaison externe dans une cellule, selon le modèle précédemment indiqué
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
Ca c'est pas normal.... si tu as bien mis la fonction perso dans un module...si la recopie est correcte...si.......
AV
Si, par ex., tu as dans une cellule de la feuille un truc du genre :
='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1
Malheureusement, c'est pas ce que j'ai. Ma zone de données externe provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête
MS-Query qui se met à jour lors de chaque ouverture.
Ben c'était un exemple évidemment !
A priori, peu importe le type de fichier
La condition nécessaire (que j'avais cru comprendre) est que tu aies une liaison
externe dans une cellule, selon le modèle précédemment indiqué
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à
faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
Ca c'est pas normal.... si tu as bien mis la fonction perso dans un module...si
la recopie est correcte...si.......
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1 Malheureusement, c'est pas ce que j'ai. Ma zone de données externe provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête MS-Query qui se met à jour lors de chaque ouverture.
Ben c'était un exemple évidemment ! A priori, peu importe le type de fichier La condition nécessaire (que j'avais cru comprendre) est que tu aies une liaison externe dans une cellule, selon le modèle précédemment indiqué
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
Ca c'est pas normal.... si tu as bien mis la fonction perso dans un module...si la recopie est correcte...si.......
AV
Denis Michon
Bonjour Ma Dalton,
Voici une façon d'extraire le chemin et le nom du fichier source d'un QueryTable et l'inscrire dans une cellule de ton choix. Attention, tu devras adapter le nom du Query et des feuilles de la procédure.
Extraire le chemin et le nom '------------------------------ Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub '------------------------------
Salutations!
"Ma Dalton" a écrit dans le message de news: Bonjour,
cette fois savoir, j'aimerais savoir s'il y a une propriété qui puisse me dire le nom du fichier source d'une zone de données externes.
Cela me permettra d'afficher dison en B3, le nom du fichier (ex, d:répertoiresource.csv) qui est à l'origine de la zone Range("A10:F20").
Et si possible d'inscrire également en C3, la date de ce fichier externe.
merci
Bonjour Ma Dalton,
Voici une façon d'extraire le chemin et le nom du fichier source d'un QueryTable et l'inscrire dans une cellule de ton
choix. Attention, tu devras adapter le nom du Query et des feuilles de la procédure.
Extraire le chemin et le nom
'------------------------------
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String
Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable
'A déterminer le Nom ou l'index du querytable
With Worksheets("Feuil2").QueryTables(1)
Con = .Connection
A = InStr(1, Con, "DBQ=", vbTextCompare) + 3
B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2
C = Mid(Con, A + 1, B - A)
'Nom de la feuille où doit s'inscrire l'information
Worksheets("Feuil1").Range("C3") = C
End With
End Sub
'------------------------------
Salutations!
"Ma Dalton" <Rantanplan@farwest.net> a écrit dans le message de news:uvYT8GRlDHA.2456@TK2MSFTNGP09.phx.gbl...
Bonjour,
cette fois savoir, j'aimerais savoir s'il y a une propriété qui puisse me dire
le nom du fichier source d'une zone de données externes.
Cela me permettra d'afficher dison en B3, le nom du fichier (ex,
d:répertoiresource.csv) qui est à l'origine de la zone Range("A10:F20").
Et si possible d'inscrire également en C3, la date de ce fichier externe.
Voici une façon d'extraire le chemin et le nom du fichier source d'un QueryTable et l'inscrire dans une cellule de ton choix. Attention, tu devras adapter le nom du Query et des feuilles de la procédure.
Extraire le chemin et le nom '------------------------------ Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub '------------------------------
Salutations!
"Ma Dalton" a écrit dans le message de news: Bonjour,
cette fois savoir, j'aimerais savoir s'il y a une propriété qui puisse me dire le nom du fichier source d'une zone de données externes.
Cela me permettra d'afficher dison en B3, le nom du fichier (ex, d:répertoiresource.csv) qui est à l'origine de la zone Range("A10:F20").
Et si possible d'inscrire également en C3, la date de ce fichier externe.
merci
Ma Dalton
Salut, bien que ce ne soit pas exactement ce que je cherche, je vais essayer de trouver ce qui cloche! Pour apprendre faut se forcer un peu ! Mais comme la solution de Denis Michon semble plus adaptée à mon besoin je vais chercher de ce coté là.
merci encore
"AV" a écrit dans le message news: bmubo6$8gh$
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1 Malheureusement, c'est pas ce que j'ai. Ma zone de données externe
provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête
MS-Query qui se met à jour lors de chaque ouverture.
Ben c'était un exemple évidemment ! A priori, peu importe le type de fichier La condition nécessaire (que j'avais cru comprendre) est que tu aies une liaison
externe dans une cellule, selon le modèle précédemment indiqué
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à
faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
Ca c'est pas normal.... si tu as bien mis la fonction perso dans un module...si
la recopie est correcte...si.......
AV
Salut,
bien que ce ne soit pas exactement ce que je cherche, je vais essayer de
trouver ce qui cloche! Pour apprendre faut se forcer un peu ! Mais comme
la solution de Denis Michon semble plus adaptée à mon besoin je vais
chercher de ce coté là.
merci encore
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message news:
bmubo6$8gh$1@news-reader5.wanadoo.fr...
Si, par ex., tu as dans une cellule de la feuille un truc du genre :
='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1
Malheureusement, c'est pas ce que j'ai. Ma zone de données externe
provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une
requête
MS-Query qui se met à jour lors de chaque ouverture.
Ben c'était un exemple évidemment !
A priori, peu importe le type de fichier
La condition nécessaire (que j'avais cru comprendre) est que tu aies une
liaison
externe dans une cellule, selon le modèle précédemment indiqué
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas
réussi à
faire fonctionner correctement. j'ai toujours en résultat, la valeur
#NOM?
Ca c'est pas normal.... si tu as bien mis la fonction perso dans un
module...si
Salut, bien que ce ne soit pas exactement ce que je cherche, je vais essayer de trouver ce qui cloche! Pour apprendre faut se forcer un peu ! Mais comme la solution de Denis Michon semble plus adaptée à mon besoin je vais chercher de ce coté là.
merci encore
"AV" a écrit dans le message news: bmubo6$8gh$
Si, par ex., tu as dans une cellule de la feuille un truc du genre : ='D:TEMPMesMacros[MonTruc.xls]Feuil1'!$A$1 Malheureusement, c'est pas ce que j'ai. Ma zone de données externe
provient
plutôt d'un fichier ".csv" qui est récupéré dans la feuil1 par une requête
MS-Query qui se met à jour lors de chaque ouverture.
Ben c'était un exemple évidemment ! A priori, peu importe le type de fichier La condition nécessaire (que j'avais cru comprendre) est que tu aies une liaison
externe dans une cellule, selon le modèle précédemment indiqué
Par ailleurs, même sous la forme que tu me le proposes, je n'ai pas réussi à
faire fonctionner correctement. j'ai toujours en résultat, la valeur #NOM?
Ca c'est pas normal.... si tu as bien mis la fonction perso dans un module...si
la recopie est correcte...si.......
AV
Ma Dalton
OUI ça fonctionne !!! :-) mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette sub pour qu'elle s'exécute après une mise à jour de la zone de données. J'ai essayé sans succès sur worksheet_Change, _Calculate et sur _selectionChange.
merci
"Denis Michon" a écrit dans le message news: qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub
OUI ça fonctionne !!! :-)
mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette
sub pour qu'elle s'exécute après une mise à jour de la zone de données.
J'ai essayé sans succès sur worksheet_Change, _Calculate et sur
_selectionChange.
merci
"Denis Michon" <denis.michon@cgocable.ca> a écrit dans le message news:
qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String
Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable
'A déterminer le Nom ou l'index du querytable
With Worksheets("Feuil2").QueryTables(1)
Con = .Connection
A = InStr(1, Con, "DBQ=", vbTextCompare) + 3
B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2
C = Mid(Con, A + 1, B - A)
'Nom de la feuille où doit s'inscrire l'information
Worksheets("Feuil1").Range("C3") = C
OUI ça fonctionne !!! :-) mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette sub pour qu'elle s'exécute après une mise à jour de la zone de données. J'ai essayé sans succès sur worksheet_Change, _Calculate et sur _selectionChange.
merci
"Denis Michon" a écrit dans le message news: qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub
Denis Michon
Bonjour Ma Dalton,
"après une mise à jour de la zone de données"
C'est quoi ta zone de données ? Et comment la mets-tu à jour ?
Salutations!
"Ma Dalton" a écrit dans le message de news:eWOAE2$ OUI ça fonctionne !!! :-) mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette sub pour qu'elle s'exécute après une mise à jour de la zone de données. J'ai essayé sans succès sur worksheet_Change, _Calculate et sur _selectionChange.
merci
"Denis Michon" a écrit dans le message news: qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub
Bonjour Ma Dalton,
"après une mise à jour de la zone de données"
C'est quoi ta zone de données ? Et comment la mets-tu à jour ?
Salutations!
"Ma Dalton" <Rantanplan@farwest.net> a écrit dans le message de news:eWOAE2$lDHA.708@TK2MSFTNGP10.phx.gbl...
OUI ça fonctionne !!! :-)
mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette
sub pour qu'elle s'exécute après une mise à jour de la zone de données.
J'ai essayé sans succès sur worksheet_Change, _Calculate et sur
_selectionChange.
merci
"Denis Michon" <denis.michon@cgocable.ca> a écrit dans le message news:
qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String
Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable
'A déterminer le Nom ou l'index du querytable
With Worksheets("Feuil2").QueryTables(1)
Con = .Connection
A = InStr(1, Con, "DBQ=", vbTextCompare) + 3
B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2
C = Mid(Con, A + 1, B - A)
'Nom de la feuille où doit s'inscrire l'information
Worksheets("Feuil1").Range("C3") = C
C'est quoi ta zone de données ? Et comment la mets-tu à jour ?
Salutations!
"Ma Dalton" a écrit dans le message de news:eWOAE2$ OUI ça fonctionne !!! :-) mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette sub pour qu'elle s'exécute après une mise à jour de la zone de données. J'ai essayé sans succès sur worksheet_Change, _Calculate et sur _selectionChange.
merci
"Denis Michon" a écrit dans le message news: qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub
Denis Michon
Bonjour Ma Dalton,
Si ta base de données est l'actualisation d'un QueryTable dans une feuille, copie ce qui suit dans le module feulle où est situé ton Query. Dans la procédure, j'ai utilisé l'index 1 pour spécifier un "QueryTable" de la collection QueryTables. Tu dois adapter selon ton application.
'----------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range(ActiveSheet.QueryTables(1).Name), Target) Is Nothing Then For Each c In Application.CommandBars.FindControls(ID:E9) c.OnAction = "MaMiseAjour" Next Else For Each c In Application.CommandBars.FindControls(ID:E9) c.OnAction = "" Next End If
End Sub '-----------------------------
Et dans un module Standard : Ceci est la procédure qui va s'exécuter lorsque tu appeleras la mise à jour avec la commande de la barre d'outils "Données Externes" : Actualiser.
Ceci de la déclaration de la procédure : "Optional rien As Boolean" est utilisé seulement pour que cette procédure ne soit pas visible dans la fenêtre des macros. Car pour qu'elle soit utilisable, il faut nécessaire qu'une cellule de la plage d'un QueryTable soit active. '--------------------------- Sub MaMiseAjour(Optional rien As Boolean)
Dim Mbar As CommandBarButton Set Mbar = Application.CommandBars.FindControls(ID:E9) Mbar.Execute
'Nom de la procédure à exécuter Extraire_chemin_et_nom_QueryTable Set Mbar = Nothing
End Sub '---------------------------
La macro que va aussi exécuter la mise à jour de ta plage de données.
'------------------------------ Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub '------------------------------
Salutations!
"Ma Dalton" a écrit dans le message de news:eWOAE2$ OUI ça fonctionne !!! :-) mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette sub pour qu'elle s'exécute après une mise à jour de la zone de données. J'ai essayé sans succès sur worksheet_Change, _Calculate et sur _selectionChange.
merci
"Denis Michon" a écrit dans le message news: qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub
Bonjour Ma Dalton,
Si ta base de données est l'actualisation d'un QueryTable dans une feuille, copie ce qui suit dans le module feulle où
est situé ton Query. Dans la procédure, j'ai utilisé l'index 1 pour spécifier un "QueryTable" de la collection
QueryTables. Tu dois adapter selon ton application.
'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range(ActiveSheet.QueryTables(1).Name), Target) Is Nothing Then
For Each c In Application.CommandBars.FindControls(ID:E9)
c.OnAction = "MaMiseAjour"
Next
Else
For Each c In Application.CommandBars.FindControls(ID:E9)
c.OnAction = ""
Next
End If
End Sub
'-----------------------------
Et dans un module Standard : Ceci est la procédure qui va s'exécuter lorsque tu appeleras la mise à jour avec la
commande de la barre d'outils "Données Externes" : Actualiser.
Ceci de la déclaration de la procédure : "Optional rien As Boolean" est utilisé seulement pour que cette procédure ne
soit pas visible dans la fenêtre des macros. Car pour qu'elle soit utilisable, il faut nécessaire qu'une cellule de la
plage d'un QueryTable soit active.
'---------------------------
Sub MaMiseAjour(Optional rien As Boolean)
Dim Mbar As CommandBarButton
Set Mbar = Application.CommandBars.FindControls(ID:E9)
Mbar.Execute
'Nom de la procédure à exécuter
Extraire_chemin_et_nom_QueryTable
Set Mbar = Nothing
End Sub
'---------------------------
La macro que va aussi exécuter la mise à jour de ta plage de données.
'------------------------------
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String
Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable
'A déterminer le Nom ou l'index du querytable
With Worksheets("Feuil2").QueryTables(1)
Con = .Connection
A = InStr(1, Con, "DBQ=", vbTextCompare) + 3
B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2
C = Mid(Con, A + 1, B - A)
'Nom de la feuille où doit s'inscrire l'information
Worksheets("Feuil1").Range("C3") = C
End With
End Sub
'------------------------------
Salutations!
"Ma Dalton" <Rantanplan@farwest.net> a écrit dans le message de news:eWOAE2$lDHA.708@TK2MSFTNGP10.phx.gbl...
OUI ça fonctionne !!! :-)
mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette
sub pour qu'elle s'exécute après une mise à jour de la zone de données.
J'ai essayé sans succès sur worksheet_Change, _Calculate et sur
_selectionChange.
merci
"Denis Michon" <denis.michon@cgocable.ca> a écrit dans le message news:
qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String
Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable
'A déterminer le Nom ou l'index du querytable
With Worksheets("Feuil2").QueryTables(1)
Con = .Connection
A = InStr(1, Con, "DBQ=", vbTextCompare) + 3
B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2
C = Mid(Con, A + 1, B - A)
'Nom de la feuille où doit s'inscrire l'information
Worksheets("Feuil1").Range("C3") = C
Si ta base de données est l'actualisation d'un QueryTable dans une feuille, copie ce qui suit dans le module feulle où est situé ton Query. Dans la procédure, j'ai utilisé l'index 1 pour spécifier un "QueryTable" de la collection QueryTables. Tu dois adapter selon ton application.
'----------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range(ActiveSheet.QueryTables(1).Name), Target) Is Nothing Then For Each c In Application.CommandBars.FindControls(ID:E9) c.OnAction = "MaMiseAjour" Next Else For Each c In Application.CommandBars.FindControls(ID:E9) c.OnAction = "" Next End If
End Sub '-----------------------------
Et dans un module Standard : Ceci est la procédure qui va s'exécuter lorsque tu appeleras la mise à jour avec la commande de la barre d'outils "Données Externes" : Actualiser.
Ceci de la déclaration de la procédure : "Optional rien As Boolean" est utilisé seulement pour que cette procédure ne soit pas visible dans la fenêtre des macros. Car pour qu'elle soit utilisable, il faut nécessaire qu'une cellule de la plage d'un QueryTable soit active. '--------------------------- Sub MaMiseAjour(Optional rien As Boolean)
Dim Mbar As CommandBarButton Set Mbar = Application.CommandBars.FindControls(ID:E9) Mbar.Execute
'Nom de la procédure à exécuter Extraire_chemin_et_nom_QueryTable Set Mbar = Nothing
End Sub '---------------------------
La macro que va aussi exécuter la mise à jour de ta plage de données.
'------------------------------ Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C
End With
End Sub '------------------------------
Salutations!
"Ma Dalton" a écrit dans le message de news:eWOAE2$ OUI ça fonctionne !!! :-) mais maintenant, je n'arrive pas à trouver sur quel évènement placer cette sub pour qu'elle s'exécute après une mise à jour de la zone de données. J'ai essayé sans succès sur worksheet_Change, _Calculate et sur _selectionChange.
merci
"Denis Michon" a écrit dans le message news: qjzkb.6741>
Sub Extraire_chemin_et_nom_QueryTable ()
Dim A As String, B As String Dim Con As String, C As String
'A déterminer Nom feuille où est le queryTable 'A déterminer le Nom ou l'index du querytable With Worksheets("Feuil2").QueryTables(1) Con = .Connection A = InStr(1, Con, "DBQ=", vbTextCompare) + 3 B = InStr(1, Con, "DefaultDir", vbTextCompare) - 2 C = Mid(Con, A + 1, B - A) 'Nom de la feuille où doit s'inscrire l'information Worksheets("Feuil1").Range("C3") = C