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

Extraction de donnees

15 réponses
Avatar
Pierre.M
Bonsoir a tous,

J'ai une base de donnees en Feuil1 et effectue des extractions de
donnees sur des onglets a l'aide de filtres elabores.
Y-a-t-il un moyen d'"actualiser" l'extraction (apres modification de la
BDD ou rajout de lignes) autrement qu'en refaisant toute la manip'?

Merci pour vos conseils.

Pierre.M

10 réponses

1 2
Avatar
JB
Bonsoir,

Il suffit d'utiliser l'enregistreur automatique de macro:
-Outils/Macro/nouvelle macro
-Effectuer une extraction de la BD
-Arrêter l'enregistreur .
-Créer un bouton pour activer la macro

Si on veut que l'actualisation soit automatique dès la saisie:

http://cjoint.com/?dFvwGClnP2

JB
On 31 mar, 20:43, Pierre.M wrote:
Bonsoir a tous,

J'ai une base de donnees en Feuil1 et effectue des extractions de
donnees sur des onglets a l'aide de filtres elabores.
Y-a-t-il un moyen d'"actualiser" l'extraction (apres modification de la
BDD ou rajout de lignes) autrement qu'en refaisant toute la manip'?

Merci pour vos conseils.

Pierre.M


Avatar
Pierre.M
Oui, c'est donc bien ce que je pensais. Merci de me l'avoir confirmer.
Est-il possible d'affecter le code a la selection de l'onglet plutot
qu'a un bouton? C'est a dire executer le code a chaque fois qu'on
selectionne l'onglet dans lequel on realise l'extraction?

Merci encore.

Pierre.M



On 2007-03-31 21:22:57 +0200, "JB" said:

Bonsoir,

Il suffit d'utiliser l'enregistreur automatique de macro:
-Outils/Macro/nouvelle macro
-Effectuer une extraction de la BD
-Arrêter l'enregistreur .
-Créer un bouton pour activer la macro

Si on veut que l'actualisation soit automatique dès la saisie:

http://cjoint.com/?dFvwGClnP2

JB
On 31 mar, 20:43, Pierre.M wrote:
Bonsoir a tous,

J'ai une base de donnees en Feuil1 et effectue des extractions de
donnees sur des onglets a l'aide de filtres elabores.
Y-a-t-il un moyen d'"actualiser" l'extraction (apres modification de la
BDD ou rajout de lignes) autrement qu'en refaisant toute la manip'?

Merci pour vos conseils.

Pierre.M




Avatar
Pierre.M
Cela suppose bien-sur que l'onglet de "reception" de l'extraction est
cree avant.

Est-il possible de rajouter du code pour creer l'onglet si celui-ci
n'existe pas:

En reprenant ton exemple, je veux faire une extraction par ville sur un
onglet portant le nom de la ville (cellule H2). Je clique sur un bouton
"extraire" apres avoir choisi une ville. Si l'onglet du meme nom
n'existe pas il est creer et l'extraction s'y fait. S'il existe deja
alors les donnees de l'extraction sont actualisees sur cet onglet. Idem
pour toutes les autres villes si j'en fais la demande.

Merci beaucoup pour ton aide.

Pierre.M



On 2007-03-31 21:22:57 +0200, "JB" said:

Bonsoir,

Il suffit d'utiliser l'enregistreur automatique de macro:
-Outils/Macro/nouvelle macro
-Effectuer une extraction de la BD
-Arrêter l'enregistreur .
-Créer un bouton pour activer la macro

Si on veut que l'actualisation soit automatique dès la saisie:

http://cjoint.com/?dFvwGClnP2



Avatar
AH60
Bonsoir à Monsieur JB et à toi Pierre.M

si j'ai bien compris voici ce que tu cherche

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$2" Then
Dim sh(), Wsh As Worksheet, i As Long
i = 1
ReDim sh(i To Sheets.Count)
For Each Wsh In ActiveWorkbook.Worksheets
sh(i) = Sheets(i).Name
i = i + 1
Next
ReDim Preserve sh(i)
If IsError(Application.Match(Target, sh, 0)) Then
Sheets.Add.Move after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Target.Value
Extract = ActiveSheet.Name
Else: Sheets(Target.Value).Select
End If

With ActiveSheet
.Range("A1") = "Nom"
.Range("B1") = "Ville"
.Range("C1") = "Salaire"
.Range("D1") = "Service"
End With

Sheets("BD").Range("A1:e10000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("BD").Range("H1:H2"), _
CopyToRange:¬tiveSheet.Range("A1:D1")
End If
End Sub

http://cjoint.com/?ebbBLvJmmm

Abed_H




Cela suppose bien-sur que l'onglet de "reception" de l'extraction est
cree avant.

Est-il possible de rajouter du code pour creer l'onglet si celui-ci
n'existe pas:

En reprenant ton exemple, je veux faire une extraction par ville sur un
onglet portant le nom de la ville (cellule H2). Je clique sur un bouton
"extraire" apres avoir choisi une ville. Si l'onglet du meme nom
n'existe pas il est creer et l'extraction s'y fait. S'il existe deja
alors les donnees de l'extraction sont actualisees sur cet onglet. Idem
pour toutes les autres villes si j'en fais la demande.

Merci beaucoup pour ton aide.

Pierre.M



On 2007-03-31 21:22:57 +0200, "JB" said:

Bonsoir,

Il suffit d'utiliser l'enregistreur automatique de macro:
-Outils/Macro/nouvelle macro
-Effectuer une extraction de la BD
-Arrêter l'enregistreur .
-Créer un bouton pour activer la macro

Si on veut que l'actualisation soit automatique dès la saisie:

http://cjoint.com/?dFvwGClnP2











Avatar
JB
Bonjour,

http://boisgontierj.free.fr/fichiers/Filtre/FiltreElaboreDynamique2.xls

A chaque fois que l'opérateur clique sur la feuille d'un service,
l'extraction de la BD pour ce service est activée:

Private Sub Worksheet_Activate()
Sheets("BD").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End Sub

A chaque fois q'un nouveau service est crée dans la BD, une feuille
pour ce service est ajoutée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
If Target <> "" Then
f = Target
On Error Resume Next
temp = Sheets(UCase(f)).[A1]
If Err <> 0 Then
Application.ScreenUpdating = False
revient = ActiveSheet.Name
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = f
Sheets(revient).Activate
End If
End If
End If
End Sub

JB

On 31 mar, 23:52, Pierre.M wrote:
Cela suppose bien-sur que l'onglet de "reception" de l'extraction est
cree avant.

Est-il possible de rajouter du code pour creer l'onglet si celui-ci
n'existe pas:

En reprenant ton exemple, je veux faire une extraction par ville sur un
onglet portant le nom de la ville (cellule H2). Je clique sur un bouton
"extraire" apres avoir choisi une ville. Si l'onglet du meme nom
n'existe pas il est creer et l'extraction s'y fait. S'il existe deja
alors les donnees de l'extraction sont actualisees sur cet onglet. Idem
pour toutes les autres villes si j'en fais la demande.

Merci beaucoup pour ton aide.

Pierre.M

On 2007-03-31 21:22:57 +0200, "JB" said:



Bonsoir,

Il suffit d'utiliser l'enregistreur automatique de macro:
-Outils/Macro/nouvelle macro
-Effectuer une extraction de la BD
-Arrêter l'enregistreur .
-Créer un bouton pour activer la macro

Si on veut que l'actualisation soit automatique dès la saisie:

http://cjoint.com/?dFvwGClnP2- Masquer le texte des messages précéde nts -


- Afficher le texte des messages précédents -



Avatar
Pierre.M

A chaque fois que l'opérateur clique sur la feuille d'un service,
l'extraction de la BD pour ce service est activée:

Private Sub Worksheet_Activate()
Sheets("BD").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End Sub



Ca marche comme espere. Merci


A chaque fois q'un nouveau service est crée dans la BD, une feuille
pour ce service est ajoutée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
If Target <> "" Then
f = Target
On Error Resume Next
temp = Sheets(UCase(f)).[A1]
If Err <> 0 Then
Application.ScreenUpdating = False
revient = ActiveSheet.Name
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = f
Sheets(revient).Activate
End If
End If
End If
End Sub



Ca aussi ca fonctionne bien. Mon probleme est que j'ai besoin de
pouvoir choisir les services pour lesquels je demande l'extraction.
Avec ta methode je me retrouve avec plein de feuilles inutiles que je
dois ensuite supprimer.
Je voyais plutot un truc avec une liste deroulante dans la BD et un
bouton (je prefere pour eviter les erreurs) qui creerait la feuille si
necessaire et lancerait l'extraction.
Je vais voir si je peux me bricoler ca a partir de tes 2 modeles...
Merci beaucoup pour ton aide et bon dimanche.

Pierre.M

Avatar
Pierre.M
Merci a toi pour ton aide. C'est bien ce genre de solutions que je cherchais.

Le petit probleme qui subsiste c'est que la modification de la BD
(modification d'un critere ou rajout de ligne) n'est pas pris en
compte... L'extraction ne fonctionne que la premiere fois me
semble-t-il...

En tous cas merci beaucoup et bonne fin de week-end.

Pierre.M


On 2007-04-01 01:34:06 +0200, AH60 said:

Bonsoir à Monsieur JB et à toi Pierre.M

si j'ai bien compris voici ce que tu cherche

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$2" Then
Dim sh(), Wsh As Worksheet, i As Long
i = 1
ReDim sh(i To Sheets.Count)
For Each Wsh In ActiveWorkbook.Worksheets
sh(i) = Sheets(i).Name
i = i + 1
Next
ReDim Preserve sh(i)
If IsError(Application.Match(Target, sh, 0)) Then
Sheets.Add.Move after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Target.Value
Extract = ActiveSheet.Name
Else: Sheets(Target.Value).Select
End If

With ActiveSheet
.Range("A1") = "Nom"
.Range("B1") = "Ville"
.Range("C1") = "Salaire"
.Range("D1") = "Service"
End With

Sheets("BD").Range("A1:e10000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("BD").Range("H1:H2"), _
CopyToRange:¬tiveSheet.Range("A1:D1")
End If
End Sub

http://cjoint.com/?ebbBLvJmmm

Abed_H




Cela suppose bien-sur que l'onglet de "reception" de l'extraction est
cree avant.

Est-il possible de rajouter du code pour creer l'onglet si celui-ci
n'existe pas:

En reprenant ton exemple, je veux faire une extraction par ville sur un
onglet portant le nom de la ville (cellule H2). Je clique sur un bouton
"extraire" apres avoir choisi une ville. Si l'onglet du meme nom
n'existe pas il est creer et l'extraction s'y fait. S'il existe deja
alors les donnees de l'extraction sont actualisees sur cet onglet. Idem
pour toutes les autres villes si j'en fais la demande.

Merci beaucoup pour ton aide.

Pierre.M



On 2007-03-31 21:22:57 +0200, "JB" said:

Bonsoir,

Il suffit d'utiliser l'enregistreur automatique de macro:
-Outils/Macro/nouvelle macro
-Effectuer une extraction de la BD
-Arrêter l'enregistreur .
-Créer un bouton pour activer la macro

Si on veut que l'actualisation soit automatique dès la saisie:

http://cjoint.com/?dFvwGClnP2






Avatar
JB
Autre version:

http://boisgontierj.free.fr/fichiers/Filtre/FiltreElaboreDynamique3.xls

JB

On 1 avr, 12:41, Pierre.M wrote:
A chaque fois que l'opérateur clique sur la feuille d'un service,
l'extraction de la BD pour ce service est activée:

Private Sub Worksheet_Activate()
Sheets("BD").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End Sub


Ca marche comme espere. Merci







A chaque fois q'un nouveau service est crée dans la BD, une feuille
pour ce service est ajoutée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
If Target <> "" Then
f = Target
On Error Resume Next
temp = Sheets(UCase(f)).[A1]
If Err <> 0 Then
Application.ScreenUpdating = False
revient = ActiveSheet.Name
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = f
Sheets(revient).Activate
End If
End If
End If
End Sub


Ca aussi ca fonctionne bien. Mon probleme est que j'ai besoin de
pouvoir choisir les services pour lesquels je demande l'extraction.
Avec ta methode je me retrouve avec plein de feuilles inutiles que je
dois ensuite supprimer.
Je voyais plutot un truc avec une liste deroulante dans la BD et un
bouton (je prefere pour eviter les erreurs) qui creerait la feuille si
necessaire et lancerait l'extraction.
Je vais voir si je peux me bricoler ca a partir de tes 2 modeles...
Merci beaucoup pour ton aide et bon dimanche.

Pierre.M- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Avatar
Pierre.M
Merci de continuer a t'interesser a mon probleme.
Mais comme explique dans la 2eme partie de mon precedent message je
prefere avoir une liste deroulante a valider par un bouton "extraire"
plutot qu'un filtre dynamique des le choix effectue. Cette validation
creera l'onglet si necessaire et effectura l'extraction.

Pierre.M


On 2007-04-01 13:42:16 +0200, "JB" said:

Autre version:

http://boisgontierj.free.fr/fichiers/Filtre/FiltreElaboreDynamique3.xls

JB

On 1 avr, 12:41, Pierre.M wrote:
A chaque fois que l'opérateur clique sur la feuille d'un service,
l'extraction de la BD pour ce service est activée:

Private Sub Worksheet_Activate()
Sheets("BD").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End Sub


Ca marche comme espere. Merci







A chaque fois q'un nouveau service est crée dans la BD, une feuille
pour ce service est ajoutée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
If Target <> "" Then
f = Target
On Error Resume Next
temp = Sheets(UCase(f)).[A1]
If Err <> 0 Then
Application.ScreenUpdating = False
revient = ActiveSheet.Name
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = f
Sheets(revient).Activate
End If
End If
End If
End Sub


Ca aussi ca fonctionne bien. Mon probleme est que j'ai besoin de
pouvoir choisir les services pour lesquels je demande l'extraction.
Avec ta methode je me retrouve avec plein de feuilles inutiles que je
dois ensuite supprimer.
Je voyais plutot un truc avec une liste deroulante dans la BD et un
bouton (je prefere pour eviter les erreurs) qui creerait la feuille si
necessaire et lancerait l'extraction.
Je vais voir si je peux me bricoler ca a partir de tes 2 modeles...
Merci beaucoup pour ton aide et bon dimanche.

Pierre.M- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -





Avatar
JB
http://boisgontierj.free.fr/fichiers/Filtre/FiltreElaboreExtraitMacro.xls

JB

On 1 avr, 14:52, Pierre.M wrote:
Merci de continuer a t'interesser a mon probleme.
Mais comme explique dans la 2eme partie de mon precedent message je
prefere avoir une liste deroulante a valider par un bouton "extraire"
plutot qu'un filtre dynamique des le choix effectue. Cette validation
creera l'onglet si necessaire et effectura l'extraction.

Pierre.M

On 2007-04-01 13:42:16 +0200, "JB" said:



Autre version:

http://boisgontierj.free.fr/fichiers/Filtre/FiltreElaboreDynamique3.xls

JB

On 1 avr, 12:41, Pierre.M wrote:
A chaque fois que l'opérateur clique sur la feuille d'un service,
l'extraction de la BD pour ce service est activée:

Private Sub Worksheet_Activate()
Sheets("BD").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End Sub


Ca marche comme espere. Merci

A chaque fois q'un nouveau service est crée dans la BD, une feuille
pour ce service est ajoutée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
If Target <> "" Then
f = Target
On Error Resume Next
temp = Sheets(UCase(f)).[A1]
If Err <> 0 Then
Application.ScreenUpdating = False
revient = ActiveSheet.Name
Sheets("Modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = f
Sheets(revient).Activate
End If
End If
End If
End Sub


Ca aussi ca fonctionne bien. Mon probleme est que j'ai besoin de
pouvoir choisir les services pour lesquels je demande l'extraction.
Avec ta methode je me retrouve avec plein de feuilles inutiles que je
dois ensuite supprimer.
Je voyais plutot un truc avec une liste deroulante dans la BD et un
bouton (je prefere pour eviter les erreurs) qui creerait la feuille si
necessaire et lancerait l'extraction.
Je vais voir si je peux me bricoler ca a partir de tes 2 modeles...
Merci beaucoup pour ton aide et bon dimanche.

Pierre.M- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -



- Afficher le texte des messages précédents -





1 2