VBA/ Macro extraire automatiquement une plage de donnée filtrée

Résolu/Fermé
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016 - 15 juin 2015 à 18:13
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016 - 17 juin 2015 à 11:19
Bonjour, je bloque depuis quelque temps sur un moyen d'extraire automatiquement à partir d'une base de donnée située dans une feuille 1 les éléments d'une seule colonne de cette même base filtrée à partir d'un critère située en feuille 2 où se situe un tableau dans lequel je collerai dans la première colonne du tableau la plage copiée.

Je suis tombé sur un fichier excel qui contenait une macro qui correspondait à peu près à ma demande (voir fichier joint). La différence de cette macro est qu'elle extrait toutes les colonnes du tableau filtré ORDER vers SCHEDULE) et qu'elle ajoute 2 critères supplémentaires qui ne m'intéresse pas. J'ai tenté de retravaillé cette macro pour l'adapter à mon fichier mais ca ne fonctionne pas ( je découvre avec beaucoup de curiosité le codage VBA /Macro).

voici la macro que j'ai fait (dans la feuille destination) pour mon fichier à partir de la macro exemple :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$319" Then
Range("A363", Range("A65536").End(xlUp)).ClearContents
With Sheets("base de données France")
.Range("A4").AutoFilter Field:=6, Criteria1:=Range("U319")
.Range("E5" & .Range("E65536").End(xlUp).Row).Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Range("A363")
End With

End If
End sub

Pouvez vous m'aider à partir d'une réadaptation du fichier joint à obtenir le résultat voulu, exemple extraire uniquement les valeurs filtrées de la colonne commande pour le gestionnaire affiché en B1 (feuille schedule).

Merci d'avance

PS comment faites vous pour inserer un fichier excel dans la discussion ?
A voir également:

4 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525
15 juin 2015 à 18:46
Bonjour,

Pour insérer un fichier :
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers#q=cjoint&cur=2&url=%2F

En attendant, tu peux essayer :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$319" Then
Range("A363", Range("A65536").End(xlUp)).ClearContents
With Sheets("base de données France")
.Range("A4").AutoFilter Field:=1, Criteria1:=Range("U319")
.Range("E5:E" & .Range("E65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Destination:=Range("A363")
End With
End If
End Sub

A+
0
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016
Modifié par med_mugen le 15/06/2015 à 18:53
voici le fichier excel dont j vous parlais dans l'annonce. Au passage, merci Gyrus pour votre réponse et votre aide. Je vais voir de ce pas si celà fonctionne ;)

https://www.cjoint.com/c/EFpqYpfVuQu
0
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016
Modifié par med_mugen le 15/06/2015 à 19:03
en fait, dans le champ field de la macro, j'avais = 6 car je voulais que dans ma feuille 1, la colonne à filtrer selon le critère en U319 (année choisie) - feuille 2 - soit la colonne "année". Et je pensais par ailleurs que .Range("A4") était la ligne des entêtes de ma base de données
0