Traitement extraction Base de donnée

Bonjour à tous !

Alors tout d'abord je tiens à préciser que je suis vraiment novice en excel et que mes connaissances en terme de formule sont très limités !

J'ai donc réalisé une extraction depuis une base de donnée (Metabase en l'occurrence) et j'ai besoin de la traiter pour sortir un relevé d'information sur une autre feuille et ce en fonction de l'id. Je vous joint une image de l'extraction.

capture d ecran 2020 06 10 a 16 42 48

Le but final serait qu'en tapant par exemple l'ID 5, que j'ai toutes les lignes de cette extraction portant cet ID qui soit inscrite dans mon relevé (le relevé final est en PJ).

capture d ecran 2020 06 10 a 16 40 15

Le fait est que je suis totalement perdu et ne sais absolument pas par ou prendre la chose ni par quoi commencer ....

Je vous avouerai que j'ai beaucoup de mal à expliquer ça de manière simple donc si vous avez des questions n'hésitez pas.

Et je vous remercie de votre aide qui me sauverais littéralement la vie

Bonjour et bienvenue

Un façon de traiter ton problème est de faire un filtre avancé.

Pour aller plus loin, il faudrait nous donner un fichier-exemple.

Bonjour et bienvenue

Un façon de traiter ton problème est de faire un filtre avancé.

Pour aller plus loin, il faudrait nous donner un fichier-exemple.

Merci Steelson pour ton message !

Je mets ci-joint un Excel d'exemple.

Comme on peut le constater, j'ai plusieurs lignes dans l'onglet extraction qui ont l'ID 55 et ce qu'il faudrait c'est que dans l'onglet Déclaration je n'ai qu'une case à compléter avec l'ID souhaité pour pouvoir voir toutes les lignes apparaitres dans déclaration avec ce même ID

6exemple.xlsx (14.64 Ko)

Il faut que les titres de colonne soient identiques

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A3")) Is Nothing Then Exit Sub
    Sheets("Extraction").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:A3"), CopyToRange:=Range("B2:G2"), Unique:=False
End Sub

Il suffit de changer la valeur de B3

15exemple.xlsm (19.36 Ko)

Oula, ça devient beaucoup trop compliqué pour moi à ce niveau

Ou suis-je censé copier ce code pour commencer ?

Je n'ai jamais fait de chose de la sorte dans un excel ...

Tu fais Alt (tu restes appuyé sur Alt) + F11

Tu double cliques sur ta feuille à gauche

et tu colles ce programme à droite

capture d ecran 660

Tu enregistres ensuite sous xlsm (avec macro)

Merci du coup je l'ai collé au tableau final mais problème ... oui forcément ...

J'ai adapté en fonction de mon tableau final mais déjà j'ai une flèche jaune qui apparaît au niveau de End Sub et aucune action ne se fait dans Excel...

As-tu une copie d'écran de la macro avec la ligne jaune ?

J'ai réussi au final à virer la ligne jaune, par contre la requête me remonte tous les éléments et ne filtre pas.

Voila le code modifié :

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("K8")) Is Nothing Then Exit Sub
    Sheets("Metabase").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:A3"), CopyToRange:=Range("B19:G19"), Unique:=False
End Sub

En gros j'ai juste voulu que la colonne ID soit copié et j'ai excentré la saisie de l'ID sur la case K8.

Par ailleurs, sur mon récap, étant donné que j'ai une en-tête j'ai déplacé la copie à partie de la ligne 19

Redonne ton fichier avec les en-têtes et sans les données. Car on parle un peu dans le vide, surtout si la structure du fichier n'est pas celle que tu avais donnée !

Dans la macro, il y a ceci :

CriteriaRange:=Range("A2:A3"), CopyToRange:=Range("B19:G19")

donc en A2 il doit y avoir le titre de la colonne soit ID et en A3 le numéro que tu mets

si tu déplace en K8, il faut en K7 ID et que dans la macro tu changes Range("A2:A3") en Range("K7:K8")

Pour la copie ligne 19, d'après le code que tu as modifié il faut que ce soit les en-têtes ligne 19 et la copie se fera à partir de la ligne 20. Les titres doivent exactement les mêmes entre les 2 onglets.

Merci beaucoup de ton aide, cette dernière explication m'a vraiment éclairé et j'ai exactement réussi à faire ce que je voulais faire.

J'ai donc modifié le code comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("I9")) Is Nothing Then Exit Sub
    Sheets("Metabase").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("I8:I9"), CopyToRange:=Range("A19:G19"), Unique:=False
End Sub

Et comme ceci, tout fonctionne à la perfection !

Merci

Rechercher des sujets similaires à "traitement extraction base donnee"