Transfert de donnés dans une autre feuille avec des conditions
Bonjour à tous
Je suis a la recherche de solutions pour les problèmes suivants :
+ Le premier
Je souhaiterai copie des données d'une feuille1 (nom de la feuille : liste des joueurs) : Dans cette feuille il y aurait imaginons le nom du joueurs, son numéro et son club. Dans cette feuille il y aurait un nombre important de joueurs et de clubs.
Je souhaiterai trier les joueurs par club en créant automatiquement (je ne sais pas si cela est possible) une feuille par club qui portrait le nom du club. Comme si on appliquait un filtrer dans chacune des feuilles de club.
Par la suite je souhaiterai y copier la liste de joueurs avec leurs numéro faisant partie du club évidement.
L'objectif final serait de rentrer un nom de joueurs dans la feuille1 (liste des joueurs) et retrouvé ce joueurs dans son club
Je sais pas si c'est très claire. Je suis disponible pour toute question
Merci par Avance
Quentino
Bonjour Quentino, le forum,
Une proposition avec une macro que j'avais en stock et adaptée à ton cas...
J'ai crée une feuille Villes avec la liste des villes, elle me sert à créer les onglets et filtrer les données.
Les données des 2 feuilles sont sous formes de tableaux structurés pour les rendre dynamiques.
Merci à l'auteur de cette macro ,
Cordialement,
Incroyable, Merci beaucoup c'est exactement ce que je recherchais.
Est ce qu'il serait possible que tu commentes la macro pour que je puisse adapter l'adapter dans d'autre exemple.Mes intérrogations ce porte principalement sur la selection des données.
Je suis vraiment surpris (en bien, bien sur ^^) par ce forum et la comu derriere. Je ne pensais pas qu'il avait une telle communauté pour Exel.
Bon week-end à tous
Quentino
Bonjour Quentino, le forum,
Merci pour ton retour,
Je ne suis pas très doué pour les explications, mais voici:
Option Explicit
Sub Dispatch()
'####################################################################
'on déclare les variables
'####################################################################
Dim wb As Workbook '.....................................................classeur
Dim ws As Worksheet, wsData As Worksheet, wsTemplate As Worksheet '......feuilles
Dim lo As ListObject, lo2 As ListObject '................................tableaux structurés
Dim Cell As Range '......................................................cellule
Dim SheetName As String, critère As String '.............................nom de l'onglet et critère du filtre
'####################################################################
With Application
.DisplayAlerts = False '..........................................désactive le message d confirmation des suppressions des onglets
.ScreenUpdating = False '.........................................désactive le rafraichissement de l'écran (évite le scintillement)
End With
Set wb = ActiveWorkbook '.............................................définit le classeur wb
Set wsData = wb.Worksheets("Liste des joueurs") '.....................définit la feuille wsData
Set wsTemplate = wb.Worksheets("Villes") '............................définit la feuille wsTemplate
For Each ws In wb.Worksheets '........................................boucle sur toutes les feuilles du classeur
Select Case ws.Name '.............................................en fonction du nom de l'onglet
Case "Liste des joueurs", "Villes": '.........................on conserve Liste des joueurs et Villes
Case Else: ws.Delete '........................................si nom <> Liste des joueurs où Villes, on supprime
End Select
Next ws '.............................................................fin de la boucle
Application.DisplayAlerts = True '....................................on réactive les messages d'alerte
Set lo = wsTemplate.ListObjects("Tableau2") '.........................définit le tableau structuré de la feuille Villes
Set lo2 = wsData.ListObjects("Tableau1") '............................définit le tableau structuré de la feuille Liste des joueurs
If Not lo.DataBodyRange Is Nothing Then '.............................si lo est rempli alors
For Each Cell In lo.ListColumns(1).DataBodyRange '................on boucle sur toutes les cellules du tableau (liste des villes)
SheetName = Cell.Value '........................................on définit le nom de l'onglet en fonction de la cellule
Sheets.Add after:=wb.Worksheets(Worksheets.Count) '.............on ajoute l'onglet
With ActiveSheet '............................................l'onglet ajouté devient la feuille active
.Name = SheetName '.........................................on le renomme avec le nom défini
critère = SheetName '.......................................ce nom devient le crtière de filtre
wsData.ListObjects("Tableau1").Range.AutoFilter Field:=3, Criteria1:=.Name
'.....on filtre le tableau de la feuille Liste des joueurs en fonction de la colonne 3 (Club)et du critère
wsData.ListObjects("Tableau1").Range.SpecialCells(xlVisible).Copy Sheets(SheetName).Range("A1")
'....on copie les cellules filtrées sur l'onglet créé à partir de A1
If wsData.FilterMode = True Then wsData.ShowAllData '......on retire le filtre
End With
Next Cell '.......................................................on continue la boucle jusqu'à la dernière cellule
End If
End Sub
Bonne continuation,
Cordialement,