Filtre élaboré sur plage appartenant à un classeur non ouvert
3 réponses
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
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
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
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
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
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
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" <anonymousA@wanadoo.fr> a écrit dans le message de news:
433e34f2$0$7855$8fcfb975@news.wanadoo.fr...
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 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
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
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
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
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" <g.bezamat@worldonline.fr> a écrit dans le message de news: 433e2ce1$0$14027$626a14ce@news.free.fr...
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
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