Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre élaboré sur plage appartenant à un classeur non ouvert

3 réponses
Avatar
gb
Bonjour,

Depuis un classeur B, je fais un tri élaboré d'une plage située dans un
classeur A (Zone de critères et la plage de destination appartiennent au
classeur B)
Tout se passe bien lorsque je lance la macro écrite à cet effet, les 2
classeurs étant ouverts, mais comme modifier la macro pour que je ne sois
pas obligé d'ouvrit le classeur source A
Le chemin de celui-ci étant: C:\Commune\Assurances

Merci d'avance

3 réponses

Avatar
anonymousA
bonjour,

le + simple sans programmer quoique ce soit est sans doute d'utiliser
MSQuery qui est une fonctionnalité d'Excel lui-même et te permettra de
faire des requêtes comples (donc en réalité l'équivalent de fltres
élaborés) . Si tu ne l'as pas installé , fais le grâce à ton CD
d'installation d'Excel.

Si tu n'y tiens pas, 1 possibilité de récupération de données de
fichiers fermés, est d'utiliser ADO.De nombreux exemples de ce qu'on
peut faire avec ADO sont disponibles à la rubrique VBA Excel/ADO du site
suivant p.e
http://frederic.sigonneau.free.fr/

A+

Bonjour,

Depuis un classeur B, je fais un tri élaboré d'une plage située dans un
classeur A (Zone de critères et la plage de destination appartiennent au
classeur B)
Tout se passe bien lorsque je lance la macro écrite à cet effet, les 2
classeurs étant ouverts, mais comme modifier la macro pour que je ne sois
pas obligé d'ouvrit le classeur source A
Le chemin de celui-ci étant: C:CommuneAssurances

Merci d'avance




Avatar
gb
Merci pour la réponse d' Anonymous, mais je n'arrive pas à utilser ADO, même
après avoir coché Microsoft ActiveX Data Objets 2.0 Library
J'abandonne pour cette fois, mais je vais essayer d'explorer plus tard cette
nouvelle piste
"anonymousA" a écrit dans le message de news:
433e34f2$0$7855$
bonjour,

le + simple sans programmer quoique ce soit est sans doute d'utiliser
MSQuery qui est une fonctionnalité d'Excel lui-même et te permettra de
faire des requêtes comples (donc en réalité l'équivalent de fltres
élaborés) . Si tu ne l'as pas installé , fais le grâce à ton CD
d'installation d'Excel.

Si tu n'y tiens pas, 1 possibilité de récupération de données de fichiers
fermés, est d'utiliser ADO.De nombreux exemples de ce qu'on peut faire
avec ADO sont disponibles à la rubrique VBA Excel/ADO du site suivant p.e
http://frederic.sigonneau.free.fr/

A+

Bonjour,

Depuis un classeur B, je fais un tri élaboré d'une plage située dans un
classeur A (Zone de critères et la plage de destination appartiennent au
classeur B)
Tout se passe bien lorsque je lance la macro écrite à cet effet, les 2
classeurs étant ouverts, mais comme modifier la macro pour que je ne sois
pas obligé d'ouvrit le classeur source A
Le chemin de celui-ci étant: C:CommuneAssurances

Merci d'avance




Avatar
michdenis
Bonjour GB,

Voici un exemple avec ADO...


Il ne te reste plus qu'à écrire la requête désiré pour extraire tes données.

Tu dois cocher la dernière version de la référence :
"Microsoft ActiveX Data Objets 2.x Librairy"

'----------------------------------
Sub OuvrirLaConnexion()

Dim Con As ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Rg As Range, A As Integer
Dim Requete As String
Dim NomFichier As String

'fichier source
NomFichier = ThisWorkbook.Path & "données.xls"

Set Con = New ADODB.Connection
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & NomFichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

'Définir où copier les données issues
'de la requête
With Worksheets("Feuil2") ' A déterminer
Set Rg = .Range("A1")
End With

'Déterminer la chaîne pour la requête.
'Feuil1 = Nom de la feuille où sont tes données dans le
'classeur source
Requete = "SELECT * From [Feuil1$]"

'Exécution de la requête
Rst.Open Requete, Con, adOpenStatic, adLockReadOnly
'Si le recordset n'est pas vide...
If Rst.EOF = False Then
'Copie le nom des champs du recordset
'dans la première ligne de la feuille
For A = 0 To Rst.Fields.Count - 1
Rg(1, A + 1) = Rst(A).Name
Next
'copie les données du recordset vers la feuille excel
Rg.Offset(1).CopyFromRecordset Rst
End If
'Ferme le recordset,ferme la connection
Rst.Close: Con.Close
'Libère espace mémoire des objets
Set Rst = Nothing: Set Con = Nothing

End Sub
'----------------------------------


Salutations!



"gb" a écrit dans le message de news: 433e2ce1$0$14027$
Bonjour,

Depuis un classeur B, je fais un tri élaboré d'une plage située dans un
classeur A (Zone de critères et la plage de destination appartiennent au
classeur B)
Tout se passe bien lorsque je lance la macro écrite à cet effet, les 2
classeurs étant ouverts, mais comme modifier la macro pour que je ne sois
pas obligé d'ouvrit le classeur source A
Le chemin de celui-ci étant: C:CommuneAssurances

Merci d'avance