Extraire vers autre feuille des données (ligne) selon certains critères

benbeto

XLDnaute Nouveau
Bonjour,

J'aurais besoin de votre aide pour une macro sous forme de bouton si possible.
J'ai des données dans les colonnes A à Z de la ligne 1 à 50 sur la feuil1

Je souhaiterais copier les lignes (complète) si celles-ci possèdent dans la colonne C le mot "Banane" ou "Fraise" (par exemple) et également les lignes qui possèdent dans la colonne V le mot "Poire" ou "Pomme" ou "Tomate".
Et tout ça sur la feuil2 en commençant par colonne/ligne A2.

Merci par avance pour votre aide

Ben
 

Staple1600

XLDnaute Barbatruc
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Bonjour

Et elle où la feuil2?
Dans le fichier exemple non joint?

Ah OK.

PS: ce genre de question a été abordé des dizaines de fois sur le forum, au cas où tu serais intéressé par l'emploi du moteur de recherche du forum pour les trouver ;)
 

benbeto

XLDnaute Nouveau
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Bonjour,

Désolé pour le fichier, je le met en PJ en simplifié. :p
Oui mais je ne trouve pas la formule exacte car il y a plusieurs critère pour chaque colonnes...
Je n'ai peut être pas bien cherché mais bon...
 

Pièces jointes

  • TEST.xlsx
    18.9 KB · Affichages: 668
  • TEST.xlsx
    18.9 KB · Affichages: 933
  • TEST.xlsx
    18.9 KB · Affichages: 1 008

Staple1600

XLDnaute Barbatruc
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Bonszoir

Tu as cherché du coté du filtre élaboré?
( si tu veux des exemples, cherches* les fils ou j'ai répondu récemment en utilisant le filtre élaboré)
*: utilises pour cela les paramètres adéquats en mode recherche avancée sur le forum)
 

benbeto

XLDnaute Nouveau
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Bon je galère toujours même en testant tout ce que je peux ^^

Voila ce que j'ai pondu en récupérant à droite à gauche des codes...

Sub Macro1()
For Each cell In
Sheets("feuil1").Range("C1:V100").End(xlUp).Row)
If cell.Value <> Banane Or Fraise Then
Sheets("feuil1").Range("A1:z100" & cell.Row).Copy
Sheets("feuil2").Range("A1:z100".End(xlUp).Row + 1)
End If
End Sub

En gros ce que j'ai voulu faire (même si je connais pas du tout le VBA) en m'appuyant sur un autre sujet c'est que sur la feuille "feuil1" sur la plage C1 à V100, si on trouve le mot Banane ou Fraise, copier la ligne entière vers "feuil2" sur la première ligne vide

Mais des le début ça plante
For Each cell In ==> Erreur de compilation, erreur de syntaxe.

Autant dire que je suis une brêle dans le domaine...

EDIT: je ne sais pas comment insérer le code comme j'ai pu voir dans certains topic sous une fenêtre spéciale...
 

Staple1600

XLDnaute Barbatruc
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Bonjour

Pour insérer le code dans une fenêtre spéciale (regardes ce que dit ma signature)

Sinon, je ne vois pas trace de filtre élaboré dans ton code vba.
Voici un exemple tout simple pour te mettre sur la piste:
FILELAB.PNG
VB:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 01/08/2012 par Staple1600
'
Range("A2").FormulaR1C1 = "=OR(RC[2]=""banane"",RC[2]=""fraise"")"
Range("C1:C20").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("A1:A2"), Unique:=False
End Sub

PS: Merci pour ta PJ, mais pas eu envie ce matin de la convertir en xls, donc je l'ai pas encore ouverte ;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Re


Après avoir fini mon thé, j'ai finalement ouvert ta pj ;)
testes sur celle-ci ce code-ci (ici on utilise le filtre automatique)
VB:
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 01/08/2012 par Staple1600
'

Dim pf As Range, A_COPIER As Range
Sheets("feuil1").Range("C1").AutoFilter Field:=3, Criteria1:="=Banane", Operator:=xlOr, Criteria2:="=Fraise"
Set pf = Range("_FilterDataBase")
Set A_COPIER = pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)
A_COPIER.Copy Sheets("feuil2").[A65536].End(xlUp)(2)
Sheets("feuil1").ShowAllData
End Sub

Je te laisse découvrir le problème qui surgira quand tu adapteras ce code pour traiter la colonne V.
 

benbeto

XLDnaute Nouveau
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Salut Staple1600,

Merci pour ton retour, bon en fait je vais fournir le vrai fichier (avec suppression des infos importante quand même) ça sera peut être plus simple.

Donc le problème c'est la ligne suivante sur le code:

VB:
 Sheets("feuil1").Range("AV1" And "Z").AutoFilter Field:=3, Criteria1:="=AVANCE_24/7", Operator:=xlOr, Criteria2:="=AVANCE_6/7", Operator:=xlOr, Criteria3:="=PERSONNALISE_24/7", Operator:=xlOr, Criteria4:="=PERSONNALISE_6/7", Operator:=xlOr, Criteria5:="=UTILISATEUR_24/7", Operator:=xlOr, Criteria6:="=UTILISATEUR_6/7", Operator:=xlOr, Criteria7:="=M2MA", Operator:=xlOr, Criteria8:="=SI MTO", Operator:=xlOr, Criteria9:="=SUP AV 6/7", Operator:=xlOr, Criteria10:="=PERSO 7/7"

En gros dans mon fichier dans "feuil1" il faudrait que quand dans la colonne AV il y a AVANCE_24/7 ou AVANCE_6/7 ou PERSONNALISE_24/7 ou PERSONNALISE_6/7 ou UTILISATEUR_24/7 ou UTILISATEUR_6/7, la ligne correspondante (dans le fichier en exemple la ligne 8) soit copié dans la première ligne vide de la "feuil2"

Voila le code que j'ai pour le moment avec les infos que tu m'avais données

VB:
 Private Sub CommandButton1_Click()
Dim pf As Range, A_COPIER As Range
Sheets("feuil1").Range("AV1" And "Z").AutoFilter Field:=3, Criteria1:="=AVANCE_24/7", Operator:=xlOr, Criteria2:="=AVANCE_6/7", Operator:=xlOr, Criteria3:="=PERSONNALISE_24/7", Operator:=xlOr, Criteria4:="=PERSONNALISE_6/7", Operator:=xlOr, Criteria5:="=UTILISATEUR_24/7", Operator:=xlOr, Criteria6:="=UTILISATEUR_6/7", Operator:=xlOr, Criteria7:="=M2MA", Operator:=xlOr, Criteria8:="=SI MTO", Operator:=xlOr, Criteria9:="=SUP AV 6/7", Operator:=xlOr, Criteria10:="=PERSO 7/7"
Set pf = Range("_FilterDataBase")
Set A_COPIER = pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)
A_COPIER.Copy Sheets("feuil2").[A65536].End(xlUp)(2)
Sheets("feuil1").ShowAllData
End Sub

Merci par avance pour l'aide encore une fois
 

Pièces jointes

  • classeur1+macro.xlsm
    134.7 KB · Affichages: 827

benbeto

XLDnaute Nouveau
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Oui je pense, il faudrait pouvoir filtrer par rapport à des critères dans 2 colonnes différentes.
Je sais faire les filtres basique mais pour les filtres élaboré je sais pas du tout même en testant ce que j'ai pu trouver sur le forum et en adaptant avec ce que je pense être bon ça ne passe pas...
 

Staple1600

XLDnaute Barbatruc
Re : Extraire vers autre feuille des données (ligne) selon certains critères

Bonjour


Vois cet exemple d'emploi du filtre élaboré (test OK chez moi - ici ne concerne que la colonne AV)
VB:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 02/08/2012 par Staple1600
'
Range("CI2").FormulaR1C1 = _
        "=OR(LEFT(RC[-39],4)=""AVAN"",LEFT(RC[-39],4)=""PERS"",LEFT(RC[-39],4)=""UTIL"")"
Application.Goto Reference:="R1C1:R426C84" 'facultatif
Range("A1:CF426").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("CI1:CI2"), Unique:=False
'ligne ci-dessous facultative
Application.Goto Columns(48).Item(1), True
End Sub

Je te laisse ajouter les autres critères dans la formule en CI2

PS: Pour ce qui est de la recopie, tu as tout ce qu'il faut ici
https://www.excel-downloads.com/thr...donnees-ligne-selon-certains-criteres.189626/
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 721
Messages
2 081 928
Membres
101 842
dernier inscrit
seb0390