Trier une feuille de calcul selon critères

grovallat -  
 grovallat -
Bonjour a tous,
Tout d'abord, excusez moi si un post du genre a déja été posté.

Je vous explique mon problème, je cherche à programmer une macro VB me permettant de copier les lignes d'un tableau excel répondant à certain critères dans une nouvelle feuille par le simple clic sur un bouton.

Je m'explique:
J'ai 4 tableaux (4 feuilles) et je voudrai par un simple clic, creer 4 pages respectives qui contiendraient les lignes telle que, par exemple: si case A1=X-> copie ligne 1
si case B2=Y-> copie ligne 2........
En d'autres termes, on test pour toutes les lignes si la colonne A contient la valeur X et on copie les lignes qui ont cette valeur, puis on test pour toutes les lignes si la colonne B contient la valeur Y et on copie les lignes qui ont cette valeur, ect....

Je sais pas si j'ai été très clair mais je n'est aucun résultat pour le moment, je repart de 0.
HELP PLEASE
merci d'avance
A voir également:

9 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
En d'autres termes, on test pour toutes les lignes si la colonne A contient la valeur X et on copie les lignes qui ont cette valeur, puis on test pour toutes les lignes si la colonne B contient la valeur Y et on copie les lignes qui ont cette valeur, ect....
Mais si la condition en A est vraie, tu copie la ligne , OK ? alors plus besoin de tester B et de copier une deuxième fois la ligne ?
Tu dis.
A+
0
grovallat
 
Oui tu as très bien compris, mais peut m'importe les doublons. Ce que je cherche c'est une macro qui teste toute ligne et si le critère C1 (présence de la valuer X dans la colonne 1) ou si le critère C2 ( présence de la valeur Y dans la colonne 2) ou si ect ..... la ligne soit copier dans une nouvelle feuille.

c'est assez difficile à expliquer par écrit.
merci bcp pour ta réponse
0
grovallat
 
Excuse moi j'ai dit" peut m'importe les doublons" mais je suis suiffisamment deseperé que les doublons je m'en fiche.
0
grovallat
 
Voilà peut-etre une structure qui te permettra de mieux comprendre la cause de mon futur suicide ^^^(je dec') (enfin c'est comme ca que j'entraperçois la macro)

Quandclic_bouton 1

Dans feuille 1
Pour ligne 1 à infini
test Critère 1 ou Critere 2 ou Critère 3 ou Critère 4
si OK -> copie ligne dans feuille 1bis
Fin si
Fin boucle
Fin macro

Comme ça, les lignes répondant aux critères choisis seront alors copiées les unes a la suite des autres dans la feuille 1bis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Une piste !! ??
Sub RecopionsLignes()
Dim Lig As Long
Dim LigC As Long
'supposons le nom de ta nouvelle feuille = "Recopie"
'puisque, en principe c'est une nouvelle feuille, commenbce la copie à la ligne 2
    LigC = 1
    For Lig = 1 To Range("A65536").End(xlUp).Row
        If Cells(Lig, 1) = "X" Or Cells(Lig, 2) = "Y" Or Cells(Lig, 3) = "Z" Then
            LigC = LigC + 1
            Rows(Lig).Copy Sheets("Recopie").Rows(LigC)
        End If
    Next Lig
End Sub

Tu dis.
0
grovallat
 
Je crois que ca m'avance beaucoup...merci beaucoup....mais pourrais-tu la detailler un peu pour que j'aprenne un peu ca que tout cela veut dire stp...

Excuse-moi si je te bouffe ton tmps, dsl et merci beaucoup.
0
grovallat
 
Pour tout te dire, je me demande:
-ou on voit sur quelle feuille s'exécute la macro( d'ou les lignes vont etre copier) ?
-ou on voit sur quelle colonne on test la valeur?
-et quelle ligne de code commande la création d'une feuille?
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
pas de problème, j'explique
Tu ajoute une feuille, par VBA ou en manuel ?
Commencons par "en manuel" , ajoute une feuille que tu renomme (l'onglet) avec Recopie , attention qu'il n'y ai pas des espaces non voulu dans le nom sinon ça plante.
Ensuite, renomme la feuille où tu a tes données Base
Maintenant ça va être plus clair
Sub RecopionsLignes()
Dim Lig As Long
Dim LigC As Long
'supposons le nom de ta nouvelle feuille = "Recopie"
'puisque, en principe c'est une nouvelle feuille, commenbce la copie à la ligne 2
    LigC = 1
    For Lig = 1 To Sheets("Base").Range("A65536").End(xlUp).Row
        If Sheets("Base").Cells(Lig, 1) = "X" Or Sheets("Base").Cells(Lig, 2) = "Y" Or Sheets("Base").Cells(Lig, 3) = "Z" Then
            LigC = LigC + 1
            Sheets("Base").Rows(Lig).Copy Sheets("Recopie").Rows(LigC)
        End If
    Next Lig
End Sub

Il y a bien sûr moyen de faire plus cour mais c'est pour t'aider à comprendre.
Et quand tu aurras bien compris tu peu remplacer par.
Sub RecopionsLignes()
Dim Lig As Long
Dim LigC As Long
'supposons le nom de ta nouvelle feuille = "Recopie"
'puisque, en principe c'est une nouvelle feuille, commenbce la copie à la ligne 2
    LigC = 1
    Sheets("Base").Select
    For Lig = 1 To Range("A65536").End(xlUp).Row
        If Cells(Lig, 1) = "X" Or Cells(Lig, 2) = "Y" Or Cells(Lig, 3) = "Z" Then
            LigC = LigC + 1
            Rows(Lig).Copy Sheets("Recopie").Rows(LigC)
        End If
    Next Lig
End Sub

Ca ferra la même chose.
Tu dis..
A+
0
grovallat
 
Problème résolu!!!! youpi
remerciement à lermite222

Topic clos et @++ sur un prochain problème...^^
0