Réservation salle

envol

XLDnaute Occasionnel
Bonsoir le forum, bonsoir à tous,

je doit concevoir un outil de réservation de salle que l'équipe dont je fais partie, utilisera d'ici quelques semaines à peine.

Hélas, la réalisation est trop complexe pour moi. Pourriez-vous m'aider svp ?

Pour vous donner une idée plus précise, j'ai fait une démonstration qui contient aussi des commentaires. Je la mets en téléchargement car elle dépasse la taille limite.

Merci d'avance pour votre soutien.

Cordialement,
 

envol

XLDnaute Occasionnel
Re : Réservation salle

Bonjour Gruick et JNP, bonjour le fil,

Désolé.:eek: J'aurais dû en effet le mettre ds mon portait, que j'utilisais 2007. Maintenant, c'est fait.:)
Naïvement, j'aurais pensé que la dernière version pouvait exploiter les données des versions antérieures.

Pour JNP
"pour 2011, teste tout de suite"
>> je tente le coup et te fais un retour aussi vite que possible"

Pour Gruick
>> ce serait dommage d'arrêter maintenant, d'autant qu'au-delà de ce projet, tes idées pourrait en intéresser plus d'un sur le forum qui utiliseraient 2004 ou encore 2000, non ?
Je serais d'avis que tu continues.

Bon appétit,:D

Envol
 

envol

XLDnaute Occasionnel
Re : Réservation salle

Bonjour JNP, Gruick, bonjour le fil,

Pour ajouter des noms à cette liste (...) faire un "Inserrer" dans la liste, taper le nom, et éventuellement faire un tri de la liste pour que l'USF soit rempli dans l'ordre alphabétique...

Ok :)pour insérer de nouveaux agents. en revanche, je ne comprends pas comment on fait pour choisir la couleur de fond pour chaque agent.:(

Je pense que la liste de chiffres colonnes C à E, feuilles "sources" est à modifier mais je sais pas comment (en dépit de multiples essais...).

JNP, peux-tu éclairer ma lanterne, svp ?

Merci et bonne journée,
 

envol

XLDnaute Occasionnel
Re : Réservation salle

je ne comprends pas comment on fait pour choisir la couleur de fond pour chaque agent

C'est tout bon. J'ai trouvé comment faire.:)

Par contre, je trouve pas comment faire pour
- ajouter une nouvelle salle et avoir une mise en forme identique aux autres salles.:confused:

Avec "insérer" puis "format identique à celui de gauche", je ne récupère pas le quadrillage et les sam/dim. ne sont pas fusionnés.
Faut-il le faire manuellement ?

Bonne journée.

Envol
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Réservation salle

Re :),
Rajouter une salle ne faisait pas partie du cahier des charges :p...
Plus sérieusement, s'amuser à démonter l'existant, je ne l'ai pas envisagé, par contre, j'ai proposé à Gruick une association de malfaiteur, ta question l'éclairera certainement sur l'objectif ;).
Le plus simple, c'est de modifier les macros de construction et de rebâtir une année à ces endroits précis
Code:
Sub WeekEnd()
Dim Cellule As Range, Premier As Boolean, I As Integer
Premier = True
Application.DisplayAlerts = False
For Each Cellule In Selection
If Premier = True Then
If Weekday(Cellule) = 1 Or Weekday(Cellule) = 7 Then
Range(Cells(Cellule.Row, 1), Cells(Cellule.Row + 1, 1)).Interior.ColorIndex = 15
For I = 2 To [COLOR=red][B]7 [COLOR=seagreen]' nombre de salles +1[/COLOR][/B][/COLOR]
Range(Cells(Cellule.Row, I), Cells(Cellule.Row + 1, I)).Interior.ColorIndex = 15
Range(Cells(Cellule.Row, I), Cells(Cellule.Row + 1, I)).Merge
Next I
End If
Premier = False
Else
Premier = True
End If
Next
Application.DisplayAlerts = True
End Sub
ainsi que
Code:
Sub Fériés()
Dim Cellule As Range, Premier As Boolean, I As Integer, Jours, Férié As Boolean
Premier = True
Application.DisplayAlerts = False
On Error Resume Next
For Each Cellule In Selection
If Premier = True Then
Jours = JoursFériés("2010")
Férié = False
For I = 0 To UBound(Jours)
If Cellule = Jours(I) Then Férié = True
Next I
If Férié = True Then
Range(Cells(Cellule.Row, 1), Cells(Cellule.Row + 1, 1)).Interior.ColorIndex = 3
For I = 2 To [B][COLOR=#ff0000]7 [/COLOR][COLOR=seagreen]' nombre de salles +1[/COLOR][/B]
Range(Cells(Cellule.Row, I), Cells(Cellule.Row + 1, I)).Interior.ColorIndex = 3
Range(Cells(Cellule.Row, I), Cells(Cellule.Row + 1, I)).Merge
Next I
End If
Premier = False
Else
Premier = True
End If
Next
On Error GoTo 0
Application.DisplayAlerts = True
End Sub
Voili, voilou :D...
Bonne journée :cool:
 

Gruick

XLDnaute Accro
Re : Réservation salle

Bonjour vous deux,

Puisque nos versions d'Excel sont différentes je me vois pas proposer des trucs sans les tester.
De plus, j'étais parti sur autre direction en conservant la BDD, qui pouvait servir d'historique aussi, et une représentation graphique bornée sur les dates et provisoire donc.

Je m'éclipse donc du sujet.
 

envol

XLDnaute Occasionnel
Re : Réservation salle

Bonsoir JNP, bonsoir le fil,

Merci pour ton soutien. :)
Comme tu le disais, je dois savoir faire, c'est pour ça que je veux savoir insérer une colonne (je dois encore tester la réécriture d'un tableau pour l'année 2011...)

Le plus simple, c'est de modifier les macros de construction et de rebâtir une année à ces endroits précis

Voilà, j'ai écrasé les anciens codes par ceux que tu m'as donnés.
Ensuite, j'ai tenté avec d'insérer une colonne avec un clic droit... mais c'est pas la bonne solution...:confused:

Bonne soirée,
Envol
 

JNP

XLDnaute Barbatruc
Re : Réservation salle

Re :),
Petite explication de texte sur les macros que j'y avais laissé. Pour préparer l'onglet 2011 (attention de bien l'appeler par l'année, sinon, les macros d'affichage ne fonctionneront pas), sélectionner de A3 à A731 (733 pour les années bissextiles).
Lancer dans le module Préparation la sub Remplissage, puis la sub Fusion, puis la sub WeekEnd et enfin la sub Fériés, il ne reste plus qu'à mettre le quadrillage, la hauteur des lignes à 10 et les entêtes (magique, non :D?)...
Tout est là, il te suffit d'appliquer les 4 macros après sélection sur un onglet vide (j'aurais pu le faire en une seule, mais à titre didactique, il est intérressant de voir ce que fait chaque macro, ce qui t'aurait permis de voir la modif à faire). Je n'ai jamais parlé d'insertion de colonne...
A + :cool:
 

envol

XLDnaute Occasionnel
Re : Réservation salle

Bonsoir JP,

j'ai refait un planning avec comme année 2011 et les nouveaux codes pour avoir plus de salles
Sans doute la fatigue ou le manque d'expérience... Bref. mon travail est loi d'être aussi bon que le tient.
je trouve pas pourquoi ça marche pas.

Envol
 

envol

XLDnaute Occasionnel
Re : Réservation salle

Bonsoir et meilleurs voeux pour 2010 !

Bon ! j'ai réglé mes p'tits pbs et j'arrive maintenant à faire le planning comme il faut.

Peut-être que le projet évoluera. Je vs tiendrai au courant.

Bonne soirée
 

envol

XLDnaute Occasionnel
Re : Réservation salle

Bonjour JNP,

Je tente de modifier la macro "fonction" et d'insérer le calcul de 2 joures fériés supplémentaires: le vendredi saint qui précède le dimanche de Pâques et la saint-etienne (26 déc.)

Dans le second cas, pas de pb. Dans le 1er, je sais pas faire.
Sais-tu s'il existe une macro pour ce calcul du vendredi saint ?

Bonne journée,

Envol
 

JNP

XLDnaute Barbatruc
Re : Réservation salle

Re :),
Je tente de modifier la macro "fonction" et d'insérer le calcul de 2 joures fériés supplémentaires: le vendredi saint qui précède le dimanche de Pâques et la saint-etienne (26 déc.)
Quelle idée de travailler en Alsace/Moselle :p...
En principe, en ajoutant dans la macro de Sigorneau
Code:
  Arr(11) = LPaques - 3 - Ajust
  Arr(12) = DateSerial(An, 12, 26) - Ajust
ça devrait le faire ;).
Bon courage :cool:
 

JNP

XLDnaute Barbatruc
Re : Réservation salle

Re :),
Effectivement, je n'avait pas vu que le tableau était dimensionné à 10, il suffit de le passer à 12 pour que ça fonctionne.
Code:
Function JoursFériés(An)
' Détermination perpétuelle des jours fériés par année - Résultats sous forme de tableau
' Frédéric Sigoneau
Dim NbOr, Epacte, Ajust As Integer
Dim PLune, LPaques, Arr([COLOR=red][B]12[/B][/COLOR]) As Long
If ActiveWorkbook.Date1904 Then Ajust = 1462
  'calcul du Lundi de Pâques
  NbOr = (An Mod 19) + 1
  Epacte = (11 * NbOr - (3 + Int(2 + Int(An / 100)) * 3 / 7)) Mod 30
  PLune = DateSerial(An, 4, 19) - ((Epacte + 6) Mod 30)
  If Epacte = 24 Then PLune = PLune - 1
  If Epacte = 25 And (An >= 1900 And An < 2200) Then PLune = PLune - 1
  LPaques = PLune - Weekday(PLune) + vbMonday + 7        'Lundi Pâques
 
  'tableau des fériés
  Arr(0) = DateSerial(An, 1, 1) - Ajust
  Arr(1) = LPaques - Ajust
  Arr(2) = LPaques + 38 - Ajust  'Ascension
  Arr(3) = LPaques + 49 - Ajust  'Pentecôte
  Arr(4) = DateSerial(An, 5, 1) - Ajust
  Arr(5) = DateSerial(An, 5, 8) - Ajust
  Arr(6) = DateSerial(An, 7, 14) - Ajust
  Arr(7) = DateSerial(An, 8, 15) - Ajust
  Arr(8) = DateSerial(An, 11, 1) - Ajust
  Arr(9) = DateSerial(An, 11, 11) - Ajust
  Arr(10) = DateSerial(An, 12, 25) - Ajust
[COLOR=red][B] Arr(11) = LPaques - 3 - Ajust[/B][/COLOR]
[B][COLOR=red] Arr(12) = DateSerial(An, 12, 26) - Ajust[/COLOR][/B]
  'tri du tableau
  Dim I%, J%, K%, tmp
  For I = LBound(Arr) To UBound(Arr)
    J = I
    For K = J + 1 To UBound(Arr)
      If Arr(K) <= Arr(J) Then J = K
    Next K
    If I <> J Then
      tmp = Arr(J): Arr(J) = Arr(I): Arr(I) = tmp
    End If
  Next I
 
  'renvoi du résultat
  On Error GoTo Fin
  If Application.Caller.Rows.Count > 1 Then
    JoursFériés = Application.Transpose(Arr)
    Exit Function
  End If
Fin:
  JoursFériés = Arr
End Function 'fs
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 775
dernier inscrit
assen