Répartition de lignes selon critère

Bonjour à toutes et à tous

Après avoir longuement parcouru votre forum, je n’ai pas trouvé solution à mon problème.

Peut-être sauriez-vous m’aider.

Je vous explique : j’ai un fichier Excel comportant une feuille nommée « Données » qui liste une multitude d’entreprise. Ce fichier comporte plusieurs colonnes (Nom de la société, Ville, etc). L’une des colonnes se nomme « Filière » : il y est indiqué la filière de l’entreprise (cette colonne est remplie via un menu déroulant)

Ce que je souhaiterais trouver, c’est un moyen qui permettrait de trier automatiquement ma liste d’entreprise en fonction des filières et de les répartir dans les feuilles correspondantes.

Exemple : Si la société Entreprise 1 a dans sa colonne « Filière » le choix « grossiste », alors la ligne de l’entreprise E1 est recopiée dans la feuille nommée « grossiste ».

Idéalement, ce classeur serait dynamique et se modifierait au fur et à mesure des ajouts/suppressions de ligne dans la feuille « Données ».

Je ne sais pas si cela est possible et si d’ailleurs j’ai été clair.

Voici ci-joint un fichier exemple pour vous donner une idée de ce que je recherche. (Dans le dit fichier, j'ai effectué manuellement les copier/coller pour vous montrer le résultat que je souhaiterais avoir)

Bien cordialement,

Alexis

12fichierexemple.xlsx (14.83 Ko)

Bonsoir Alexi.01, le forum,

Un essai, à tester.

La macro d'origine est de DAN, je l'ai adaptée à ton cas.

Cordialement,

Wow, tout d'abord merci pour ta réactivité et pertinence @Xorsankukai !

J'ai l'impression que ça fonctionne bien !

Pourrais-tu me dire comment réadapter (par où passer?) ton fichier pour que je puisse l'utiliser avec ma réelle liste d'entreprise ? En fait dans la réalité je n'ai pas que 2 filières mais 7 (donc 7 onglets différents).

D'ailleurs, est-il possible de faire en sorte que chaque modification dans une ligne soit effective dans toutes les feuilles ? C'est à dire que si je modifie un numéro de téléphone dans la feuille "Grossiste", la modification ait également lieu dans la feuille "Données" ?

Bien cordialement,

Alexis

Re, Alexi.01,

Pourrais-tu me dire comment réadapter (par où passer?) ton fichier pour que je puisse l'utiliser avec ma réelle liste d'entreprise ? En fait dans la réalité je n'ai pas que 2 filières mais 7 (donc 7 onglets différents).

Le code se situe dans le module de la feuille "Données".

Pour y accéder, ALT+F11

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim dlg As Integer
Dim i As Integer
Dim lig1 As Integer
Dim lig2 As Integer

dlg = Sheets("Données").Range("A65536").End(xlUp).Row      'dernière ligne non vide de Données
lig1 = Sheets("Grossiste").Range("A65536").End(xlUp).Row   'dernière ligne non vide de Grossiste
lig2 = Sheets("Détaillant").Range("A65536").End(xlUp).Row  'dernière ligne non vide de Détaillant

If lig1 <> 1 Then Sheets("Grossiste").Range("A2:R" & lig1).ClearContents 'on supprime les données de Grossiste
lig1 = 2
For i = 2 To dlg  'si colonne J de Données contient Grossiste, on copie les lignes dans Grossiste
If Sheets("Données").Range("J" & i) = "Grossiste" Then Sheets("Données").Range("A" & i & ":R" & i).Copy Sheets("Grossiste").Range("A" & lig1)
lig1 = lig1 + 1
Next

If lig2 <> 1 Then Sheets("Détaillant").Range("A2:R" & lig2).ClearContents  'on supprime les données de Détaillant
lig2 = 2
For i = 2 To dlg  'si colonne J de Données contient Détaillant, on copie les lignes dans Détaillant
If Sheets("Données").Range("J" & i) = "Détaillant" Then Sheets("Données").Range("A" & i & ":R" & i).Copy Sheets("Détaillant").Range("A" & lig2)
lig2 = lig2 + 1
Next

Sheets("Grossiste").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete   'supprime ligne vide de Grossiste
Sheets("Détaillant").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete  'supprime ligne vide de Détaillant

End Sub

Je t'ai surligné en vert le code de la feuille Détaillant, il faudra reproduire ces lignes pour chaque feuille que tu veux rajouter (il faudra remplacer Détaillant par le nom de ta feuille).

Il y a peut-être moyen de faire plus simple, mais je ne sais pas faire

D'ailleurs, est-il possible de faire en sorte que chaque modification dans une ligne soit effective dans toutes les feuilles ? C'est à dire que si je modifie un numéro de téléphone dans la feuille "Grossiste", la modification ait également lieu dans la feuille "Données" ?

Trop compliqué pour moi

Bonne soirée.

Merci beaucoup pour ton aide Xorsankukai, je vais essayer de "travailler" ce code demain au boulot.

xorsankukai a écrit :

D'ailleurs, est-il possible de faire en sorte que chaque modification dans une ligne soit effective dans toutes les feuilles ? C'est à dire que si je modifie un numéro de téléphone dans la feuille "Grossiste", la modification ait également lieu dans la feuille "Données" ?

Trop compliqué pour moi

Bonne soirée.

Pas de soucis

Si quelqu'un passe par là et a la solution, je suis preneur

Merci encore et bonne soirée !

Bonjour Alexis.01,

Merci pour ton retour

Merci beaucoup pour ton aide Xorsankukai, je vais essayer de "travailler" ce code demain au boulot.

N'hésite pas à revenir si tu rencontre des difficultés.

A bientot,

Bonjour Alexis, Xorsankukai,

quelque chose comme ça, sans doute...

J'ai quelque peu trafiqué tes feuilles (nom, liste de validation) : plus facile! 8)

  • chaque changement est répercuté dans les feuilles concernées ;
  • pareil pour les changements de filière, bien sûr.

Tu remarqueras que la liste proposée diffère selon que travailles sur l'encodage d'une nouvelle entreprise ou que tu modifies une autre déjà installée :

° pour une entreprise déjà installée, la liste ne proposera pas la filière en cours ;

° pour une nouvelle, toutes les filières sont disponibles, évidemment ;

° elle offrira chaque fois la possibilité de supprimer la ligne sélectionnée.

- pour créer une nouvelle entreprise, il suffit de cliquer SOUS le tableau dans BDD, uniquement!

La dernière ligne s'inscrira en rouge! Pour enregistrer, il faut sélectionner une filière! La liste de validation ne s'affichera QUE si le nom de l'entreprise est complété.

  • en cliquant sur [A1], tu tries le tableau (ABC) ;
  • en cliquant sur [B1], tu tries les entreprises en fonction de leur filière.

Le code se trouve dans le module THISWORKBOOK et est donc valable pour toutes les feuilles.

A tester dans tous les sens, une erreur étant toujours possible...

A+

14filieres.xlsm (44.97 Ko)
Rechercher des sujets similaires à "repartition lignes critere"