Affichage d'un calendrier

Résolu/Fermé
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 - 30 sept. 2009 à 11:04
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 - 2 oct. 2009 à 09:02
Bonjour,

Bon voilà j'ai un nouveau fichier excel à créer avec des macros enfin j'aimerai faire ça en macro et je débute toujours, alors je vais tenter d'être clair mais ça va pas être facil . . .
j'ai un userform qui me permet de rentrer un code avec une date via un contôle 'DTpicker' la date se met dans une cellule dison A1 pour faire simple, de là je voudrai remplir les cellules suivantes de la ligne avec les dates de la semaine entourant la date séléctionnée dans le contrôle

donc par exemple:

Dans mon contrôle DTPicker la date et celle d'aujourd'hui le Mer 30 septembre 2009
Dans la cellule A1 s'incrit Mer 30/09/09
Dans la A2 je voudrai Lun 28/09/09, dans la A3 Mar 29/09/09, dans la A4 Mer 30/09/09, dans la A5 Jeu 01/09/09,dans la A6 Ven 02/09/09 et enfi dans la A7 et A8 le samedi et dimanche mais avec une mise en forme

Donc j'ai réussi à faire un code qui marche mais je trouve compliqué et long je me demande si il n'y a pas plus simple surtout que je fais en plus une mise en forme personnalisée dans mon code . . .

Voici ce que j'ai commencé à faire:
( date_depose étant le nom de mon contrôle DTPicker dans mon userform)

ActiveCell.Offset(0, 1).Value = date_depose
ActiveCell.Offset(0, 1).NumberFormatLocal = "jjj-jj/mm/aa"
With ActiveCell.Offset(0, 1).Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
With ActiveCell.Offset(0, 1).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With ActiveCell.Offset(0, 1).Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With ActiveCell.Offset(0, 1).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With ActiveCell.Offset(0, 1).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
ActiveCell.Offset(0, 2).Value = date_depose + 1
ActiveCell.Offset(0, 2).NumberFormatLocal = "jjj-jj/mm/aa"
ActiveCell.Offset(0, 3).FormulaR1C1 = date_depose + 2
ActiveCell.Offset(0, 3).NumberFormatLocal = "jjj-jj/mm/aa"
ActiveCell.Offset(0, 4).FormulaR1C1 = date_depose + 3
ActiveCell.Offset(0, 4).NumberFormatLocal = "jjj-jj/mm/aa"
ActiveCell.Offset(0, 5).FormulaR1C1 = date_depose + 4
ActiveCell.Offset(0, 5).NumberFormatLocal = "jjj-jj/mm/aa"



ça fonctionne (sauf pour afficher les dates antérieur à la date saisie qui peuvent être variable selon le jour de saisie si on saisie mercredi ce sera -3 si jeudi -4 donc casi ingérable) mais c'est plutot laborieux surtout si je dois répéter mes codes de formatage à chaque ligne qui rentre un jour c'est pour celà dailleur que je formate seulement le premier jour...je pense qu'il est possible de dire je veux tel format de tel cellule à tel cellule.....idem pour les jours je n'en ai mis que 5 mais je dois en afficher beaucoup plus donc cette methode marche mais c'est bof.....

J'espere que j'ai été assez explicite.......Merci d'avance pour vos eventuels conseils
A voir également:

7 réponses

informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
30 sept. 2009 à 13:33
Merci pour cette rapide réponse je viens d'essayer, effectivement c'est beaucoup plus simple et maintenant je saurai comment désigner un groupe de cellule ;) par contre il me met une erreur de bibliothèque sur "Date" . . . ?? ? ?
2
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
30 sept. 2009 à 16:08
Oui je sais bien mais je dois avoir un problème de paramétrage...je viens d'essayer sur le poste d'un collègue et ça marche donc faut que je trouve d'ou ça vient.....donc ta macro marche impeccable sur un autre ordi lol par contre tu as résolu 2 sur 3 de mes soucis, mais le 3° j'avai peut etre pas bien expliquer en faite si je rempli le mercredi 30 je veux que la macro affiche du lundi 28 au vendredi 02 à partir de la cellule adjacente à la date (A1) je vais representer les cellule par des "" pour bien me faire comprendre:

Exemple:

A1:"mer 30/09/09" A2: "lun 28/09/09" A3: "mardi 29/09/09" A4: "mer 30/09/09" A5: "jeu 01/10/09" A6: "ven 02/10/09"

Mais il faudrait que celà se fasse quelque soit la date A1 entrée en gros que la macro se dise:

----tiens j'ai le mercredi 30 mercredi c'est le milieu de la semaine il y a 2 jour avant quel sont t'il ou dois je les mettres...et ils y en a 2 après aussi......---

euuuuh est-ce compréhenssible?

en tout cas quelle belle macro que tu m'as indiquée toute à l'heure du rêve à côté du code que j'avai pondu. . . . .. :s
1
m@rina Messages postés 20061 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 22 avril 2024 11 269
30 sept. 2009 à 12:58
Bonjour,

C'est sûr qu'on peut faire beaucoup plus court !...

Voici un exemple. Cette macro insère la date du jour dans la cellule en cours et les 5 jours suivants dans les 5 cellules suivantes, le tout formaté :

Sub toto()
date_depose = Date
For x = 0 To 5
    With ActiveCell.Offset(0, x)
        .Value = Format(date_depose + x, "ddd-dd/mm/yy")
        .Borders.LineStyle = xlContinuous
        .Interior.ColorIndex = 15
    End With
Next x
End Sub


m@rina
0
m@rina Messages postés 20061 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 22 avril 2024 11 269
30 sept. 2009 à 15:05
Je suis étonnée pour la fonction Date qui a priori ne nécessite pas de bibliothèque particulière...
Cette fonction permet simplement de renvoyer la date du jour (ou plutôt la date système, ce qui est plus juste).
Regarde dans Outils, Référence, il doit y avoir le message de bibliothèque manquante, sans doute juste une case à cocher.

Cela dit, je l'ai mise à titre indicatif, car si j'ai bien compris, toi tu utilises une Userform...

m@rina
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 20061 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 22 avril 2024 11 269
1 oct. 2009 à 18:22
Bonsoir,

Effectivement, je n'avais pas bien saisi ta question.

Voilà la macro supposant que la date se trouve en A1, et que les samedis et dimanches sont interdits puisque a priori tu ne t'occupes que des jours de semaine.

Sub toto()
Dim datesuite As Date, Date_depose, x, y
date_depose = Range("A1").Value
jour = Weekday(date_depose, vbMonday)

If jour = 6 Or jour = 7 Then
MsgBox "Ne pas choisir de samedi ou de dimanche"
Exit Sub
End If

ActiveCell.Offset(0, jour).Value = date_depose

For x = jour + 1 To 5
    datesuite = ActiveCell.Offset(0, x - 1).Value + 1
    ActiveCell.Offset(0, x).Value = datesuite
Next x

For y = jour - 1 To 1 Step -1
datesuite = ActiveCell.Offset(0, y + 1).Value - 1
ActiveCell.Offset(0, y).Value = datesuite
Next y

'formatage
With Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 5))
.Borders.LineStyle = xlContinuous
.Interior.ColorIndex = 15
.NumberFormat = "ddd-dd/mm/yy"
End With


m@rina
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
2 oct. 2009 à 08:53
re,

alors la macro tel que tu me la écrite ne marche pas, mais c'est normal car date_depose est le nom de mon controle DTPicker donc je ne peux le re-déclarer, je pourrai changer le nom tu me dira certe, mais en faite ce que je voudrai c'est que la date de référence soit en faite celle de mon DTPicker qui dailleurs me pose problème. . .j'ai un autre post ou je parle de ce problème quand je lance mon userform la date dans mon DTPicker ne se met pas à la date du jour voici le lien vers mon autre topic si tu veux voir le problème:

https://forums.commentcamarche.net/forum/affich-14591450-excel-outil-controle-calendrier#2

voilà voilà

0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
2 oct. 2009 à 09:02
Bon je viens de modifier la variable date_depose contre depose pour pas poser de problème et je lui ai dailleur donné la valeur date_depose comme ça la date réf est bien celle de mon DTPicker et là ta macro marche nickel reste à mettre à jour le DTPicker automatiquement . . ..
0