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
Hervé
Salut Opus, Pour le filtrage, avec AutoFilter. Un exemple, la proc cherche d'abords la plage de la feuille (fonction Plage) puis le filtrage se fait en 1er sur la première colonne en recherchant les noms commençants par "Al" ou finissant par "er", ceci fait, elle recherche alors dans ce 1er filtrage les valeurs situées entre 100 et 200 sur la 2ème colonne. Si tu as un enregistrement qui a en 1ère colonne Alain ou Didier et que ces derniers ont en 2ème champ une valeur de 150 les lignes seront visibles, les autres seront alors cachées. Il est possible de faire des filtrages assez fins avec les différents opérateurs (=, <>, >, <, Like, ?, *, #, [!ListeDeLettre], [ListeDeLettre]) Pour l'ajout, il te suffit de trouver la dernière ligne occupée et de décaler vers le bas de 1 ligne pour effectuer l'enregistrement. Le code ci-dessous est très simple mais cela peut être un début :
Sub Ajouter(Nom As String, _ Prenom As String, _ Adresse As String)
Dim Fe As Worksheet Dim Plg As Range Dim Lg As Long
Set Fe = Worksheets("Feuil1") Set Plg = Plage(Fe) Lg = Plg.Rows.Count + 1 Range("A" & Lg) = Nom Range("B" & Lg) = Prenom Range("C" & Lg) = Adresse
Set Plg = Nothing Set Fe = Nothing End Sub
Sub Filtrer() Dim Fe As Worksheet Dim Plg As Range
Set Fe = Worksheets("Feuil1") Set Plg = Plage(Fe) With Plg 'filtrage sur la 1ère colonne .AutoFilter 1, "Op*", xlOr, "*us" 'puis filtrage sur la 2ème colonne .AutoFilter 2, ">100", xlAnd, "<200" End With Set Plg = Nothing Set Fe = Nothing End Sub
Function Plage(Fe As Worksheet) As Range 'fonction qui retourne toute la zone 'utilisée dans la feuille With Fe Set Plage = .Range(.Cells(1, 1), _ .Cells(.Cells.Find("*", .[A1], -4123, , _ 1, 2).Row, .Cells.Find("*", .[A1], -4123, , _ 2, 2).Column)) End With End Function
Hervé.
"Opus" a écrit dans le message news:
Bonjour,
Comment ajouter ou rechercher des enregistrements via VBA dans une (petite)
base de données gérée avec EXCEL?
Où trouver des exemples?
Merci.
Salut Opus,
Pour le filtrage, avec AutoFilter. Un exemple, la proc cherche d'abords la
plage de la feuille (fonction Plage) puis le filtrage se fait en 1er sur la
première colonne en recherchant les noms commençants par "Al" ou finissant
par "er", ceci fait, elle recherche alors dans ce 1er filtrage les valeurs
situées entre 100 et 200 sur la 2ème colonne. Si tu as un enregistrement qui
a en 1ère colonne Alain ou Didier et que ces derniers ont en 2ème champ une
valeur de 150 les lignes seront visibles, les autres seront alors cachées.
Il est possible de faire des filtrages assez fins avec les différents
opérateurs (=, <>, >, <, Like, ?, *, #, [!ListeDeLettre], [ListeDeLettre])
Pour l'ajout, il te suffit de trouver la dernière ligne occupée et de
décaler vers le bas de 1 ligne pour effectuer l'enregistrement.
Le code ci-dessous est très simple mais cela peut être un début :
Sub Ajouter(Nom As String, _
Prenom As String, _
Adresse As String)
Dim Fe As Worksheet
Dim Plg As Range
Dim Lg As Long
Set Fe = Worksheets("Feuil1")
Set Plg = Plage(Fe)
Lg = Plg.Rows.Count + 1
Range("A" & Lg) = Nom
Range("B" & Lg) = Prenom
Range("C" & Lg) = Adresse
Set Plg = Nothing
Set Fe = Nothing
End Sub
Sub Filtrer()
Dim Fe As Worksheet
Dim Plg As Range
Set Fe = Worksheets("Feuil1")
Set Plg = Plage(Fe)
With Plg
'filtrage sur la 1ère colonne
.AutoFilter 1, "Op*", xlOr, "*us"
'puis filtrage sur la 2ème colonne
.AutoFilter 2, ">100", xlAnd, "<200"
End With
Set Plg = Nothing
Set Fe = Nothing
End Sub
Function Plage(Fe As Worksheet) As Range
'fonction qui retourne toute la zone
'utilisée dans la feuille
With Fe
Set Plage = .Range(.Cells(1, 1), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
End Function
Hervé.
"Opus" <Opus@discussions.microsoft.com> a écrit dans le message news:
55DC07AA-BCD6-444E-96E0-ECB11AD3B327@microsoft.com...
Bonjour,
Comment ajouter ou rechercher des enregistrements via VBA dans une
(petite)
Salut Opus, Pour le filtrage, avec AutoFilter. Un exemple, la proc cherche d'abords la plage de la feuille (fonction Plage) puis le filtrage se fait en 1er sur la première colonne en recherchant les noms commençants par "Al" ou finissant par "er", ceci fait, elle recherche alors dans ce 1er filtrage les valeurs situées entre 100 et 200 sur la 2ème colonne. Si tu as un enregistrement qui a en 1ère colonne Alain ou Didier et que ces derniers ont en 2ème champ une valeur de 150 les lignes seront visibles, les autres seront alors cachées. Il est possible de faire des filtrages assez fins avec les différents opérateurs (=, <>, >, <, Like, ?, *, #, [!ListeDeLettre], [ListeDeLettre]) Pour l'ajout, il te suffit de trouver la dernière ligne occupée et de décaler vers le bas de 1 ligne pour effectuer l'enregistrement. Le code ci-dessous est très simple mais cela peut être un début :
Sub Ajouter(Nom As String, _ Prenom As String, _ Adresse As String)
Dim Fe As Worksheet Dim Plg As Range Dim Lg As Long
Set Fe = Worksheets("Feuil1") Set Plg = Plage(Fe) Lg = Plg.Rows.Count + 1 Range("A" & Lg) = Nom Range("B" & Lg) = Prenom Range("C" & Lg) = Adresse
Set Plg = Nothing Set Fe = Nothing End Sub
Sub Filtrer() Dim Fe As Worksheet Dim Plg As Range
Set Fe = Worksheets("Feuil1") Set Plg = Plage(Fe) With Plg 'filtrage sur la 1ère colonne .AutoFilter 1, "Op*", xlOr, "*us" 'puis filtrage sur la 2ème colonne .AutoFilter 2, ">100", xlAnd, "<200" End With Set Plg = Nothing Set Fe = Nothing End Sub
Function Plage(Fe As Worksheet) As Range 'fonction qui retourne toute la zone 'utilisée dans la feuille With Fe Set Plage = .Range(.Cells(1, 1), _ .Cells(.Cells.Find("*", .[A1], -4123, , _ 1, 2).Row, .Cells.Find("*", .[A1], -4123, , _ 2, 2).Column)) End With End Function
Hervé.
"Opus" a écrit dans le message news:
Bonjour,
Comment ajouter ou rechercher des enregistrements via VBA dans une (petite)