Bonjour,
J'aimerai faire un calendrier de congés dans lequel je metterai une date
de départ et une date de fin (par exemple en A1 le 02/01 et en B1 le
05/01) ainsi qu'une plage de date allant du 01/01 au 31/01 (par exemple
B3/01, C3/01, D3/01, etc...jusque AF31/01) puis en A4=Nom 1 et
A5=Nom 2.
| A | B | C | D | E | F |
G | F | G | etc...
1 | 02/01 05/01
2 |
3 | | 01/01 02/01 03/01 04/01 05/01 06/01
07/01 08/01 etc...
4 | nom 1 | OK OK OK OK
5 | nom 2 |
J'aimerai savoir comment faire pour ecrire OK en dessous de chaque date du
calendrier comprise entre A1 (le 02/01) et B1 ( le 05/01) en VBE svp. J'ai
cherché sur beaucoup de site mais je n'ai pas trouvé mon bonheur.
Actuellement je suis obligé de mettre une formule dans chaque céllule
B4,C4,D4,E4,F4,etc... du style =SI(ET(B4>¡;B4<±);"OK";"") mais je
préfererai passer par VBE avec une solution simple.
Merci par avance
Bonjour,
J'aimerai faire un calendrier de congés dans lequel je metterai une date
de départ et une date de fin (par exemple en A1 le 02/01 et en B1 le
05/01) ainsi qu'une plage de date allant du 01/01 au 31/01 (par exemple
B3/01, C3/01, D3/01, etc...jusque AF31/01) puis en A4=Nom 1 et
A5=Nom 2.
| A | B | C | D | E | F |
G | F | G | etc...
1 | 02/01 05/01
2 |
3 | | 01/01 02/01 03/01 04/01 05/01 06/01
07/01 08/01 etc...
4 | nom 1 | OK OK OK OK
5 | nom 2 |
J'aimerai savoir comment faire pour ecrire OK en dessous de chaque date du
calendrier comprise entre A1 (le 02/01) et B1 ( le 05/01) en VBE svp. J'ai
cherché sur beaucoup de site mais je n'ai pas trouvé mon bonheur.
Actuellement je suis obligé de mettre une formule dans chaque céllule
B4,C4,D4,E4,F4,etc... du style =SI(ET(B4>¡;B4<±);"OK";"") mais je
préfererai passer par VBE avec une solution simple.
Merci par avance
Bonjour,
J'aimerai faire un calendrier de congés dans lequel je metterai une date
de départ et une date de fin (par exemple en A1 le 02/01 et en B1 le
05/01) ainsi qu'une plage de date allant du 01/01 au 31/01 (par exemple
B3/01, C3/01, D3/01, etc...jusque AF31/01) puis en A4=Nom 1 et
A5=Nom 2.
| A | B | C | D | E | F |
G | F | G | etc...
1 | 02/01 05/01
2 |
3 | | 01/01 02/01 03/01 04/01 05/01 06/01
07/01 08/01 etc...
4 | nom 1 | OK OK OK OK
5 | nom 2 |
J'aimerai savoir comment faire pour ecrire OK en dessous de chaque date du
calendrier comprise entre A1 (le 02/01) et B1 ( le 05/01) en VBE svp. J'ai
cherché sur beaucoup de site mais je n'ai pas trouvé mon bonheur.
Actuellement je suis obligé de mettre une formule dans chaque céllule
B4,C4,D4,E4,F4,etc... du style =SI(ET(B4>¡;B4<±);"OK";"") mais je
préfererai passer par VBE avec une solution simple.
Merci par avance
Merci Daniel, ta macro fonctionne à merveille ( et quel gain de temps). Je
l'ai ajouté à un bouton de commande et tout tourne nickel. Vu ton niveau
dans excel, je me permet de te poser encore 3 petites questions.
1°) Lorsque je change les date en A1 et B1, il me laisse les "Ok" des
dates précédentes. Que faut il modifier pour reprendre le teste au début à
chaque fois ?
2°) Est-il possible d'éxecuter une macro lorsqu'une valeur d'une céllule
change dans la feuille active ?
3°) Je donne mes date de départ et de fin dans 2 textbox à l'interieur
d'un userform.Ces 2 dates viennent s'inscrire en A1 et B1 et ta macro se
lance juste après.
Est-il possible que ta macro écrive OK en fonction du nom choisis dans une
liste comprise dans un userform ou d'une céllule (par exemple E1) ?
| A | B | C | D | E | F |
G | F | G | etc...
1 | 02/01 05/01 nom2
2 |
3 | | 01/01 02/01 03/01 04/01 05/01 06/01
07/01 08/01 etc...
4 | nom 1 |
5 | nom 2 | OK OK OK OK
En fait le nom se trouvera dans un autre feuillet parce que chaque
utilisateur aura sa propre fiche. C'est pour cette raison que j'aimerai
que ta macro sache de qui il s'agit. Sinon encore merci pour ton aide
précieuse. Je vais tenter d'étudier ta macro afin de me perfectionner et
pouvoir la reproduire a l'avenir. Encore Merci
Merci Daniel, ta macro fonctionne à merveille ( et quel gain de temps). Je
l'ai ajouté à un bouton de commande et tout tourne nickel. Vu ton niveau
dans excel, je me permet de te poser encore 3 petites questions.
1°) Lorsque je change les date en A1 et B1, il me laisse les "Ok" des
dates précédentes. Que faut il modifier pour reprendre le teste au début à
chaque fois ?
2°) Est-il possible d'éxecuter une macro lorsqu'une valeur d'une céllule
change dans la feuille active ?
3°) Je donne mes date de départ et de fin dans 2 textbox à l'interieur
d'un userform.Ces 2 dates viennent s'inscrire en A1 et B1 et ta macro se
lance juste après.
Est-il possible que ta macro écrive OK en fonction du nom choisis dans une
liste comprise dans un userform ou d'une céllule (par exemple E1) ?
| A | B | C | D | E | F |
G | F | G | etc...
1 | 02/01 05/01 nom2
2 |
3 | | 01/01 02/01 03/01 04/01 05/01 06/01
07/01 08/01 etc...
4 | nom 1 |
5 | nom 2 | OK OK OK OK
En fait le nom se trouvera dans un autre feuillet parce que chaque
utilisateur aura sa propre fiche. C'est pour cette raison que j'aimerai
que ta macro sache de qui il s'agit. Sinon encore merci pour ton aide
précieuse. Je vais tenter d'étudier ta macro afin de me perfectionner et
pouvoir la reproduire a l'avenir. Encore Merci
Merci Daniel, ta macro fonctionne à merveille ( et quel gain de temps). Je
l'ai ajouté à un bouton de commande et tout tourne nickel. Vu ton niveau
dans excel, je me permet de te poser encore 3 petites questions.
1°) Lorsque je change les date en A1 et B1, il me laisse les "Ok" des
dates précédentes. Que faut il modifier pour reprendre le teste au début à
chaque fois ?
2°) Est-il possible d'éxecuter une macro lorsqu'une valeur d'une céllule
change dans la feuille active ?
3°) Je donne mes date de départ et de fin dans 2 textbox à l'interieur
d'un userform.Ces 2 dates viennent s'inscrire en A1 et B1 et ta macro se
lance juste après.
Est-il possible que ta macro écrive OK en fonction du nom choisis dans une
liste comprise dans un userform ou d'une céllule (par exemple E1) ?
| A | B | C | D | E | F |
G | F | G | etc...
1 | 02/01 05/01 nom2
2 |
3 | | 01/01 02/01 03/01 04/01 05/01 06/01
07/01 08/01 etc...
4 | nom 1 |
5 | nom 2 | OK OK OK OK
En fait le nom se trouvera dans un autre feuillet parce que chaque
utilisateur aura sa propre fiche. C'est pour cette raison que j'aimerai
que ta macro sache de qui il s'agit. Sinon encore merci pour ton aide
précieuse. Je vais tenter d'étudier ta macro afin de me perfectionner et
pouvoir la reproduire a l'avenir. Encore Merci
Félicitation pour ta rapidité à répondre ainsi que pour tes connaissances
au sujet d'excel.J'ai ajouté les ligne en dessous du 2 ème SET et je
rempli les dates en A1 et B1 avant de lancer la macro mais lorsque je
lance la procédure, il me fait un copier-coller de la céllule A4 ("Nom1")
dans la derniere céllule où j'ai cliqué avant de lancer la macro. Il me
place correctement les "OK" mais toujours dans les 2 lignes "nom1" et
"nom2". Voici la macro que j'ai désormais :
Private Sub CommandButton1_Click()
Dim PlageNoms As Range, PlageDate As Range
Dim c As Range, d As Range
Set PlageDate = Range("B3:AF3")
Set PlageNoms = Range("A4:A10000")
ActiveCell = Range("A4")
Do While ActiveCell.Value <> ""
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 31)).Value = ""
ActiveCell.Offset(1, 0).Select
Loop
For Each c In PlageNoms
If c.Value = "" Then Exit Sub
For Each d In PlageDate
Var = d.Column
Var1 = d.Value
If d.Value >= Range("A1").Value And d.Value <=
Range("B1").Value Then
c.Offset(0, d.Column - 1).Value = "OK"
End If
Next d
Next c
End Sub
J'ai essayé de comprendre ta macro mais je ne sais pas à quoi sert Var et
Var1 ainsi que le d et le c qui se trouve apres Next. Le c et d sont
nécessaire ou c'est juste un repère visuel pour faciliter la lecture de la
macro ?
Je te remercie beaucoup pour l'aide que tu m'a apporter. Je vais me baser
sur ta macro pour essayer de trouver une solution.
Amicalement,
Didier
Félicitation pour ta rapidité à répondre ainsi que pour tes connaissances
au sujet d'excel.J'ai ajouté les ligne en dessous du 2 ème SET et je
rempli les dates en A1 et B1 avant de lancer la macro mais lorsque je
lance la procédure, il me fait un copier-coller de la céllule A4 ("Nom1")
dans la derniere céllule où j'ai cliqué avant de lancer la macro. Il me
place correctement les "OK" mais toujours dans les 2 lignes "nom1" et
"nom2". Voici la macro que j'ai désormais :
Private Sub CommandButton1_Click()
Dim PlageNoms As Range, PlageDate As Range
Dim c As Range, d As Range
Set PlageDate = Range("B3:AF3")
Set PlageNoms = Range("A4:A10000")
ActiveCell = Range("A4")
Do While ActiveCell.Value <> ""
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 31)).Value = ""
ActiveCell.Offset(1, 0).Select
Loop
For Each c In PlageNoms
If c.Value = "" Then Exit Sub
For Each d In PlageDate
Var = d.Column
Var1 = d.Value
If d.Value >= Range("A1").Value And d.Value <=
Range("B1").Value Then
c.Offset(0, d.Column - 1).Value = "OK"
End If
Next d
Next c
End Sub
J'ai essayé de comprendre ta macro mais je ne sais pas à quoi sert Var et
Var1 ainsi que le d et le c qui se trouve apres Next. Le c et d sont
nécessaire ou c'est juste un repère visuel pour faciliter la lecture de la
macro ?
Je te remercie beaucoup pour l'aide que tu m'a apporter. Je vais me baser
sur ta macro pour essayer de trouver une solution.
Amicalement,
Didier
Félicitation pour ta rapidité à répondre ainsi que pour tes connaissances
au sujet d'excel.J'ai ajouté les ligne en dessous du 2 ème SET et je
rempli les dates en A1 et B1 avant de lancer la macro mais lorsque je
lance la procédure, il me fait un copier-coller de la céllule A4 ("Nom1")
dans la derniere céllule où j'ai cliqué avant de lancer la macro. Il me
place correctement les "OK" mais toujours dans les 2 lignes "nom1" et
"nom2". Voici la macro que j'ai désormais :
Private Sub CommandButton1_Click()
Dim PlageNoms As Range, PlageDate As Range
Dim c As Range, d As Range
Set PlageDate = Range("B3:AF3")
Set PlageNoms = Range("A4:A10000")
ActiveCell = Range("A4")
Do While ActiveCell.Value <> ""
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 31)).Value = ""
ActiveCell.Offset(1, 0).Select
Loop
For Each c In PlageNoms
If c.Value = "" Then Exit Sub
For Each d In PlageDate
Var = d.Column
Var1 = d.Value
If d.Value >= Range("A1").Value And d.Value <=
Range("B1").Value Then
c.Offset(0, d.Column - 1).Value = "OK"
End If
Next d
Next c
End Sub
J'ai essayé de comprendre ta macro mais je ne sais pas à quoi sert Var et
Var1 ainsi que le d et le c qui se trouve apres Next. Le c et d sont
nécessaire ou c'est juste un repère visuel pour faciliter la lecture de la
macro ?
Je te remercie beaucoup pour l'aide que tu m'a apporter. Je vais me baser
sur ta macro pour essayer de trouver une solution.
Amicalement,
Didier
Cette fois ci, ta macro supprime bien les "OK" des 1ere dates données et
je pense que c'est grace a cette ligne:
Range(c.Offset(0, 1), c.Offset(0, 31)).ClearContents
Le soucis c'est que si je laisse mes valeurs sur "feuil1" et que j'execute
la macro sur une autre feuille appellé "feuil2". En modifiant les lignes
SET comme ceci :
Set PlageDate = Sheets("Feuil1").Range("B3:AF3")
Set PlageNoms = Sheets("Feuil1").Range("A4:A10000")
Ceci a pour effet de remplir correctement le "OK" mais la ligne qui sert à
effacer ne fonctionne pas (erreur 1004) puisque la feuil1 n'est pas
active. On dirait que cette fonction fonctionne correctement pour 1 seule
céllule mais pas pour 1 plage. par exemple :
c.Offset(0,1).Value = "" ceci va fonctionner
Range(c.Offset(0, 1), c.Offset(0, 31)).ClearContents ceci renvoi une
erreur 1004
Si tu as 1 parade pour pouvoir éffacer une plage de céllule sur une autre
feuille sans l'activer, je suis preneur.
Encore une fois Merci de ton aide et je pense faire un peu de progrès
grace au code que tu m'indique et que j'éssaie de comprendre.
Amicalement,
Didier
Cette fois ci, ta macro supprime bien les "OK" des 1ere dates données et
je pense que c'est grace a cette ligne:
Range(c.Offset(0, 1), c.Offset(0, 31)).ClearContents
Le soucis c'est que si je laisse mes valeurs sur "feuil1" et que j'execute
la macro sur une autre feuille appellé "feuil2". En modifiant les lignes
SET comme ceci :
Set PlageDate = Sheets("Feuil1").Range("B3:AF3")
Set PlageNoms = Sheets("Feuil1").Range("A4:A10000")
Ceci a pour effet de remplir correctement le "OK" mais la ligne qui sert à
effacer ne fonctionne pas (erreur 1004) puisque la feuil1 n'est pas
active. On dirait que cette fonction fonctionne correctement pour 1 seule
céllule mais pas pour 1 plage. par exemple :
c.Offset(0,1).Value = "" ceci va fonctionner
Range(c.Offset(0, 1), c.Offset(0, 31)).ClearContents ceci renvoi une
erreur 1004
Si tu as 1 parade pour pouvoir éffacer une plage de céllule sur une autre
feuille sans l'activer, je suis preneur.
Encore une fois Merci de ton aide et je pense faire un peu de progrès
grace au code que tu m'indique et que j'éssaie de comprendre.
Amicalement,
Didier
Cette fois ci, ta macro supprime bien les "OK" des 1ere dates données et
je pense que c'est grace a cette ligne:
Range(c.Offset(0, 1), c.Offset(0, 31)).ClearContents
Le soucis c'est que si je laisse mes valeurs sur "feuil1" et que j'execute
la macro sur une autre feuille appellé "feuil2". En modifiant les lignes
SET comme ceci :
Set PlageDate = Sheets("Feuil1").Range("B3:AF3")
Set PlageNoms = Sheets("Feuil1").Range("A4:A10000")
Ceci a pour effet de remplir correctement le "OK" mais la ligne qui sert à
effacer ne fonctionne pas (erreur 1004) puisque la feuil1 n'est pas
active. On dirait que cette fonction fonctionne correctement pour 1 seule
céllule mais pas pour 1 plage. par exemple :
c.Offset(0,1).Value = "" ceci va fonctionner
Range(c.Offset(0, 1), c.Offset(0, 31)).ClearContents ceci renvoi une
erreur 1004
Si tu as 1 parade pour pouvoir éffacer une plage de céllule sur une autre
feuille sans l'activer, je suis preneur.
Encore une fois Merci de ton aide et je pense faire un peu de progrès
grace au code que tu m'indique et que j'éssaie de comprendre.
Amicalement,
Didier
Effectivement désormais la macro efface correctement les "OK" sur la
feuil1.
Pour pouvoir effectuer un effacement d'une plage sur une autre feuil a
partir d'un bouton de commande, j'ai trouvé cette parade :
Private Sub CommandButton1_Click()
Dim PlageNoms As Range, PlageDate As Range
Dim c As Range, d As Range
Set PlageDate = Sheets("Feuil1").Range("B2:AF2")
Set PlageNoms = Sheets("Feuil1").Range("A3:A5")
For Each c In PlageNoms
For Each d In PlageDate
If c = Range("O22").Value Then
c.Offset(0, d.Column - 1).Value = ""
End If
Next
Next
End Sub
En fait je suis obligé de déclarer la plage t pour pouvoir faire référence
à la feuil1 sinon il me fait l'effacement dans la feuille active.
J'ai une nouvelle question à te poser si ca ne te dérange pas. J'éffectuer
une comparaison entre d'une date donnée dans un textbox et une liste de
date de jours fériés. J'aimerai que si il trouve une correspondance avec
la liste, qu'il me fasse Cdate(texbox1.value) - 1 et qu'il reprenne le
teste depuis le début de la liste. Comme tu as écris dans ta macro EXIT
FOR, j'imagine qu'il doit y avoir une commande du style Restart For pour
reprendre le teste depuis le début de la liste avec la nouvelle valeur de
la textbox mais je n'ai rien trouvé jusqu'ici. Comment je pourrait
interpreter cette demande ?
Mon fichier d'aide de VBE refuse de m'afficher les résultats de la
recherche alors je ne peux pas consulter l'aide incluse c'est pour cette
raison que je demande sur le newsgroup.
J'espere ne pas abuser de ta gentillesse et je te remercie de nouveau pour
l'aide que tu m'a apporté jusqu'ici.
Amicalement,
Didier
Effectivement désormais la macro efface correctement les "OK" sur la
feuil1.
Pour pouvoir effectuer un effacement d'une plage sur une autre feuil a
partir d'un bouton de commande, j'ai trouvé cette parade :
Private Sub CommandButton1_Click()
Dim PlageNoms As Range, PlageDate As Range
Dim c As Range, d As Range
Set PlageDate = Sheets("Feuil1").Range("B2:AF2")
Set PlageNoms = Sheets("Feuil1").Range("A3:A5")
For Each c In PlageNoms
For Each d In PlageDate
If c = Range("O22").Value Then
c.Offset(0, d.Column - 1).Value = ""
End If
Next
Next
End Sub
En fait je suis obligé de déclarer la plage t pour pouvoir faire référence
à la feuil1 sinon il me fait l'effacement dans la feuille active.
J'ai une nouvelle question à te poser si ca ne te dérange pas. J'éffectuer
une comparaison entre d'une date donnée dans un textbox et une liste de
date de jours fériés. J'aimerai que si il trouve une correspondance avec
la liste, qu'il me fasse Cdate(texbox1.value) - 1 et qu'il reprenne le
teste depuis le début de la liste. Comme tu as écris dans ta macro EXIT
FOR, j'imagine qu'il doit y avoir une commande du style Restart For pour
reprendre le teste depuis le début de la liste avec la nouvelle valeur de
la textbox mais je n'ai rien trouvé jusqu'ici. Comment je pourrait
interpreter cette demande ?
Mon fichier d'aide de VBE refuse de m'afficher les résultats de la
recherche alors je ne peux pas consulter l'aide incluse c'est pour cette
raison que je demande sur le newsgroup.
J'espere ne pas abuser de ta gentillesse et je te remercie de nouveau pour
l'aide que tu m'a apporté jusqu'ici.
Amicalement,
Didier
Effectivement désormais la macro efface correctement les "OK" sur la
feuil1.
Pour pouvoir effectuer un effacement d'une plage sur une autre feuil a
partir d'un bouton de commande, j'ai trouvé cette parade :
Private Sub CommandButton1_Click()
Dim PlageNoms As Range, PlageDate As Range
Dim c As Range, d As Range
Set PlageDate = Sheets("Feuil1").Range("B2:AF2")
Set PlageNoms = Sheets("Feuil1").Range("A3:A5")
For Each c In PlageNoms
For Each d In PlageDate
If c = Range("O22").Value Then
c.Offset(0, d.Column - 1).Value = ""
End If
Next
Next
End Sub
En fait je suis obligé de déclarer la plage t pour pouvoir faire référence
à la feuil1 sinon il me fait l'effacement dans la feuille active.
J'ai une nouvelle question à te poser si ca ne te dérange pas. J'éffectuer
une comparaison entre d'une date donnée dans un textbox et une liste de
date de jours fériés. J'aimerai que si il trouve une correspondance avec
la liste, qu'il me fasse Cdate(texbox1.value) - 1 et qu'il reprenne le
teste depuis le début de la liste. Comme tu as écris dans ta macro EXIT
FOR, j'imagine qu'il doit y avoir une commande du style Restart For pour
reprendre le teste depuis le début de la liste avec la nouvelle valeur de
la textbox mais je n'ai rien trouvé jusqu'ici. Comment je pourrait
interpreter cette demande ?
Mon fichier d'aide de VBE refuse de m'afficher les résultats de la
recherche alors je ne peux pas consulter l'aide incluse c'est pour cette
raison que je demande sur le newsgroup.
J'espere ne pas abuser de ta gentillesse et je te remercie de nouveau pour
l'aide que tu m'a apporté jusqu'ici.
Amicalement,
Didier