Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Données/Validation classeur fermé Distant

  • Initiateur de la discussion Initiateur de la discussion deniooo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

deniooo

XLDnaute Occasionnel
Bonjour,
Je viens de trouver cette doc :
Données/Validation
Sur les listes dynamiques tirant leurs donnée d'un fichier fermé.
Or je ne comprends pas trés bien comment cela fonctionne.
Voila ce qui me trouble :
Code:
repertoire = ThisWorkbook.Path & "\"
cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "DVSource.xls"

ce qui au final done un DBQ = \toto\tata\lerepertoire\\DVSource.xls

Est-ce normal le \\ ?!

Autre question, peut-on utiliser cette méthode pour un fichier distant qui n'est pas dans le même répertoire que le fichier dans lequel on applique cette macro ?!

J'ai bien entendu essayé et ce, sans succés.

voici mon code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
   repertoire = "\Path\..\Test Reporting\"
   Dim rs As ADODB.Recordset
   Set cnn = New ADODB.Connection
   cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "DVSource.xls"
   Set rs = cnn.Execute("SELECT noms FROM MaBD where noms<>'' ORDER BY noms")
    Sheets("Feuil2").[A2:A1000].ClearContents
   Sheets("Feuil2").[A2].CopyFromRecordset rs
  End If
End Sub

Bien entendu il existe Feuil2 dans mon fichier.

Quelqu'un a une idée ?!
 
Re : Données/Validation classeur fermé Distant

Bonjour,

Voir PJ

Code:
Liste Donnée/Validation avec classeur fermé

-Les données sont dans un classeur fermé DVSource.xls
-Elles sont copiées dans l'onglet Liste de ce classeur

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$2" Then
   repertoire = ThisWorkbook.Path & "\"
   Dim rs As ADODB.Recordset
   Set cnn = New ADODB.Connection
   cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "DVSource.xls"
   Set rs = cnn.Execute("SELECT noms FROM MaBD where noms<>'' ORDER BY noms")
    Sheets("Liste").[A2:A1000].ClearContents
   Sheets("Liste").[A2].CopyFromRecordset rs
  End If
End Sub

JB
 

Pièces jointes

Re : Données/Validation classeur fermé Distant

Merci de me redonner le code mais je ne le comprends toujours pas..

D'ailleurs quand s'active-t-il ?! à chaque fois que je change mon curseur de cellule ?!

Je n'arrive pas à l'adapter à un autre fichier..

des explication un peu plus précise si possible ?! 😱
 
Re : Données/Validation classeur fermé Distant

Bonjour à tous,

Pour que ce code marche, dans l'éditeur VBA :
Menu Outils-Références
Cocher : Microsoft ActiveX Data Objects 2.X Library

D'autre part le classeur DVSource.xls devra contenir une liste nommée MaBD contenant un champ Noms
 
Re : Données/Validation classeur fermé Distant

J'ai bien ces noms et données.
Lorsque je coche tous les Microsoft ActiveX Data Objects 2.X Library il me dit qu'il y a un projet, de bibliothéque ou de domaine existe.

je n'ai pu installer que :
Microsoft ActiveX Data Objects 2.8 Multiobject Library
Microsoft ActiveX Data Objects 2.0 Library

Comment s'active cette macro ?!
 
Re : Données/Validation classeur fermé Distant

Il ne faut pas que tu coches
tous les Microsoft ActiveX Data Objects 2.X Library

Coches en un seul (le plus récent), ça suffit.
J'ai mis un X car le numéro peut dépendre de ta version Excel...

Ensuite tu executes ta macro et dis nous où ça plante et avec quel message.
 
Re : Données/Validation classeur fermé Distant

Oauip j'ai tout bien comme il faut !

Si j'ai bien pigé la macro fait une copie du champs dans un autre onglet en faisant une espéce de requéte BD..

Mais dés que j'efface ce qu'il y a dans l'onglet, que je le relance histiore de voir s'il me recopie les data.. et bien il ne recopie plus rien..
😵
 
Re : Données/Validation classeur fermé Distant

Le code est exécuté à l'ouverture du classeur:

Code:
Sub auto_open()
   ' Microsoft activex data object 2.8 à cocher
   repertoire = ThisWorkbook.Path & "\"
   Dim rs As ADODB.Recordset
   Set cnn = New ADODB.Connection
   cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "DVSource.xls"
   Set rs = cnn.Execute("SELECT noms FROM MaBD where noms<>'' ORDER BY noms")
   Sheets("Liste").[A2:A1000].ClearContents
   Sheets("Liste").[A2].CopyFromRecordset rs
End Sub

JB
 
Re : Données/Validation classeur fermé Distant

merci BOISGONTIER, ton code fonctionne parfaitement,

Maintenant est-ce que l'update peut se faire en temps réel ou faut-il toujours relancer la macro ?!
 
Re : Données/Validation classeur fermé Distant

Code:
Dim temps
Sub auto_open()
  maj
End Sub
Sub maj()
   ' Microsoft activex data object 2.8 à cocher
   repertoire = ThisWorkbook.Path & "\"
   Dim rs As ADODB.Recordset
   Set cnn = New ADODB.Connection
   cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "DVSource.xls"
   Set rs = cnn.Execute("SELECT noms FROM MaBD where noms<>'' ORDER BY noms")
   Sheets("Liste").[A2:A1000].ClearContents
   Sheets("Liste").[A2].CopyFromRecordset rs
   Set rs = Nothing
   Set cnn = Nothing
   temps = Now + TimeValue("00:00:20")
   Application.OnTime temps, "maj"
End Sub

Sub auto_close()
  On Error Resume Next
  Application.OnTime temps, Procedure:="maj", Schedule:=False
End Sub

JB
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…