Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2590 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA et Excel aller chercher des données sur d'autres fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA et Excel aller chercher des données sur d'autres fichiers

n°2003872
cajamarqui​no
Posté le 22-06-2010 à 21:03:42  profilanswer
 

Bonjour,  
 
 
Bonjour,  
 
Je suis en train de faire une macro VBA pour Excel qui permet d’aller chercher certaines informations dans un onglet pour les faire apparaître sur un autre.
Voila un exemple très simple de code pour illustrer:  
 
Sub exempletest()
 
With ThisWorkbook
 
Dim i As Integer
Dim n As Integer
Dim k As Integer
Dim bool As Double
Dim etat As String
Dim valeur As String
Dim ok As String
 
n = 7
k = 2
ok = "ok"
 
For i = 1 To n
 
etat = ThisWorkbook.Worksheets("table" ).Cells(2 + i, 1)
 
bool = StrComp(etat, ok, vbTextCompare)
 
If bool = 0 Then
 
valeur = ThisWorkbook.Worksheets("table" ).Cells(2 + i, 2)
 
ThisWorkbook.Worksheets("travail" ).Cells(2 + k, 1) = valeur
 
k = k + 1
 
End If
Next
 
End With
End Sub

 
Il s’agit donc ici de recopier dans l’onglet « travail », les valeurs qui ont un ok dans leur ligne dans l’onglet « table »
 
J’aimerai savoir si il serait possible de faire la même chose mais en allant chercher ces données sur un autre fichier Excel qui ne serait pas ouvert. (Par exemple, au lieu de regarder dans ThisWorkbook.Worksheets("table" ) , aller chercher dans un autre fichier Excel nommé « Table » présent sur mon disque dur avec un onglet table). Par exemple si on pouvait mettre quelque chose comme :  Table.Worksheets("table" ).
 
D’autre part, est-il également possible de lancer la macro automatiquement sans avoir besoin d’ouvrir le fichier dans lequel je veux écrire ? (Par exemple chaque soir à une heure précise ou à chaque modification du fichier dans lequel je vais chercher les informations.)
 

mood
Publicité
Posté le 22-06-2010 à 21:03:42  profilanswer
 

n°2003905
johnmjs
Posté le 22-06-2010 à 22:01:31  profilanswer
 

Salut, je cherche actuellement à faire quelque chose de similaire (pas tout fait mais c'est dans le même genre), j'ai trouvé ce lien : http://frederic.sigonneau.free.fr/Ado.htm j'ai pas eu le temps de regarder mais ça pourra peut etre t'aider, tiens moi au courant du résultat

n°2004201
SuppotDeSa​Tante
Aka dje69r
Posté le 23-06-2010 à 17:00:13  profilanswer
 

Jette un oeil sur le topic unique Excel, je crois avoir deja repondu a ce genre de chose pour attaquer des fichiers externes a Excel et non ouvert...


Message édité par SuppotDeSaTante le 23-06-2010 à 17:00:26

---------------
Soyez malin, louez entre voisins !
n°2004770
cajamarqui​no
Posté le 25-06-2010 à 13:32:12  profilanswer
 

johnmjs a écrit :

Salut, je cherche actuellement à faire quelque chose de similaire (pas tout fait mais c'est dans le même genre), j'ai trouvé ce lien : http://frederic.sigonneau.free.fr/Ado.htm j'ai pas eu le temps de regarder mais ça pourra peut etre t'aider, tiens moi au courant du résultat


 
Merci pour le lien, il y a pas mal de chose intéressante dedans. Ca m’a permis de trouver une solution. Je ne pense pas que ce soit la plus simple et la moins gourmande en temps d’exécution mais au moins ça marche.
Pour illustrer je vais reprendre l’exemple précédent. Voila le code que j’utilise maintenant :  
 
 
Sub exempletest()
 
With ThisWorkbook
 
Dim fich$, feuil$, Cell As Range
  fich = "D\fichier.xls"
  feuil = "table"
‘Mettre l’emplacement du fichier et le nom de l’onglet dans lequel sont les données
 
 
Dim i As Integer
Dim n As Integer
Dim k As Integer
Dim bool As Double
Dim etat As String
Dim valeur As String
Dim ok As String
 
n = 7
k = 2
ok = "ok"
 
For i = 1 To n
 
Set Cell = Range("A" & i)
etat = GetValueWithADO(fich, feuil, Cell)
 
 
bool = StrComp(etat, ok, vbTextCompare)
 
If bool = 0 Then
 
Set Cell = Range("B" & i)
 valeur = GetValueWithADO(fich, feuil, Cell)
 
ThisWorkbook.Worksheets("travail" ).Cells(2 + k, 1) = valeur
 
k = k + 1
 
End If
Next
 
End With
End Sub
 
 
' Fonction pour récupérer les données sur un autre fichier  
 
Function GetValueWithADO(Classeur$, Feuille$, Cell As Range)
'renvoie la valeur de la cellule Cell de la feuille Feuille
'du classeur fermé Classeur
Dim RcdSet As Object
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
   
  'prépare une "base de données" bidon pour la clause SELECT
  '(une entête fictive et une ligne de données)
  Set dummyBase = Cell.Resize(2)
   
  'prépare les commandes ADO et SQL
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & Classeur & ";" & _
                "Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";"
  strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
   
  'crée l'objet Recordset
  Set RcdSet = CreateObject("ADODB.Recordset" )
   
  'va chercher l'info
  RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText
   
  'et la renvoie
  GetValueWithADO = Application.Clean(RcdSet(0))
  'autre syntaxe possible
'  GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1))
   
  'nettoyage
  Set RcdSet = Nothing
End Function 'fs

 
 
 
Voila, si tu as des questions, n’hésite pas et merci encore.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA et Excel aller chercher des données sur d'autres fichiers

 

Sujets relatifs
problème affichage données mysql/phpRécupération de données : ’ se transforme en ?
Comment protéger les listes déroulantes sur excel 2000Copie de lignes avec format dans VBA
Comment supprimer un bouton sur userfom avec du code VBA ?Protection d'une page permettant l'accès à une base de données sql
Fermeture Excel bugLister les fichiers par date de creation
VBA : Problème recherchev VlookupBase de données
Plus de sujets relatifs à : VBA et Excel aller chercher des données sur d'autres fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR