Je suis Educateur dans un club de foot pour les enfant moins de 9 ans.
J'ai la feuille 1 avec 50 noms et prénons des joueurs, j'y incrit chaque match qu'ils jouent et je m'en sert pour préparer les convocations que je distribut chaque mercredi à 37 enfants, je note les absents,
colonne B le NOM
colonne C le PRENOM
Colonne D J'y inscrit un numéro pouvant aller de 1 a 5 ce qui correspond à l'équipe avec le quel il va jouer.
Ex:
DURANT Michel 1
MACHIN Paul 2
Truc Louis
Bidule Marcel 3
NUCHE Henri 4
Digue Serge 5
sur la feuille 2
j'ai un tableau avec les 5 equipes et les nom des enfants qui vont jouer.
Equipe 1 Equipe 2 Equipe 3 Equipe 4 Equipe 5
Nom| Prénon Nom | Prénom Nom | Prénom Nom | Prénom Nom | Prénom
Se que je souhaite, s"est quant je note 1 devant un nom de joueur de la feuille 1, que se nom soit inscrit dans la feuille 2 dans la colonne de l'equipe correspondante.
Je joints une feuille Excel pour que se soit plus explicite.
J'espere avoir été claire.
En vous remerciant à l'avance.
Bonne Journée.
à chaque saisie du N° d'équipe en colonne C, le nom et le prénom sont copiés dans la colonne correspondant à l'équipe, dans le tableau H2:Q10 de la feuille Feuil1 (structure du classeur joint). Il faudrait avoir la structure exacte du classeur réel, pour copier les Noms, Prénoms dans les bonnes colonnes de la feuille 2.
Code à copier dans la feuille de code de la feuille Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Col As Integer, Ligne As Integer, DerL As Integer
DerL = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("C3:C" & DerL)) Is Nothing Then
If Target.Value > 0 And Target.Value < 6 Then
If Target.Offset(, -2) = "" Or Target.Offset(, -1) = "" Then
Target.Value = ""
Exit Sub
End If
Col = 6 + (Target * 2)
Ligne = Cells(Cells.Rows.Count, Col).End(xlUp).Row + 1
Cells(Ligne, Col) = Target.Offset(, -2)
Cells(Ligne, Col + 1) = Target.Offset(, -1)
Else
Target.Value = ""
End If
End If
End Sub
une macro, à copier dans un module standard, pour effacer le tableau d'affectation par équipe ( à adapter à la structure réelle):
VB:
Sub RaZ()
Dim NbL As Integer
With Worksheets("Feuil1")
NbL = .Range("H2").CurrentRegion.Rows.Count
If NbL > 2 Then .Range("H4:Q" & NbL + 1).ClearContents
End With
End Sub
à chaque saisie du N° d'équipe en colonne C, le nom et le prénom sont copiés dans la colonne correspondant à l'équipe, dans le tableau H2:Q10 de la feuille Feuil1 (structure du classeur joint). Il faudrait avoir la structure exacte du classeur réel, pour copier les Noms, Prénoms dans les bonnes colonnes de la feuille 2.
Code à copier dans la feuille de code de la feuille Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Col As Integer, Ligne As Integer, DerL As Integer
DerL = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("C3:C" & DerL)) Is Nothing Then
If Target.Value > 0 And Target.Value < 6 Then
If Target.Offset(, -2) = "" Or Target.Offset(, -1) = "" Then
Target.Value = ""
Exit Sub
End If
Col = 6 + (Target * 2)
Ligne = Cells(Cells.Rows.Count, Col).End(xlUp).Row + 1
Cells(Ligne, Col) = Target.Offset(, -2)
Cells(Ligne, Col + 1) = Target.Offset(, -1)
Else
Target.Value = ""
End If
End If
End Sub
une macro, à copier dans un module standard, pour effacer le tableau d'affectation par équipe ( à adapter à la structure réelle):
VB:
Sub RaZ()
Dim NbL As Integer
With Worksheets("Feuil1")
NbL = .Range("H2").CurrentRegion.Rows.Count
If NbL > 2 Then .Range("H4:Q" & NbL + 1).ClearContents
End With
End Sub
Je viens de lire en long en large de haut en bas, pour moi c'est du chinoi.
Si vous le voulais je vous envois le fichier .
Envoyez moi une adresse et je vous donne ce fichier.
Bonne soirée
vous pouvez mettre une copie de votre fichier originale, en l'anonymisant . Pas la peine d'envoyer l'ensemble des données .
Dans le cas présent ce qui est important c'est de voir dans quelles cellules est le tableau nominatif et dans quelles cellules de quelle feuille copier les données.
vous pouvez mettre une copie de votre fichier originale, en l'anonymisant . Pas la peine d'envoyer l'ensemble des données .
Dans le cas présent ce qui est important c'est de voir dans quelles cellules est le tableau nominatif et dans quelles cellules de quelle feuille copier les données.
Merci pour votre aide
J'ai mis une copie du fichier utilisé en le rendant anonyme.
sur la feuille 1 la liste de tous mes petit futur Messi, sur la feuille 2 le tableau ou je voudrais que les joueurs selectionnés soit inscrit.
Encore merci et bonne journée.
Bernard
le classeur en retour avec adaptation du code, au format xls (Excel 2003)
la macro d'effacement efface (! c'est mieux) le tableau en feuille Equipe pour plateau ainsi que la plage F8:F56 de la feuille Liste de joueur
J'ai dû supprimer la colonne G, dont les cellules étaient fusionnées avec celles de la colonne F, qui posait problème pour le code.Sans conséquence pour les formules en place dans la feuille Liste de joueur (a priori).
A+
Edit : la macro d'effacement est 'lançable' par la combinaison de touches: <Ctrl> et <A>
le classeur en retour avec adaptation du code, au format xls (Excel 2003)
la macro d'effacement efface (! c'est mieux) le tableau en feuille Equipe pour plateau ainsi que la plage F8:F56 de la feuille Liste de joueur
J'ai dû supprimer la colonne G, dont les cellules étaient fusionnées avec celles de la colonne F, qui posait problème pour le code.Sans conséquence pour les formules en place dans la feuille Liste de joueur (a priori).
A+
Edit : la macro d'effacement est 'lançable' par la combinaison de touches: <Ctrl> et <A>
Bonsoir.
Mille Merci.
c'est exatement ce que je voulai, encore bravo.
J'ai fais des copies de sauvegarde car je vais essayé de bidouiller la macro pour une autre utilisation.
Juste une question: si je veux changer la disposition des colone dans la feuille equipe pour plateau, car je voudrai l'utiliser pour former mes groupes pour l'entrainement et ajouter une case Absent.
Cette ligne détermine le N° de colonne où l'on va écrire le nom => valeur saisie * 2 (ainsi pour équipe 1 on écrit en 2, pour 2 en 4 ...) puisque l'équipe 1 commence en colonne B (2) , l'équipe 2 en colonne D (4) ....
Si le tableau ne commence par en B il faudra adapter ; par exemple si le tableau commence en colonne C ( 3), on devra écrire l'équipe 1 en C (3) l'équipe 2 en D (5). on écrirait alors Col = 1 + (Target * 2).
Si la colonne des absents est en fin de tableau ( position qu'aurait occupée l'équipe 6), on pourrait saisir 6 dans la colonne F de la feuille Liste de joueur, et modifier la ligne
VB:
If Target.Value > 0 And Target.Value < 6 Then
en
VB:
If Target.Value > 0 And Target.Value < = 6 Then
et pour afficher "Abs" en colonne F, juste après
VB:
End With
rajouter:
VB:
If Target.Value = 6 Then
Application.EnableEvents = False
Target = "Abs"
Application.EnableEvents = True
End If
Bonjour.
Merci Paf, c'est vraiment genial de trouver des personnes qui consacrent un peu de temps pour aider.
J'espere un jour pouvoir en faire autant.
Je vais essayer ce que vous m'avez donner et je vous tiens au courent.