Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 licenciés
et bien entendu, les 30 ne viennent pas à tous les matchs.
J'ai donc fait un tableau dans une feuille "Présence" avec en titre de
colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit un
"x" lorsqu'il est disponible à une certaine date.
A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais.
En fait lorsque je lance la macro, un UserForm apparaît et invite
l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée en
fonction de celles inscrite dans les titres de colonne de la feuille
"Présence".
Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la
feuille "Template" est dupliquée et renomée en fonction de la date choisie
(le nom de la feuille = la date du match) *et les joueurs ayant un "x" à
cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*.
C'est la seconde partie (entourée de *) que je n'arrive pas à créer. Est-ce
que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet de
la macro/UserForm jusqu'à présent... Merci d'avance!
Private Sub UserForm_Initialize()
'On charge les dates de matches dans la liste
For i = 2 To 256
With Sheets("Présences").Cells(1, i)
If .Value <> "" Then
ComboBox1.AddItem .Text
End If
End With
Next i
End Sub
Private Sub CommandButton1_Click()
match_date = ComboBox1.Value
'On copie le template et on renomme la feuille
Sheets("Template").Copy After:=Sheets(4)
Sheets("Template (2)").Name = match_date
' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne
correspondant au match_date et les copier dans la feuille ayant pour nom le
match_date
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
YeTi
En attendant une réponse, j'ai pu avancer légérement... Donc, lorsque j'ai choisi ma date dans le ComboBox, Template est dupliqué et renommé en avec le choix de ComboBox.
Ensuite, la liste intégrale des joueurs est copiée et collée dans la feuille de formules dans la colonne A.
Ce qu'il me faudrait maintenant, c'est que la colonne correspondant à la date choisie dans la ComboBox soit intégralement copiée et collée en colonne B de la feuille "Formules"
On aurait donc qqch comme ceci:
Joueur | 25-Sep-08 Matt | x José | Julien | Roland | x Vivien | x etc.
Ensuite le programme efface les lignes où la colonne B est vide. Comme ca j'ai la liste de tous les joueurs présents pour ce jour là!
Merci de votre aide!
Le code: Private Sub CommandButton1_Click() match_date = ComboBox1.Value
'On copie le template et on renomme la feuille Sheets("Template").Copy After:=Sheets(4) Sheets("Template (2)").Name = match_date
'On copie les noms de tous les joueurs Sheets("Présences").Columns("A:A").Copy Sheets("Formules").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If Next i
'On supprime la ligne de titre ainsi que tous les joueurs non-disponibles Sheets("Formules").Select Selection.Rows("1:1").Delete Shift:=xlUp
For i = 50 To 1 Step -1 If Application.WorksheetFunction.CountA(Cells(i, 2)) = 0 Then Rows.Delete Shift:=xlUp End If Next i
'On ferme le programme UserForm1.Hide End Sub
En attendant une réponse, j'ai pu avancer légérement...
Donc, lorsque j'ai choisi ma date dans le ComboBox, Template est dupliqué et
renommé en avec le choix de ComboBox.
Ensuite, la liste intégrale des joueurs est copiée et collée dans la feuille
de formules dans la colonne A.
Ce qu'il me faudrait maintenant, c'est que la colonne correspondant à la
date choisie dans la ComboBox soit intégralement copiée et collée en colonne
B de la feuille "Formules"
On aurait donc qqch comme ceci:
Joueur | 25-Sep-08
Matt | x
José |
Julien |
Roland | x
Vivien | x
etc.
Ensuite le programme efface les lignes où la colonne B est vide. Comme ca
j'ai la liste de tous les joueurs présents pour ce jour là!
Merci de votre aide!
Le code:
Private Sub CommandButton1_Click()
match_date = ComboBox1.Value
'On copie le template et on renomme la feuille
Sheets("Template").Copy After:=Sheets(4)
Sheets("Template (2)").Name = match_date
'On copie les noms de tous les joueurs
Sheets("Présences").Columns("A:A").Copy
Sheets("Formules").Range("A1").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
'On copie la disponibilité du joueur en fonction de la date choisie
For i = 2 To 256
If Cells(1, i) = match_date Then
Columns.Copy
Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
End If
Next i
'On supprime la ligne de titre ainsi que tous les joueurs non-disponibles
Sheets("Formules").Select
Selection.Rows("1:1").Delete Shift:=xlUp
For i = 50 To 1 Step -1
If Application.WorksheetFunction.CountA(Cells(i, 2)) = 0 Then
Rows.Delete Shift:=xlUp
End If
Next i
En attendant une réponse, j'ai pu avancer légérement... Donc, lorsque j'ai choisi ma date dans le ComboBox, Template est dupliqué et renommé en avec le choix de ComboBox.
Ensuite, la liste intégrale des joueurs est copiée et collée dans la feuille de formules dans la colonne A.
Ce qu'il me faudrait maintenant, c'est que la colonne correspondant à la date choisie dans la ComboBox soit intégralement copiée et collée en colonne B de la feuille "Formules"
On aurait donc qqch comme ceci:
Joueur | 25-Sep-08 Matt | x José | Julien | Roland | x Vivien | x etc.
Ensuite le programme efface les lignes où la colonne B est vide. Comme ca j'ai la liste de tous les joueurs présents pour ce jour là!
Merci de votre aide!
Le code: Private Sub CommandButton1_Click() match_date = ComboBox1.Value
'On copie le template et on renomme la feuille Sheets("Template").Copy After:=Sheets(4) Sheets("Template (2)").Name = match_date
'On copie les noms de tous les joueurs Sheets("Présences").Columns("A:A").Copy Sheets("Formules").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If Next i
'On supprime la ligne de titre ainsi que tous les joueurs non-disponibles Sheets("Formules").Select Selection.Rows("1:1").Delete Shift:=xlUp
For i = 50 To 1 Step -1 If Application.WorksheetFunction.CountA(Cells(i, 2)) = 0 Then Rows.Delete Shift:=xlUp End If Next i
'On ferme le programme UserForm1.Hide End Sub
YeTi
Pour simplifier encore le tout, voici la partie du code qui ne fonctionne pas:
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If
A mon avis, le "Columns.Copy" est faux. J'ai essayé "ActiveCell.Columns.Copy" mais ca ne marche pas non plus... Une idée?
Merci! Next i
Pour simplifier encore le tout, voici la partie du code qui ne fonctionne pas:
'On copie la disponibilité du joueur en fonction de la date choisie
For i = 2 To 256
If Cells(1, i) = match_date Then
Columns.Copy
Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
End If
A mon avis, le "Columns.Copy" est faux. J'ai essayé
"ActiveCell.Columns.Copy" mais ca ne marche pas non plus... Une idée?
Pour simplifier encore le tout, voici la partie du code qui ne fonctionne pas:
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If
A mon avis, le "Columns.Copy" est faux. J'ai essayé "ActiveCell.Columns.Copy" mais ca ne marche pas non plus... Une idée?
Merci! Next i
JPMonnier
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base de données, si c'est le cas, il serait judicieux de faire une extraction par filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme critères une date de match et le x des joueurs concernés. Puis extraire le résultat sur une feuille de ton choix ou les titres des colonnes que tu souhaites extraire figurent sur cette feuille ! -- Cordialement
"YeTi" a écrit dans le message de news:
Hello à tous,
Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 licenciés et bien entendu, les 30 ne viennent pas à tous les matchs. J'ai donc fait un tableau dans une feuille "Présence" avec en titre de colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit un "x" lorsqu'il est disponible à une certaine date.
A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais. En fait lorsque je lance la macro, un UserForm apparaît et invite l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée en fonction de celles inscrite dans les titres de colonne de la feuille "Présence".
Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la feuille "Template" est dupliquée et renomée en fonction de la date choisie (le nom de la feuille = la date du match) *et les joueurs ayant un "x" à cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*.
C'est la seconde partie (entourée de *) que je n'arrive pas à créer. Est-ce que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet de la macro/UserForm jusqu'à présent... Merci d'avance!
Private Sub UserForm_Initialize() 'On charge les dates de matches dans la liste For i = 2 To 256 With Sheets("Présences").Cells(1, i) If .Value <> "" Then ComboBox1.AddItem .Text End If End With Next i End Sub
Private Sub CommandButton1_Click() match_date = ComboBox1.Value
'On copie le template et on renomme la feuille Sheets("Template").Copy After:=Sheets(4) Sheets("Template (2)").Name = match_date
' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne correspondant au match_date et les copier dans la feuille ayant pour nom le match_date
'On ferme le programme UserForm1.Hide End Sub
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base
de données, si c'est le cas, il serait judicieux de faire une extraction par
filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme
critères une date de match et le x des joueurs concernés.
Puis extraire le résultat sur une feuille de ton choix ou les titres des
colonnes que tu souhaites extraire figurent sur cette feuille !
--
Cordialement
jpmonnier-nospam@neuf.fr
"YeTi" <YeTi@discussions.microsoft.com> a écrit dans le message de
news:F57F786E-04E4-484A-8D7F-F1B546D2A134@microsoft.com...
Hello à tous,
Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30
licenciés
et bien entendu, les 30 ne viennent pas à tous les matchs.
J'ai donc fait un tableau dans une feuille "Présence" avec en titre de
colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit
un
"x" lorsqu'il est disponible à une certaine date.
A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais.
En fait lorsque je lance la macro, un UserForm apparaît et invite
l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée
en
fonction de celles inscrite dans les titres de colonne de la feuille
"Présence".
Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la
feuille "Template" est dupliquée et renomée en fonction de la date choisie
(le nom de la feuille = la date du match) *et les joueurs ayant un "x" à
cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*.
C'est la seconde partie (entourée de *) que je n'arrive pas à créer.
Est-ce
que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet
de
la macro/UserForm jusqu'à présent... Merci d'avance!
Private Sub UserForm_Initialize()
'On charge les dates de matches dans la liste
For i = 2 To 256
With Sheets("Présences").Cells(1, i)
If .Value <> "" Then
ComboBox1.AddItem .Text
End If
End With
Next i
End Sub
Private Sub CommandButton1_Click()
match_date = ComboBox1.Value
'On copie le template et on renomme la feuille
Sheets("Template").Copy After:=Sheets(4)
Sheets("Template (2)").Name = match_date
' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne
correspondant au match_date et les copier dans la feuille ayant pour nom
le
match_date
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base de données, si c'est le cas, il serait judicieux de faire une extraction par filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme critères une date de match et le x des joueurs concernés. Puis extraire le résultat sur une feuille de ton choix ou les titres des colonnes que tu souhaites extraire figurent sur cette feuille ! -- Cordialement
"YeTi" a écrit dans le message de news:
Hello à tous,
Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 licenciés et bien entendu, les 30 ne viennent pas à tous les matchs. J'ai donc fait un tableau dans une feuille "Présence" avec en titre de colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit un "x" lorsqu'il est disponible à une certaine date.
A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais. En fait lorsque je lance la macro, un UserForm apparaît et invite l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée en fonction de celles inscrite dans les titres de colonne de la feuille "Présence".
Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la feuille "Template" est dupliquée et renomée en fonction de la date choisie (le nom de la feuille = la date du match) *et les joueurs ayant un "x" à cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*.
C'est la seconde partie (entourée de *) que je n'arrive pas à créer. Est-ce que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet de la macro/UserForm jusqu'à présent... Merci d'avance!
Private Sub UserForm_Initialize() 'On charge les dates de matches dans la liste For i = 2 To 256 With Sheets("Présences").Cells(1, i) If .Value <> "" Then ComboBox1.AddItem .Text End If End With Next i End Sub
Private Sub CommandButton1_Click() match_date = ComboBox1.Value
'On copie le template et on renomme la feuille Sheets("Template").Copy After:=Sheets(4) Sheets("Template (2)").Name = match_date
' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne correspondant au match_date et les copier dans la feuille ayant pour nom le match_date
'On ferme le programme UserForm1.Hide End Sub
YeTi
Merci JPMonnier pour cette réponse,
Je ne suis pas une star en VBA, je pêche un peu des infos à droite à gauche et essaie de les adapter à mes besoins et je dois avouer n'avoir jamais utilisés les filtres élaborés en VBA.
Etant donné que j'ai presque trouvé la solution pourrais-tu m'aider à finaliser la chose? A mon avis, l'erreur provient de "Columns.Copy " ci-dessous. Comment copier la colonne d'une cellule répondant à une condition?
Merci d'avance!
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If Next i
"JPMonnier" wrote:
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base de données, si c'est le cas, il serait judicieux de faire une extraction par filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme critères une date de match et le x des joueurs concernés. Puis extraire le résultat sur une feuille de ton choix ou les titres des colonnes que tu souhaites extraire figurent sur cette feuille ! -- Cordialement
"YeTi" a écrit dans le message de news: > Hello à tous, > > Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 > licenciés > et bien entendu, les 30 ne viennent pas à tous les matchs. > J'ai donc fait un tableau dans une feuille "Présence" avec en titre de > colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit > un > "x" lorsqu'il est disponible à une certaine date. > > A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais. > En fait lorsque je lance la macro, un UserForm apparaît et invite > l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée > en > fonction de celles inscrite dans les titres de colonne de la feuille > "Présence". > > Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la > feuille "Template" est dupliquée et renomée en fonction de la date choisie > (le nom de la feuille = la date du match) *et les joueurs ayant un "x" à > cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*. > > C'est la seconde partie (entourée de *) que je n'arrive pas à créer. > Est-ce > que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet > de > la macro/UserForm jusqu'à présent... Merci d'avance! > > > Private Sub UserForm_Initialize() > 'On charge les dates de matches dans la liste > For i = 2 To 256 > With Sheets("Présences").Cells(1, i) > If .Value <> "" Then > ComboBox1.AddItem .Text > End If > End With > Next i > End Sub > > Private Sub CommandButton1_Click() > match_date = ComboBox1.Value > > 'On copie le template et on renomme la feuille > Sheets("Template").Copy After:=Sheets(4) > Sheets("Template (2)").Name = match_date > > > ' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne > correspondant au match_date et les copier dans la feuille ayant pour nom > le > match_date > > > 'On ferme le programme > UserForm1.Hide > End Sub
Merci JPMonnier pour cette réponse,
Je ne suis pas une star en VBA, je pêche un peu des infos à droite à gauche
et essaie de les adapter à mes besoins et je dois avouer n'avoir jamais
utilisés les filtres élaborés en VBA.
Etant donné que j'ai presque trouvé la solution pourrais-tu m'aider à
finaliser la chose? A mon avis, l'erreur provient de "Columns.Copy "
ci-dessous. Comment copier la colonne d'une cellule répondant à une condition?
Merci d'avance!
'On copie la disponibilité du joueur en fonction de la date choisie
For i = 2 To 256
If Cells(1, i) = match_date Then
Columns.Copy
Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
End If
Next i
"JPMonnier" wrote:
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base
de données, si c'est le cas, il serait judicieux de faire une extraction par
filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme
critères une date de match et le x des joueurs concernés.
Puis extraire le résultat sur une feuille de ton choix ou les titres des
colonnes que tu souhaites extraire figurent sur cette feuille !
--
Cordialement
jpmonnier-nospam@neuf.fr
"YeTi" <YeTi@discussions.microsoft.com> a écrit dans le message de
news:F57F786E-04E4-484A-8D7F-F1B546D2A134@microsoft.com...
> Hello à tous,
>
> Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30
> licenciés
> et bien entendu, les 30 ne viennent pas à tous les matchs.
> J'ai donc fait un tableau dans une feuille "Présence" avec en titre de
> colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit
> un
> "x" lorsqu'il est disponible à une certaine date.
>
> A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais.
> En fait lorsque je lance la macro, un UserForm apparaît et invite
> l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée
> en
> fonction de celles inscrite dans les titres de colonne de la feuille
> "Présence".
>
> Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la
> feuille "Template" est dupliquée et renomée en fonction de la date choisie
> (le nom de la feuille = la date du match) *et les joueurs ayant un "x" à
> cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*.
>
> C'est la seconde partie (entourée de *) que je n'arrive pas à créer.
> Est-ce
> que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet
> de
> la macro/UserForm jusqu'à présent... Merci d'avance!
>
>
> Private Sub UserForm_Initialize()
> 'On charge les dates de matches dans la liste
> For i = 2 To 256
> With Sheets("Présences").Cells(1, i)
> If .Value <> "" Then
> ComboBox1.AddItem .Text
> End If
> End With
> Next i
> End Sub
>
> Private Sub CommandButton1_Click()
> match_date = ComboBox1.Value
>
> 'On copie le template et on renomme la feuille
> Sheets("Template").Copy After:=Sheets(4)
> Sheets("Template (2)").Name = match_date
>
>
> ' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne
> correspondant au match_date et les copier dans la feuille ayant pour nom
> le
> match_date
>
>
> 'On ferme le programme
> UserForm1.Hide
> End Sub
Je ne suis pas une star en VBA, je pêche un peu des infos à droite à gauche et essaie de les adapter à mes besoins et je dois avouer n'avoir jamais utilisés les filtres élaborés en VBA.
Etant donné que j'ai presque trouvé la solution pourrais-tu m'aider à finaliser la chose? A mon avis, l'erreur provient de "Columns.Copy " ci-dessous. Comment copier la colonne d'une cellule répondant à une condition?
Merci d'avance!
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If Next i
"JPMonnier" wrote:
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base de données, si c'est le cas, il serait judicieux de faire une extraction par filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme critères une date de match et le x des joueurs concernés. Puis extraire le résultat sur une feuille de ton choix ou les titres des colonnes que tu souhaites extraire figurent sur cette feuille ! -- Cordialement
"YeTi" a écrit dans le message de news: > Hello à tous, > > Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 > licenciés > et bien entendu, les 30 ne viennent pas à tous les matchs. > J'ai donc fait un tableau dans une feuille "Présence" avec en titre de > colonne la date du match et en ligne, le nom du joueur. Le joueur inscrit > un > "x" lorsqu'il est disponible à une certaine date. > > A ce jour, ma macro me permet de faire qu'une partie de ce que j'aimerais. > En fait lorsque je lance la macro, un UserForm apparaît et invite > l'utilisateur à choisir une date dans un ComboBox. Les dates sont insérée > en > fonction de celles inscrite dans les titres de colonne de la feuille > "Présence". > > Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la > feuille "Template" est dupliquée et renomée en fonction de la date choisie > (le nom de la feuille = la date du match) *et les joueurs ayant un "x" à > cette date là sont copiés et collés dans la feuille dupliquée ci-dessus*. > > C'est la seconde partie (entourée de *) que je n'arrive pas à créer. > Est-ce > que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code complet > de > la macro/UserForm jusqu'à présent... Merci d'avance! > > > Private Sub UserForm_Initialize() > 'On charge les dates de matches dans la liste > For i = 2 To 256 > With Sheets("Présences").Cells(1, i) > If .Value <> "" Then > ComboBox1.AddItem .Text > End If > End With > Next i > End Sub > > Private Sub CommandButton1_Click() > match_date = ComboBox1.Value > > 'On copie le template et on renomme la feuille > Sheets("Template").Copy After:=Sheets(4) > Sheets("Template (2)").Name = match_date > > > ' Sélectionner tous les noms de la colonne A ayant un "x" dans la colonne > correspondant au match_date et les copier dans la feuille ayant pour nom > le > match_date > > > 'On ferme le programme > UserForm1.Hide > End Sub
JPMonnier
Tu modifies : Columns.Copy par Columns(i).Copy je pense que c'est ce que j'ai compris -- Cordialement
"YeTi" a écrit dans le message de news:
Merci JPMonnier pour cette réponse,
Je ne suis pas une star en VBA, je pêche un peu des infos à droite à gauche et essaie de les adapter à mes besoins et je dois avouer n'avoir jamais utilisés les filtres élaborés en VBA.
Etant donné que j'ai presque trouvé la solution pourrais-tu m'aider à finaliser la chose? A mon avis, l'erreur provient de "Columns.Copy " ci-dessous. Comment copier la colonne d'une cellule répondant à une condition?
Merci d'avance!
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If Next i
"JPMonnier" wrote:
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base de données, si c'est le cas, il serait judicieux de faire une extraction par filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme critères une date de match et le x des joueurs concernés. Puis extraire le résultat sur une feuille de ton choix ou les titres des colonnes que tu souhaites extraire figurent sur cette feuille ! -- Cordialement
"YeTi" a écrit dans le message de news: > Hello à tous, > > Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 > licenciés > et bien entendu, les 30 ne viennent pas à tous les matchs. > J'ai donc fait un tableau dans une feuille "Présence" avec en titre de > colonne la date du match et en ligne, le nom du joueur. Le joueur > inscrit > un > "x" lorsqu'il est disponible à une certaine date. > > A ce jour, ma macro me permet de faire qu'une partie de ce que > j'aimerais. > En fait lorsque je lance la macro, un UserForm apparaît et invite > l'utilisateur à choisir une date dans un ComboBox. Les dates sont > insérée > en > fonction de celles inscrite dans les titres de colonne de la feuille > "Présence". > > Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la > feuille "Template" est dupliquée et renomée en fonction de la date > choisie > (le nom de la feuille = la date du match) *et les joueurs ayant un "x" > à > cette date là sont copiés et collés dans la feuille dupliquée > ci-dessus*. > > C'est la seconde partie (entourée de *) que je n'arrive pas à créer. > Est-ce > que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code > complet > de > la macro/UserForm jusqu'à présent... Merci d'avance! > > > Private Sub UserForm_Initialize() > 'On charge les dates de matches dans la liste > For i = 2 To 256 > With Sheets("Présences").Cells(1, i) > If .Value <> "" Then > ComboBox1.AddItem .Text > End If > End With > Next i > End Sub > > Private Sub CommandButton1_Click() > match_date = ComboBox1.Value > > 'On copie le template et on renomme la feuille > Sheets("Template").Copy After:=Sheets(4) > Sheets("Template (2)").Name = match_date > > > ' Sélectionner tous les noms de la colonne A ayant un "x" dans la > colonne > correspondant au match_date et les copier dans la feuille ayant pour > nom > le > match_date > > > 'On ferme le programme > UserForm1.Hide > End Sub
Tu modifies :
Columns.Copy
par
Columns(i).Copy
je pense que c'est ce que j'ai compris
--
Cordialement
jpmonnier-nospam@neuf.fr
"YeTi" <YeTi@discussions.microsoft.com> a écrit dans le message de
news:9818A84C-A2A0-49D1-8124-EACABD36D869@microsoft.com...
Merci JPMonnier pour cette réponse,
Je ne suis pas une star en VBA, je pêche un peu des infos à droite à
gauche
et essaie de les adapter à mes besoins et je dois avouer n'avoir jamais
utilisés les filtres élaborés en VBA.
Etant donné que j'ai presque trouvé la solution pourrais-tu m'aider à
finaliser la chose? A mon avis, l'erreur provient de "Columns.Copy "
ci-dessous. Comment copier la colonne d'une cellule répondant à une
condition?
Merci d'avance!
'On copie la disponibilité du joueur en fonction de la date choisie
For i = 2 To 256
If Cells(1, i) = match_date Then
Columns.Copy
Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
End If
Next i
"JPMonnier" wrote:
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de
base
de données, si c'est le cas, il serait judicieux de faire une extraction
par
filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre
comme
critères une date de match et le x des joueurs concernés.
Puis extraire le résultat sur une feuille de ton choix ou les titres des
colonnes que tu souhaites extraire figurent sur cette feuille !
--
Cordialement
jpmonnier-nospam@neuf.fr
"YeTi" <YeTi@discussions.microsoft.com> a écrit dans le message de
news:F57F786E-04E4-484A-8D7F-F1B546D2A134@microsoft.com...
> Hello à tous,
>
> Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30
> licenciés
> et bien entendu, les 30 ne viennent pas à tous les matchs.
> J'ai donc fait un tableau dans une feuille "Présence" avec en titre de
> colonne la date du match et en ligne, le nom du joueur. Le joueur
> inscrit
> un
> "x" lorsqu'il est disponible à une certaine date.
>
> A ce jour, ma macro me permet de faire qu'une partie de ce que
> j'aimerais.
> En fait lorsque je lance la macro, un UserForm apparaît et invite
> l'utilisateur à choisir une date dans un ComboBox. Les dates sont
> insérée
> en
> fonction de celles inscrite dans les titres de colonne de la feuille
> "Présence".
>
> Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la
> feuille "Template" est dupliquée et renomée en fonction de la date
> choisie
> (le nom de la feuille = la date du match) *et les joueurs ayant un "x"
> à
> cette date là sont copiés et collés dans la feuille dupliquée
> ci-dessus*.
>
> C'est la seconde partie (entourée de *) que je n'arrive pas à créer.
> Est-ce
> que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code
> complet
> de
> la macro/UserForm jusqu'à présent... Merci d'avance!
>
>
> Private Sub UserForm_Initialize()
> 'On charge les dates de matches dans la liste
> For i = 2 To 256
> With Sheets("Présences").Cells(1, i)
> If .Value <> "" Then
> ComboBox1.AddItem .Text
> End If
> End With
> Next i
> End Sub
>
> Private Sub CommandButton1_Click()
> match_date = ComboBox1.Value
>
> 'On copie le template et on renomme la feuille
> Sheets("Template").Copy After:=Sheets(4)
> Sheets("Template (2)").Name = match_date
>
>
> ' Sélectionner tous les noms de la colonne A ayant un "x" dans la
> colonne
> correspondant au match_date et les copier dans la feuille ayant pour
> nom
> le
> match_date
>
>
> 'On ferme le programme
> UserForm1.Hide
> End Sub
Tu modifies : Columns.Copy par Columns(i).Copy je pense que c'est ce que j'ai compris -- Cordialement
"YeTi" a écrit dans le message de news:
Merci JPMonnier pour cette réponse,
Je ne suis pas une star en VBA, je pêche un peu des infos à droite à gauche et essaie de les adapter à mes besoins et je dois avouer n'avoir jamais utilisés les filtres élaborés en VBA.
Etant donné que j'ai presque trouvé la solution pourrais-tu m'aider à finaliser la chose? A mon avis, l'erreur provient de "Columns.Copy " ci-dessous. Comment copier la colonne d'une cellule répondant à une condition?
Merci d'avance!
'On copie la disponibilité du joueur en fonction de la date choisie For i = 2 To 256 If Cells(1, i) = match_date Then Columns.Copy Sheets("Formules").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse End If Next i
"JPMonnier" wrote:
Bonjour, je ne sais pas si tes données sont distribuées Sous forme de base de données, si c'est le cas, il serait judicieux de faire une extraction par filtre élaboré (en VBA bien sur) dans lequel filtre tu pourrais mettre comme critères une date de match et le x des joueurs concernés. Puis extraire le résultat sur une feuille de ton choix ou les titres des colonnes que tu souhaites extraire figurent sur cette feuille ! -- Cordialement
"YeTi" a écrit dans le message de news: > Hello à tous, > > Je fais un classeur Excel pour mon équipe de foot. Nous sommes 30 > licenciés > et bien entendu, les 30 ne viennent pas à tous les matchs. > J'ai donc fait un tableau dans une feuille "Présence" avec en titre de > colonne la date du match et en ligne, le nom du joueur. Le joueur > inscrit > un > "x" lorsqu'il est disponible à une certaine date. > > A ce jour, ma macro me permet de faire qu'une partie de ce que > j'aimerais. > En fait lorsque je lance la macro, un UserForm apparaît et invite > l'utilisateur à choisir une date dans un ComboBox. Les dates sont > insérée > en > fonction de celles inscrite dans les titres de colonne de la feuille > "Présence". > > Lorsque la date a été choisie, l'utilisateur clique sur exécuter et la > feuille "Template" est dupliquée et renomée en fonction de la date > choisie > (le nom de la feuille = la date du match) *et les joueurs ayant un "x" > à > cette date là sont copiés et collés dans la feuille dupliquée > ci-dessus*. > > C'est la seconde partie (entourée de *) que je n'arrive pas à créer. > Est-ce > que quelqu'un pourrait m'aider? Je vous laisse ci-dessous le code > complet > de > la macro/UserForm jusqu'à présent... Merci d'avance! > > > Private Sub UserForm_Initialize() > 'On charge les dates de matches dans la liste > For i = 2 To 256 > With Sheets("Présences").Cells(1, i) > If .Value <> "" Then > ComboBox1.AddItem .Text > End If > End With > Next i > End Sub > > Private Sub CommandButton1_Click() > match_date = ComboBox1.Value > > 'On copie le template et on renomme la feuille > Sheets("Template").Copy After:=Sheets(4) > Sheets("Template (2)").Name = match_date > > > ' Sélectionner tous les noms de la colonne A ayant un "x" dans la > colonne > correspondant au match_date et les copier dans la feuille ayant pour > nom > le > match_date > > > 'On ferme le programme > UserForm1.Hide > End Sub