OVH Cloud OVH Cloud

.: Trier :.

7 réponses
Avatar
Didier
Bonjour,
J'utilise la fonction "Index...Equiv" pour aller chercher des infos dans un
onglet base de donnée de mon classeur, et cela fonctionne très bien.
Je cherche maintenant, dans la feuille "résultats", à extraire tous les
enregistrements répondant au même critère de catégorie, à savoir, A, B,
C...., pour les formater dans une autre feuille du classeur.
En clair je veux faire un tri par catégorie, sans utiliser "Données/Trier",
ou "Filtre automatique".
Merci à Tous

7 réponses

Avatar
Eric
Bonsoir,
Sans entrer dans des macros plus ou moins complexes, je pense qu'il doit
être possible de regrouper tes informations en utilisant la fonction
Recherchev. Une colonne RechercheV sur la categorie A, une colonne
RechercheV sur la categorie B, etc... voir un onglet par catégories...

Courage & bonne humeur! :)
Eric

"Didier" a écrit dans le message de news:
bems7i$egk$
Bonjour,
J'utilise la fonction "Index...Equiv" pour aller chercher des infos dans
un

onglet base de donnée de mon classeur, et cela fonctionne très bien.
Je cherche maintenant, dans la feuille "résultats", à extraire tous les
enregistrements répondant au même critère de catégorie, à savoir, A, B,
C...., pour les formater dans une autre feuille du classeur.
En clair je veux faire un tri par catégorie, sans utiliser
"Données/Trier",

ou "Filtre automatique".
Merci à Tous




Avatar
Didier
Mereci ;-)
"Eric" a écrit dans le message de news:

Bonsoir,
Sans entrer dans des macros plus ou moins complexes, je pense qu'il doit
être possible de regrouper tes informations en utilisant la fonction
Recherchev. Une colonne RechercheV sur la categorie A, une colonne
RechercheV sur la categorie B, etc... voir un onglet par catégories...

Courage & bonne humeur! :)
Eric

"Didier" a écrit dans le message de news:
bems7i$egk$
Bonjour,
J'utilise la fonction "Index...Equiv" pour aller chercher des infos dans
un

onglet base de donnée de mon classeur, et cela fonctionne très bien.
Je cherche maintenant, dans la feuille "résultats", à extraire tous les
enregistrements répondant au même critère de catégorie, à savoir, A, B,
C...., pour les formater dans une autre feuille du classeur.
En clair je veux faire un tri par catégorie, sans utiliser
"Données/Trier",

ou "Filtre automatique".
Merci à Tous








Avatar
michdenis
Bonjour Didier,

Voici une façon de faire : Utilise ADO 'Rapide et simple

;-))

Dans la procédure tu définis les variables suivantes :

A ) 'Nom de la feuille où sont les données
B ) 'Nom de la feuille où tu veux copier les données
C ) 'Le texte de la requête qui sera exécutée.

Tu dois ajouter la bibliothèque suivante à ton classeur :
"Microsoft activex data object 2.0 librairy"


'------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, FeuilData As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
Dim FeuilDest As String

'Nom de la feuille où sont les données
FeuilData = "denis"

'Nom de la feuille où tu veux copier les données
FeuilDest = "Feuil2"

'La requête qui sera exécutée.
Requete = "SELECT * From [" & FeuilData & "$] " & vbCrLf & _
"where Ville = 'Boston' and Pays = 'Etats-Unis' "

'Fichier sur lequel se fera la requête :
File = ThisWorkbook.FullName

'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets(FeuilDest)
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With

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

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If

Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing

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


Salutations!



"Didier" a écrit dans le message de news:bems7i$egk$
Bonjour,
J'utilise la fonction "Index...Equiv" pour aller chercher des infos dans un
onglet base de donnée de mon classeur, et cela fonctionne très bien.
Je cherche maintenant, dans la feuille "résultats", à extraire tous les
enregistrements répondant au même critère de catégorie, à savoir, A, B,
C...., pour les formater dans une autre feuille du classeur.
En clair je veux faire un tri par catégorie, sans utiliser "Données/Trier",
ou "Filtre automatique".
Merci à Tous
Avatar
michdenis
Bonjour Didier,

Tu ouvres VBE , Raccourci clavier : Alt + F11

Barre d'outils / outils / référence / et tu coches dans
la liste déroulant la référence suivante :

Microsoft activex data object 2.0 librairy


Salutations!




"Didier" a écrit dans le message de news:ben45b$kfb$
Pas mal !! mais terrain inconnu pour moi ! va falloir bosser un peu :-)
Ou puis je telecharger "Microsoft activex data object 2.0 librairy" ? chez
krosoft ?
@+
"michdenis" a écrit dans le message de news:
exmSL$
Bonjour Didier,

Voici une façon de faire : Utilise ADO 'Rapide et simple

;-))

Dans la procédure tu définis les variables suivantes :

A ) 'Nom de la feuille où sont les données
B ) 'Nom de la feuille où tu veux copier les données
C ) 'Le texte de la requête qui sera exécutée.

Tu dois ajouter la bibliothèque suivante à ton classeur :
"Microsoft activex data object 2.0 librairy"


'------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, FeuilData As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
Dim FeuilDest As String

'Nom de la feuille où sont les données
FeuilData = "denis"

'Nom de la feuille où tu veux copier les données
FeuilDest = "Feuil2"

'La requête qui sera exécutée.
Requete = "SELECT * From [" & FeuilData & "$] " & vbCrLf & _
"where Ville = 'Boston' and Pays = 'Etats-Unis' "

'Fichier sur lequel se fera la requête :
File = ThisWorkbook.FullName

'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets(FeuilDest)
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With

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

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If

Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing

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


Salutations!



"Didier" a écrit dans le message de
news:bems7i$egk$

Bonjour,
J'utilise la fonction "Index...Equiv" pour aller chercher des infos dans
un

onglet base de donnée de mon classeur, et cela fonctionne très bien.
Je cherche maintenant, dans la feuille "résultats", à extraire tous les
enregistrements répondant au même critère de catégorie, à savoir, A, B,
C...., pour les formater dans une autre feuille du classeur.
En clair je veux faire un tri par catégorie, sans utiliser
"Données/Trier",

ou "Filtre automatique".
Merci à Tous





Avatar
Didier
Merci, j'ai pigé

"michdenis" a écrit dans le message de news:
#qGyMj#
Bonjour Didier,

Tu ouvres VBE , Raccourci clavier : Alt + F11

Barre d'outils / outils / référence / et tu coches dans
la liste déroulant la référence suivante :

Microsoft activex data object 2.0 librairy


Salutations!




"Didier" a écrit dans le message de
news:ben45b$kfb$

Pas mal !! mais terrain inconnu pour moi ! va falloir bosser un peu :-)
Ou puis je telecharger "Microsoft activex data object 2.0 librairy" ? chez
krosoft ?
@+
"michdenis" a écrit dans le message de news:
exmSL$
Bonjour Didier,

Voici une façon de faire : Utilise ADO 'Rapide et simple

;-))

Dans la procédure tu définis les variables suivantes :

A ) 'Nom de la feuille où sont les données
B ) 'Nom de la feuille où tu veux copier les données
C ) 'Le texte de la requête qui sera exécutée.

Tu dois ajouter la bibliothèque suivante à ton classeur :
"Microsoft activex data object 2.0 librairy"


'------------------------------
Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, FeuilData As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
Dim FeuilDest As String

'Nom de la feuille où sont les données
FeuilData = "denis"

'Nom de la feuille où tu veux copier les données
FeuilDest = "Feuil2"

'La requête qui sera exécutée.
Requete = "SELECT * From [" & FeuilData & "$] " & vbCrLf & _
"where Ville = 'Boston' and Pays = 'Etats-Unis' "

'Fichier sur lequel se fera la requête :
File = ThisWorkbook.FullName

'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets(FeuilDest)
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With

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

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic

'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If

Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing

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


Salutations!



"Didier" a écrit dans le message de
news:bems7i$egk$

Bonjour,
J'utilise la fonction "Index...Equiv" pour aller chercher des infos dans
un

onglet base de donnée de mon classeur, et cela fonctionne très bien.
Je cherche maintenant, dans la feuille "résultats", à extraire tous les
enregistrements répondant au même critère de catégorie, à savoir, A, B,
C...., pour les formater dans une autre feuille du classeur.
En clair je veux faire un tri par catégorie, sans utiliser
"Données/Trier",

ou "Filtre automatique".
Merci à Tous










Avatar
sabatier
ou, si tu aimes la simplicité, didier, icône Visual Basic Editor dans ta
barre d'outils
jps

michdenis a écrit:
Bonjour Didier,

Tu ouvres VBE , Raccourci clavier : Alt + F11



Avatar
AV
Voici une façon de faire : Utilise ADO 'Rapide et simple


Effectivement, c'est vachement plus simple qu'un filtre !

;-))
AV