Carpe_Diem Posté(e) le 6 juin 2016 Partager Posté(e) le 6 juin 2016 Bonjour, j'ai fait une filtre avancé dans Excel permattant selon deux critères d'exporter des données d'une feuille source (Fish) vers une autre feuille du même classeur. Mais je souhaite ajouter deux autres critères avec un opérateur OU dans ce filtre et.... marche pas. Ce qui est OK : Sub ExtractionWRH()' Sheets("Fish").Range("A2:CC35000").AdvancedFilter Action:= _ xlFilterCopy, CriteriaRange:=Range("H1:I2"), CopyToRange:=Range("A5:CC5"), _ Unique:=True ActiveWindow.SmallScroll Down:=-90End Sub Ci-dessus, les deux critères sont dans les cellules H1 à I2 et on extrait vers une autre feuille avec des noms de colonnes de A5 à CC5, noms identiques au feuillet source "Fish". Par exemple ce qui marche avec un seul couple de critères (comme ci-dessus) : H I 1 Plateau Complément (ce sont donc les noms de colonnes) 2 WRH Dans P (c'est le couple de critères) J'obtiens l'extraction vers une nouvelle feuille de toutes les lignes dont Plateau = WRH ET dont Complément = Dans P Et je voudrais pouvoir faire un OU entre le couple H-I et le couple J-K : H I J K 1 Plateau ET Complément OU Plateau ET Complément 2 WRH Dans P WRH Normal Ce qui devrait conduire à ajouter aux résultats des deux premiers critères ceux des deux deuxièmes critères. Merci beaucoup. Lien vers le commentaire Partager sur d’autres sites More sharing options...
beankylla Posté(e) le 6 juin 2016 Partager Posté(e) le 6 juin 2016 Bonjour, Dans le pire des cas, exporter d'abord la premiere selection, puis la deuxième. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Carpe_Diem Posté(e) le 6 juin 2016 Auteur Partager Posté(e) le 6 juin 2016 Salut Beankylla, j'y ai pensé mais ça pas le faire car la première sélection est évolutive (extraction de + de lignes ou - de lignes). Ce qui fait que la seconde sélection devra être positionnée à la main. Pas top car je souhaite de l'automatique et il faut les en-têtes de colonnes. Ce qui devient alors impossible. J'ai fait des macros pour les premières sélections et je voudrais en modifier le langage VBA (Cf. premier message) pour que tout se fasse en un seul lancement de macro. Il y a plus de 30.000 lignes dans l'onglet source et 10 extracts à faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
xperiaZ2 Posté(e) le 6 juin 2016 Partager Posté(e) le 6 juin 2016 Pour réaliser le OU, il suffirait d'écrire les critères en Hn et Jn et définir le fitre sur H1:Jn. (3 dans ton exemple) Sauf si j'ai raté un truc sur le résultat escompté. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Carpe_Diem Posté(e) le 7 juin 2016 Auteur Partager Posté(e) le 7 juin 2016 Salut xperia 22, j'ai tenté ça (comme présenté dans le premier post) avec donc un CriteriaRange:=Range("H1:K2") ==> KO J'ai aussi tenté de ne pas ajouter deux fois le champ Plateau et sa valeur WRH en ne laissant que le champ Complément : CriteriaRange:=Range("H1:J2") ==> KO J'ai aussi tenté CriteriaRange:=Range("H1:I2") OR CriteriaRange:=Range("J1:K2") ==> KO Et encore CriteriaRange:=Range("H1:I2") OR =Range("J1:K2") ==> KO Ça me retourne soit aucune ligne, soit ça additionne des lignes mais sans respecter les conditions de valeurs, soit le débogueur me lance une erreur de code. Lien vers le commentaire Partager sur d’autres sites More sharing options...
beankylla Posté(e) le 7 juin 2016 Partager Posté(e) le 7 juin 2016 Sinon sans vouloir faire une fixette sur ma solution, même si le nombre de ligne est variable tu peux coller ce que tu as copié sur la première ligne vide :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
xperiaZ2 Posté(e) le 7 juin 2016 Partager Posté(e) le 7 juin 2016 Salut xperia 22, j'ai tenté ça (comme présenté dans le premier post) avec donc un CriteriaRange:=Range("H1:K2") ==> KO J'ai aussi tenté de ne pas ajouter deux fois le champ Plateau et sa valeur WRH en ne laissant que le champ Complément : CriteriaRange:=Range("H1:J2") ==> KO J'ai aussi tenté CriteriaRange:=Range("H1:I2") OR CriteriaRange:=Range("J1:K2") ==> KO Et encore CriteriaRange:=Range("H1:I2") OR =Range("J1:K2") ==> KO Ça me retourne soit aucune ligne, soit ça additionne des lignes mais sans respecter les conditions de valeurs, soit le débogueur me lance une erreur de code. Il faudait essayer : H I 1 Plateau Complément (ce sont donc les noms de colonnes) 2 WRH Dans P (c'est le couple de critères) 3 WRH Normal (une ligne par critère OU) et CriteriaRange:=Range("H1:I3") On peut faire autant de ligne que l'on veut. (Attention ton code choisis l'option d'unicité, tu ne verras qu'une ligne si elle est identique sur tous les champs) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Carpe_Diem Posté(e) le 7 juin 2016 Auteur Partager Posté(e) le 7 juin 2016 Oui oui, pas de doublon, on est Ok là-dessus. je vais essayer ta méthode. Je dis quoi dès que possible. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Carpe_Diem Posté(e) le 8 juin 2016 Auteur Partager Posté(e) le 8 juin 2016 Beankylla, je ne fais pas un copier/coller mais un extract via macro à l'aide d'un filtre avancé et ce, d'un onglet vers un autre. XperiaZ2, oui c'est Ok avec H I 1 Plateau Complément 2 WRH Dans P 3 WRH Normal écrit dans des cellules en première ligne pour les noms de colonne qui doivent être strictement identiques aux noms de colonne de l'onglet source (impératif) puis en deuxième et troisième pour les critères de filtre. La seule chose qui change dans le code : CriteriaRange:=Range("H1:I3") J'aurais encore appris la bonne syntaxe d'une commande Excel... on n'en a jamais fini avec celui-là... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.