Je voulais savoir s'il était de possible de faire un équivalent de SELECT *
FROM maTable par une macro Excel sur un tableau Excel.
Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE
qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par
exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
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
Laurent M
Bonjour,
Le filtre automatique ne convient pas? S'il s'agit d'extraire les données ailleurs, le filtre élaboré peut très bien faire le travail. Précise tes besoins.
A+
Laurent
Bonjour,
Le filtre automatique ne convient pas? S'il s'agit d'extraire les
données ailleurs, le filtre élaboré peut très bien faire le travail.
Précise tes besoins.
Le filtre automatique ne convient pas? S'il s'agit d'extraire les données ailleurs, le filtre élaboré peut très bien faire le travail. Précise tes besoins.
A+
Laurent
Bourby
bonsoir, si le "tableau" est une plage continue de cellules (et non pas un Array) nommée monTableau dans Excel: Sub selectionner() Dim maPlageTableau As Range, maSelection As Range Set maPlageTableau = [monTableau] For i = 1 To maPlageTableau.Rows.Count If maPlageTableau(i, 1).Value = 3 Then If maSelection Is Nothing Then Set maSelection = maPlageTableau(i, 1) Else Set maSelection = Union(maSelection, maPlageTableau(i, 1)) End If End If Next i maSelection.Select End Sub
Est-ce que cela convient?
Bourby
"Rekam" a écrit dans le message news:
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT *
FROM maTable par une macro Excel sur un tableau Excel. Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE
qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
bonsoir,
si le "tableau" est une plage continue de cellules (et non pas un Array)
nommée monTableau dans Excel:
Sub selectionner()
Dim maPlageTableau As Range, maSelection As Range
Set maPlageTableau = [monTableau]
For i = 1 To maPlageTableau.Rows.Count
If maPlageTableau(i, 1).Value = 3 Then
If maSelection Is Nothing Then
Set maSelection = maPlageTableau(i, 1)
Else
Set maSelection = Union(maSelection, maPlageTableau(i, 1))
End If
End If
Next i
maSelection.Select
End Sub
Est-ce que cela convient?
Bourby
"Rekam" <Rekam@discussions.microsoft.com> a écrit dans le message news:
2E9EA650-FB4C-407C-8C0A-9814E56720F9@microsoft.com...
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT
*
FROM maTable par une macro Excel sur un tableau Excel.
Je m'explique. J'ai un tableau de données et je voudrais récupérer un
RANGE
qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par
exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
bonsoir, si le "tableau" est une plage continue de cellules (et non pas un Array) nommée monTableau dans Excel: Sub selectionner() Dim maPlageTableau As Range, maSelection As Range Set maPlageTableau = [monTableau] For i = 1 To maPlageTableau.Rows.Count If maPlageTableau(i, 1).Value = 3 Then If maSelection Is Nothing Then Set maSelection = maPlageTableau(i, 1) Else Set maSelection = Union(maSelection, maPlageTableau(i, 1)) End If End If Next i maSelection.Select End Sub
Est-ce que cela convient?
Bourby
"Rekam" a écrit dans le message news:
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT *
FROM maTable par une macro Excel sur un tableau Excel. Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE
qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
LSteph
Bonsoir Rekam, A part que tu peux vouloir soit la façon d'obtenir soit le résultat de ton select autrement:
1-d'abord tu peux le faire un SQL dans le menu données en créant une requête sur un fichier excel via msquery sinon si tu demandes cela c'est que tu connais déjà d'autres procèdés générant du SQL , Access , BO, autres bases DBF.. Oracle... donc si tu as office pro, access est quand même là et plutôt efficace pour cela...
2-Sinon on peut faire aussi avec excel
a-D'abord tout simplementdans le menu Données en appliquant un filtre.
b-En formule aussi dans une feuille excel en utilisant les formules RechercheV ou en combinant les formules Index et Equiv
3-Mais si tu souhaites une macro voici un exemple en VBA sachant que ta table est Feuil1 et c'est à placer alt+f11 Ctrl+rdans le code de feuil2 qui recevra le résultat:
'**** Private Sub Worksheet_Activate() Dim maval As String Dim c As Range Dim cpt As Long cpt = 1 maval = InputBox("valeur à sélectionner") Application.ScreenUpdating = False ActiveSheet.Cells.ClearContents With Worksheets("feuil1") ActiveSheet.Rows(1).Cells = .Rows(1).Cells.Value For Each c In .Range("a2:a1000").Cells If IsEmpty(c) Then Exit Sub If c = maval Then cpt = cpt + 1 ActiveSheet.Rows(cpt).Cells = .Rows(c.Row).Cells.Value End If Next End With End Sub '*** ' 'lSteph
"Rekam" a écrit dans le message de news:
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT * FROM maTable par une macro Excel sur un tableau Excel. Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
Bonsoir Rekam,
A part que tu peux vouloir soit la façon d'obtenir soit le résultat de ton
select autrement:
1-d'abord tu peux le faire un SQL dans le menu données en créant une requête
sur un fichier excel via msquery
sinon si tu demandes cela c'est que tu connais déjà d'autres procèdés
générant du SQL , Access , BO,
autres bases DBF.. Oracle...
donc si tu as office pro, access est quand même là et plutôt efficace pour
cela...
2-Sinon on peut faire aussi avec excel
a-D'abord tout simplementdans le menu Données en appliquant un filtre.
b-En formule aussi dans une feuille excel en utilisant
les formules RechercheV ou en combinant les formules Index et Equiv
3-Mais si tu souhaites une macro voici un exemple en VBA
sachant que ta table est Feuil1 et c'est
à placer alt+f11 Ctrl+rdans le code de feuil2 qui recevra le résultat:
'****
Private Sub Worksheet_Activate()
Dim maval As String
Dim c As Range
Dim cpt As Long
cpt = 1
maval = InputBox("valeur à sélectionner")
Application.ScreenUpdating = False
ActiveSheet.Cells.ClearContents
With Worksheets("feuil1")
ActiveSheet.Rows(1).Cells = .Rows(1).Cells.Value
For Each c In .Range("a2:a1000").Cells
If IsEmpty(c) Then Exit Sub
If c = maval Then
cpt = cpt + 1
ActiveSheet.Rows(cpt).Cells = .Rows(c.Row).Cells.Value
End If
Next
End With
End Sub
'***
'
'lSteph
"Rekam" <Rekam@discussions.microsoft.com> a écrit dans le message de news:
2E9EA650-FB4C-407C-8C0A-9814E56720F9@microsoft.com...
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT
*
FROM maTable par une macro Excel sur un tableau Excel.
Je m'explique. J'ai un tableau de données et je voudrais récupérer un
RANGE
qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par
exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
Bonsoir Rekam, A part que tu peux vouloir soit la façon d'obtenir soit le résultat de ton select autrement:
1-d'abord tu peux le faire un SQL dans le menu données en créant une requête sur un fichier excel via msquery sinon si tu demandes cela c'est que tu connais déjà d'autres procèdés générant du SQL , Access , BO, autres bases DBF.. Oracle... donc si tu as office pro, access est quand même là et plutôt efficace pour cela...
2-Sinon on peut faire aussi avec excel
a-D'abord tout simplementdans le menu Données en appliquant un filtre.
b-En formule aussi dans une feuille excel en utilisant les formules RechercheV ou en combinant les formules Index et Equiv
3-Mais si tu souhaites une macro voici un exemple en VBA sachant que ta table est Feuil1 et c'est à placer alt+f11 Ctrl+rdans le code de feuil2 qui recevra le résultat:
'**** Private Sub Worksheet_Activate() Dim maval As String Dim c As Range Dim cpt As Long cpt = 1 maval = InputBox("valeur à sélectionner") Application.ScreenUpdating = False ActiveSheet.Cells.ClearContents With Worksheets("feuil1") ActiveSheet.Rows(1).Cells = .Rows(1).Cells.Value For Each c In .Range("a2:a1000").Cells If IsEmpty(c) Then Exit Sub If c = maval Then cpt = cpt + 1 ActiveSheet.Rows(cpt).Cells = .Rows(c.Row).Cells.Value End If Next End With End Sub '*** ' 'lSteph
"Rekam" a écrit dans le message de news:
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT * FROM maTable par une macro Excel sur un tableau Excel. Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
- MaBd: plage qui englobe tes données (y compris la ligne d'en-têtes) - MaZoneRésultats: cellule en haut à gauche de la zone où tu veux placer les résultats -MesCritères est une plage contenant le critère. Cette zone doit respecter certaines normes qu'il serait un peu fastidieux d'aborder ici (mais je vais supposer que tu sais comment marche le filtre élaboré, sinon regarde dans l'aide ou rappelle)
- MaBd: plage qui englobe tes données (y compris la ligne d'en-têtes)
- MaZoneRésultats: cellule en haut à gauche de la zone où tu veux placer
les résultats
-MesCritères est une plage contenant le critère. Cette zone doit
respecter certaines normes qu'il serait un peu fastidieux d'aborder ici
(mais je vais supposer que tu sais comment marche le filtre élaboré,
sinon regarde dans l'aide ou rappelle)
- MaBd: plage qui englobe tes données (y compris la ligne d'en-têtes) - MaZoneRésultats: cellule en haut à gauche de la zone où tu veux placer les résultats -MesCritères est une plage contenant le critère. Cette zone doit respecter certaines normes qu'il serait un peu fastidieux d'aborder ici (mais je vais supposer que tu sais comment marche le filtre élaboré, sinon regarde dans l'aide ou rappelle)
A+
Laurent
Rekam
Salut
J'ai effectivement Access et j'ai effectivement décider de l'utiliser comme bd plutôt qu'une feuille excel. Je suis donc dessus. Pour l'instant ça va.
Par contre, le filtre avancé que propose Laurent est également très intéressant. Il pourrait me servir pour d'autres choses. En tout cas, merci à tous et bonne soirée! Rekam
"LSteph" wrote:
Bonsoir Rekam, A part que tu peux vouloir soit la façon d'obtenir soit le résultat de ton select autrement:
1-d'abord tu peux le faire un SQL dans le menu données en créant une requête sur un fichier excel via msquery sinon si tu demandes cela c'est que tu connais déjà d'autres procèdés générant du SQL , Access , BO, autres bases DBF.. Oracle... donc si tu as office pro, access est quand même là et plutôt efficace pour cela...
2-Sinon on peut faire aussi avec excel
a-D'abord tout simplementdans le menu Données en appliquant un filtre.
b-En formule aussi dans une feuille excel en utilisant les formules RechercheV ou en combinant les formules Index et Equiv
3-Mais si tu souhaites une macro voici un exemple en VBA sachant que ta table est Feuil1 et c'est à placer alt+f11 Ctrl+rdans le code de feuil2 qui recevra le résultat:
'**** Private Sub Worksheet_Activate() Dim maval As String Dim c As Range Dim cpt As Long cpt = 1 maval = InputBox("valeur à sélectionner") Application.ScreenUpdating = False ActiveSheet.Cells.ClearContents With Worksheets("feuil1") ActiveSheet.Rows(1).Cells = .Rows(1).Cells.Value For Each c In .Range("a2:a1000").Cells If IsEmpty(c) Then Exit Sub If c = maval Then cpt = cpt + 1 ActiveSheet.Rows(cpt).Cells = .Rows(c.Row).Cells.Value End If Next End With End Sub '*** ' 'lSteph
"Rekam" a écrit dans le message de news:
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT * FROM maTable par une macro Excel sur un tableau Excel. Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
Salut
J'ai effectivement Access et j'ai effectivement décider de l'utiliser comme
bd plutôt qu'une feuille excel. Je suis donc dessus. Pour l'instant ça va.
Par contre, le filtre avancé que propose Laurent est également très
intéressant. Il pourrait me servir pour d'autres choses. En tout cas, merci à
tous et bonne soirée!
Rekam
"LSteph" wrote:
Bonsoir Rekam,
A part que tu peux vouloir soit la façon d'obtenir soit le résultat de ton
select autrement:
1-d'abord tu peux le faire un SQL dans le menu données en créant une requête
sur un fichier excel via msquery
sinon si tu demandes cela c'est que tu connais déjà d'autres procèdés
générant du SQL , Access , BO,
autres bases DBF.. Oracle...
donc si tu as office pro, access est quand même là et plutôt efficace pour
cela...
2-Sinon on peut faire aussi avec excel
a-D'abord tout simplementdans le menu Données en appliquant un filtre.
b-En formule aussi dans une feuille excel en utilisant
les formules RechercheV ou en combinant les formules Index et Equiv
3-Mais si tu souhaites une macro voici un exemple en VBA
sachant que ta table est Feuil1 et c'est
à placer alt+f11 Ctrl+rdans le code de feuil2 qui recevra le résultat:
'****
Private Sub Worksheet_Activate()
Dim maval As String
Dim c As Range
Dim cpt As Long
cpt = 1
maval = InputBox("valeur à sélectionner")
Application.ScreenUpdating = False
ActiveSheet.Cells.ClearContents
With Worksheets("feuil1")
ActiveSheet.Rows(1).Cells = .Rows(1).Cells.Value
For Each c In .Range("a2:a1000").Cells
If IsEmpty(c) Then Exit Sub
If c = maval Then
cpt = cpt + 1
ActiveSheet.Rows(cpt).Cells = .Rows(c.Row).Cells.Value
End If
Next
End With
End Sub
'***
'
'lSteph
"Rekam" <Rekam@discussions.microsoft.com> a écrit dans le message de news:
2E9EA650-FB4C-407C-8C0A-9814E56720F9@microsoft.com...
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT
*
FROM maTable par une macro Excel sur un tableau Excel.
Je m'explique. J'ai un tableau de données et je voudrais récupérer un
RANGE
qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par
exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!
J'ai effectivement Access et j'ai effectivement décider de l'utiliser comme bd plutôt qu'une feuille excel. Je suis donc dessus. Pour l'instant ça va.
Par contre, le filtre avancé que propose Laurent est également très intéressant. Il pourrait me servir pour d'autres choses. En tout cas, merci à tous et bonne soirée! Rekam
"LSteph" wrote:
Bonsoir Rekam, A part que tu peux vouloir soit la façon d'obtenir soit le résultat de ton select autrement:
1-d'abord tu peux le faire un SQL dans le menu données en créant une requête sur un fichier excel via msquery sinon si tu demandes cela c'est que tu connais déjà d'autres procèdés générant du SQL , Access , BO, autres bases DBF.. Oracle... donc si tu as office pro, access est quand même là et plutôt efficace pour cela...
2-Sinon on peut faire aussi avec excel
a-D'abord tout simplementdans le menu Données en appliquant un filtre.
b-En formule aussi dans une feuille excel en utilisant les formules RechercheV ou en combinant les formules Index et Equiv
3-Mais si tu souhaites une macro voici un exemple en VBA sachant que ta table est Feuil1 et c'est à placer alt+f11 Ctrl+rdans le code de feuil2 qui recevra le résultat:
'**** Private Sub Worksheet_Activate() Dim maval As String Dim c As Range Dim cpt As Long cpt = 1 maval = InputBox("valeur à sélectionner") Application.ScreenUpdating = False ActiveSheet.Cells.ClearContents With Worksheets("feuil1") ActiveSheet.Rows(1).Cells = .Rows(1).Cells.Value For Each c In .Range("a2:a1000").Cells If IsEmpty(c) Then Exit Sub If c = maval Then cpt = cpt + 1 ActiveSheet.Rows(cpt).Cells = .Rows(c.Row).Cells.Value End If Next End With End Sub '*** ' 'lSteph
"Rekam" a écrit dans le message de news:
Bien le bonsoir!
Je voulais savoir s'il était de possible de faire un équivalent de SELECT * FROM maTable par une macro Excel sur un tableau Excel. Je m'explique. J'ai un tableau de données et je voudrais récupérer un RANGE qui ne contient que les lignes dont la 1ère case du tableau vaut 3 (par exemple). En sql, je vois bien comment faire, mais là, je sèche.
Si qqun à une idée, je suis preneur ! Merci d'avance!