Macro Excel
Buck
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je vous avoue que je suis dans l'impasse pour une macro pour faire du tri dans un fichier excel mais ce tri doit prendre en compte 3 critères différents qui doivent être indépendants, c'est à dire qu'on pourra les choisir indépendement et ensemble :
Exemple : Evenement en Asie n'importe quel secteur
Evenement du secteur Industriel
Evenement en Asie du Secteur industriel
Pour sortir les listes des évènements correspondant, en croisant les données
suivantes
-Date : les évènements doivent être triés par mois
-Par zone géographique : asie,europe,amérique du nord ect...
-Par secteur d'activité : industrie, cosmétique ect...
Sachant que les donnée ce trouve dans des feuilles dans le même document et que je voudrais en fonction des critères obtenir des listes dans une feuille du document.
Je vous remercie d'avance pour votre aide.
Cordialement, Buck
Je vous avoue que je suis dans l'impasse pour une macro pour faire du tri dans un fichier excel mais ce tri doit prendre en compte 3 critères différents qui doivent être indépendants, c'est à dire qu'on pourra les choisir indépendement et ensemble :
Exemple : Evenement en Asie n'importe quel secteur
Evenement du secteur Industriel
Evenement en Asie du Secteur industriel
Pour sortir les listes des évènements correspondant, en croisant les données
suivantes
-Date : les évènements doivent être triés par mois
-Par zone géographique : asie,europe,amérique du nord ect...
-Par secteur d'activité : industrie, cosmétique ect...
Sachant que les donnée ce trouve dans des feuilles dans le même document et que je voudrais en fonction des critères obtenir des listes dans une feuille du document.
Je vous remercie d'avance pour votre aide.
Cordialement, Buck
A voir également:
- Macro Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
2 réponses
Bonjour,
Ton problème, bien que compréhensible, reste néanmoins fort confus. Il nous faudrait dans ton cas, un classeur exemple pour comprendre de quoi il s'agit. Peux tu nous copier un lien vers un fichier exemple (enregistré sous/97-2003) sans données confidentielles, lien créé précédemment sur : https://www.cjoint.com/ par exemple.
Ton problème, bien que compréhensible, reste néanmoins fort confus. Il nous faudrait dans ton cas, un classeur exemple pour comprendre de quoi il s'agit. Peux tu nous copier un lien vers un fichier exemple (enregistré sous/97-2003) sans données confidentielles, lien créé précédemment sur : https://www.cjoint.com/ par exemple.
Voila un lien https://www.cjoint.com/?AFkiXw2Ce3K vous allez tout de suite comprendre mon problème
re-
1- il faut corriger quelque chose dans ton classeur : la liste déroulante "zone géographique" n'a pas EXACTEMENT les mêmes valeurs que les noms des feuilles. Il faudrait changer cela pour que ma macro fonctionne...
Voici donc le code...A tester, re-tester et re-re-tester...
Ce code a été péniblement testé car pas trop le temps de remplir un classeur avec des données... Donc il comporte certainement des erreurs. Teste le bien et reviens nous dire...
1- il faut corriger quelque chose dans ton classeur : la liste déroulante "zone géographique" n'a pas EXACTEMENT les mêmes valeurs que les noms des feuilles. Il faudrait changer cela pour que ma macro fonctionne...
Voici donc le code...A tester, re-tester et re-re-tester...
Option Explicit
Sub FiltrerDonnees()
Dim Feuille As Worksheet
Dim Nom As String, Secteur As String, Zone As String, MoisCherche As String
Dim Mois As Byte, i As Byte
Dim Val As Variant
Dim Lig As Long, DrLg As Long
'Vidage des données de la feuille "Tableau_De_résultat"
With Sheets("Tableau_De_résultat")
DrLg = .Cells(65536, 2).End(xlUp).Row
If DrLg > 2 Then
.Range(.Cells(3, 2), .Cells(DrLg, 8)).ClearContents
End If
End With
'On stocke les valeurs choisies feuille Sélection dans les variables prévues à cet effet
With Sheets("Sélection")
Nom = .Cells(3, 2)
Secteur = .Cells(6, 2)
MoisCherche = .Cells(8, 2)
i = 1
For Each Val In Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
If Val = MoisCherche Then
Mois = i
Exit For
Else
i = i + 1
End If
Next
Zone = .Cells(11, 2)
End With
'Choix de la ou des feuilles à filtrer selon si indifférent ou pas
If Zone = "Indifférent" Then
'Si indifférent alors on boucle sur toutes les feuilles
For Each Feuille In ThisWorkbook.Worksheets
'on exclut de la boucle les feuilles sélection et tableau
If Feuille.Name <> "Sélection" And Feuille.Name <> "Tableau_De_résultat" Then
With Sheets(Feuille.Name)
DrLg = .Cells(65536, 1).End(xlUp).Row
For Lig = 2 To DrLg
'si les valeurs contenues dans nos variables sont présentes aux bons endroits
If .Cells(Lig, 1) = Nom And Month(.Cells(Lig, 2)) = Mois And .Cells(Lig, 4) = Secteur Then
'alors on copie la plage concernée vers la feuille résultats, en fin de tableau
.Range(.Cells(Lig, 1), .Cells(Lig, 7)).Copy Sheets("Tableau_De_résultat").Cells(65536, 2).End(xlUp).Offset(1, 0)
End If
Next
End With
End If
Next Feuille
Else
'si pas indifférent, on ne gère que la feuille concernée par la zone
With Sheets(Zone)
DrLg = .Cells(65536, 1).End(xlUp).Row
For Lig = 2 To DrLg
If .Cells(Lig, 1) = Nom And Month(.Cells(Lig, 2)) = Mois And .Cells(Lig, 4) = Secteur Then
.Range(.Cells(Lig, 1), .Cells(Lig, 7)).Copy Sheets("Tableau_De_résultat").Cells(65536, 2).End(xlUp).Offset(1, 0)
End If
Next
End With
End If
End Sub
Ce code a été péniblement testé car pas trop le temps de remplir un classeur avec des données... Donc il comporte certainement des erreurs. Teste le bien et reviens nous dire...