MACRO de tri selon critére de la feuille 1 vers la feuille 2

Bonjour à toutes et tous...

Alors pour mon début sur votre forum qui m'a déjà permis de dégrossir "un peu" le travail... Enfin dans la partie facile quoi...

J'ai maintenant besoin de compétences un peu plus sérieuse que les miennes...

J'ai un fichier listing de membre dans lequel j'ai 3 catégories de membres "CA" "E" "A" (sis dans la col A)

J'ai réalisé les macros pour le tri d'affichage sur la feuil1 (un peu simple je vous l'accorde mais pour une première... ).

Maintenant et ce malgré mes nombreuses heures de lecture de votre forum, je ne parviens pas à extraire sur la feuil2 les données selon un critère précis (CA ou E ou A).

Je souhaite donc recopier sur la feuil2 les colonnes B à H de toutes les lignes contenant "CA" ou "E" ou "A" et ainsi pouvoir réaliser mon publipostage par la suite...

Si jamais, je risque de ne pas repasser sur le forum avant mercredi matin donc pas d'inquiétudes...

Un tout grand merci à celle ou celui qui me rendra meilleur dans les prochains jours...

Salut Gooffy,

voici ton fichier!

Worksheets("Publi").UsedRange.Delete
For x = 1 To [Tableau1].Rows.Count
    If [Tableau1].Cells(x, 1) Like sFlag Then
        iLig = iLig + 1
        Worksheets("Publi").Range("A" & iLig & ":" & "G" & iLig).Value = [Tableau1].Range("B" & x & ":" & "H" & x).Value
    End If
Next

Bon travail!

A+

Salut Curulis57,

Je vois que je ne suis pas le seul nocturne...

Un grand merci à toi.

J'applique cela sur le fichier source et je reviens vers toi si jamais pour les éventuelles explications (histoire de ne pas demander deux fois la même chose quoi...) LoL.

Bonne journée,

Gooffy

Bonsoir à toutes et tous, notamment Curulis57...

La macro est testée... Comme tu te doutes, elle fonctionne nickel ... Un grand merci à toi.

Maintenant je mène mes recherches pour en comprendre toutes les lignes (enfin essayé par moi-même avant de poser de bêtes questions ...)

Encore un grand merci et bonne nuit.

Gooffy

Bonsoir tout le monde,

Bonsoir Curulis57,

Bon, j'ai fait vivre le fichier... Ils sont content...

Par contre, il me demande de rajouter des arguments de tri... Plus ou moins facile puisque tu avais réalisé tout le travail. Plus qu'a copier / coller...

Toutefois, il me reste un arguments pour lequel je ne parviens pas à renvoyer les données sur la feuille "publi".

Je voudrais en fait trier ma base de données en prenant en compte 3 critères... Jusque là, je m'en sors plus ou moins... Par contre, impossible de renvoyer les données de ces 3 critères sur la feuille "Publi" Je garde le dernier tri individuel à chaque fois...

Voici copie de la (ta) macro :

Public Sub Publi(ByVal sFlag As String)

Worksheets("Publi").UsedRange.Clear

For x = 1 To [Tableau1].Rows.Count

If [Tableau1].Cells(x, 1) Like sFlag Then

iLig = iLig + 1

Worksheets("Publi").Range("A" & iLig & ":" & "G" & iLig).Value = [Tableau1].Range("B" & x & ":" & "H" & x).Value

End If

Next

End Sub

Sub Conseil_Administration()

' Macro Conseil

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="CA"

Call Publi("CA")

End Sub

Sub Effectifs()

' Macro Effectifs

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="E"

Call Publi("E")

End Sub

Sub Adhérents()

' Macro Adhérents

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="A"

Call Publi("A")

End Sub

Sub Brocanteurs()

' Macro Brocante

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="B"

Call Publi("B")

End Sub

Sub Artisants()

' Macro Artisants

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="MA"

Call Publi("MA")

End Sub

Sub Sponsors()

' Macro Sponsors

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="S"

Call Publi("S")

End Sub

Sub Tous()

' Macro Tout le monde

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1

Call Publi("*")

End Sub

Sub Comité()

' Comité Macro

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:= _

Array("A", "CA", "E"), Operator:=xlFilterValues

Call Publi("?")

' c'est là que je ne vois pas ce que je dois mettre...? Je vois que la ligne est indispensable mais je sèche...

End Sub

Désolé, il me manque beaucoup de pratique... Je n'arrive même pas a insérer une macro comme vous...

Enfin, dans l'espoir que qqun s'y retrouve...

Merci et bonne nuit à vous,

GOOFFY

Salut Gooffy,

je vais regarder cela maintenant!

Pour insérer une macro "comme nous" , utilise la balise 'Code' au-dessus de la fenêtre de message et colle... ton code... au centre [Code]...[Code]

A+

Salut Gooffy,

ainsi, ça devrait aller dans n'importe quelles conditions.

Tu dois juste renseigner la valeur à passer à la macro en séparant les différents critères par un slash sans espace ( ex: "CA/E/A" ou "CA" quand un seul critère).

Public Sub Publi(ByVal sFlag As String)
'
Dim tTab
'
Worksheets("Publi").UsedRange.Delete
'
tTab = Split(sFlag, "/")
'
For x = 1 To [Tableau1].Rows.Count
    For y = 0 To UBound(tTab)
        If [Tableau1].Cells(x, 1) Like tTab(y) Then
            iLig = iLig + 1
            Worksheets("Publi").Range("A" & iLig & ":" & "G" & iLig).Value = [Tableau1].Range("B" & x & ":" & "H" & x).Value
        End If
    Next
Next
'
End Sub

Sub Comité()
' Comité Macro
 ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:= _
 Array("A", "CA", "E"), Operator:=xlFilterValues
Call Publi("A/CA/E")
'
End Sub

Avec plaisir!

A+

Allez Bonjou...

Bon ben sans surprises hein...

Ca fonctionne nickel...

Par contre peux-tu m'expliquer la différence...?

Public Sub Publi(ByVal sFlag As String)
' Macro copie vers feuil Publi
Dim tTab
Worksheets("Publi").UsedRange.Clear
tTab = Split(sFlag, "/")
For x = 1 To [Tableau1].Rows.Count
    For y = 0 To UBound(tTab)
        If [Tableau1].Cells(x, 1) Like tTab(y) Then
            iLig = iLig + 1
            Worksheets("Publi").Range("A" & iLig & ":" & "G" & iLig).Value = [Tableau1].Range("B" & x & ":" & "H" & x).Value
        End If
    Next
Next
End Sub
Public Sub Publi(ByVal sFlag As String)
Worksheets("Publi").UsedRange.Clear
For x = 1 To [Tableau1].Rows.Count
    If [Tableau1].Cells(x, 1) Like sFlag Then
        iLig = iLig + 1
        Worksheets("Publi").Range("A" & iLig & ":" & "G" & iLig).Value = [Tableau1].Range("B" & x & ":" & "H" & x).Value
    End If
    Next
End Sub

Je comprends que tout ce joue sur les lignes dimtTab / For x / For y mais qu'elles sont les indications que donnent ces lignes qui font la différence avec la 1ère macro que tu m'as donné...?

Un grand merci pour ton aide d'un novice comme moi.

Bonne journée et bon week-end sous le soleil...

Gooffy

Rechercher des sujets similaires à "macro tri critere feuille"