Optimiser planning de réservations de chambres

SwimCoachNico79

XLDnaute Occasionnel
Bonsoir à tous,

Afin d’optimiser un planning de réservations de chambres, je cherche une formule ou un code vba qui me permette de réduire au maximum le nombre de chambres louées en optimisant les réservations

Exemple : la personne 1 loue la chambre 1 du 1er au 18 mais, la chambre 4 est louée par la personne 4 du 19 au 27 mai et pour finir la chambre 20 est louée par la personne 20 du 28 au 30 mai.
Comment faire pour optimiser la chambre 1 et permettre de la louer du 1er au 18 mai à la personne 1 puis du 19 au 27 mai à la personne 4 puis du 28 au 30 mai à la personne 20.

J'ai conscience que cela est simple à traiter manuellement quand on a quelques lignes, mais quid quand il y en a 250 ou plus ?

Quelqu'un a t il une idée.

En vous remerciant par avance.

SCN79
 

Pièces jointes

  • Exemple.xlsx
    8.9 KB · Affichages: 114
  • Exemple.xlsx
    8.9 KB · Affichages: 133
Dernière édition:

SwimCoachNico79

XLDnaute Occasionnel
Re : Optimiser planning de réservations de chambres

Bonsoir ODVJ,

En effet, il y avait une erreur dans mon fichier.
Voici la version corrigée du mon fichier .mod

Peux tu me faire un test avec Cplex ?
En te remerciant par avance.

Bonne soirée.
SCN79
 

Pièces jointes

  • xld_color (version corrigée).zip
    167 KB · Affichages: 31

ODVJ

XLDnaute Impliqué
Re : Optimiser planning de réservations de chambres

Bonsoir,

solution215 chambres
P[21]1P[30]36P[231]79P[65]120P[141]165
P[251]1P[60]37P[203]80P[69]120P[198]165
P[197]2P[33]38P[31]81P[146]121P[137]166
P[247]2P[18]39P[276]82P[136]122P[255]166
P[234]3P[183]39P[204]83P[241]123P[83]167
P[261]3P[262]40P[153]84P[259]124P[142]168
P[287]4P[115]41P[127]85P[122]125P[232]168
P[121]5P[210]41P[140]86P[179]126P[278]169
P[172]5P[270]42P[293]87P[132]127P[301]170
P[286]5P[44]43P[265]88P[145]128P[129]171
P[3]6P[184]43P[290]89P[9]129P[135]172
P[98]6P[147]44P[213]90P[78]129P[160]172
P[101]7P[268]45P[237]90P[71]130P[28]173
P[38]8P[288]46P[95]91P[200]130P[57]174
P[273]8P[89]47P[193]91P[37]131P[275]175
P[118]9P[112]47P[7]92P[149]132P[150]176
P[302]9P[4]48P[215]92P[138]133P[50]177
P[279]10P[167]48P[230]93P[164]133P[15]178
P[25]11P[294]49P[252]93P[2]134P[217]178
P[176]11P[123]50P[52]94P[59]135P[53]179
P[90]12P[6]51P[168]94P[109]136P[245]179
P[233]12P[99]51P[243]94P[283]136P[113]180
P[12]13P[126]52P[94]95P[144]137P[120]180
P[216]13P[32]53P[195]95P[235]138P[70]181
P[291]14P[267]54P[249]95P[206]139P[194]181
P[211]15P[187]55P[207]96P[263]140P[80]182
P[214]15P[212]55P[163]97P[250]141P[11]183
P[67]16P[277]56P[177]97P[292]142P[161]183
P[240]16P[269]57P[208]98P[239]143P[185]184
P[170]17P[43]58P[222]98P[61]144P[55]185
P[173]17P[190]58P[49]99P[16]145P[148]186
P[289]17P[201]59P[182]99P[169]145P[253]187
P[64]18P[103]60P[13]100P[87]146P[188]188
P[72]18P[104]60P[218]100P[133]147P[27]189
P[284]19P[131]61P[29]101P[91]148P[20]190
P[26]20P[48]62P[93]102P[244]148P[189]190
P[258]20P[82]63P[236]102P[40]149P[86]191
P[62]21P[257]63P[73]103P[299]150P[100]192
P[76]21P[45]64P[229]103P[260]151P[102]193
P[56]22P[63]65P[105]104P[264]152P[242]194
P[68]23P[186]65P[77]105P[92]153P[17]195
P[88]23P[14]66P[180]106P[191]153P[39]196
P[19]24P[225]66P[47]107P[156]154P[128]197
P[79]24P[124]67P[152]108P[166]155P[266]198
P[84]25P[285]68P[174]109P[254]155P[199]199
P[85]25P[22]69P[246]109P[41]156P[181]200
P[238]25P[272]69P[298]110P[192]156P[46]201
P[10]26P[202]70P[74]111P[42]157P[280]202
P[97]26P[54]71P[96]112P[116]157P[1]203
P[8]27P[119]71P[66]113P[175]158P[178]204
P[220]27P[296]72P[81]113P[223]158P[221]204
P[300]28P[23]73P[171]113P[271]159P[281]205
P[282]29P[134]74P[125]114P[165]160P[205]206
P[151]30P[256]74P[106]115P[196]160P[111]207
P[51]31P[36]75P[110]116P[114]161P[35]208
P[108]32P[295]76P[130]116P[209]161P[297]209
P[159]32P[58]77P[248]116P[157]162P[117]210
P[75]33P[5]78P[24]117P[139]163P[274]211
P[154]34P[219]78P[155]118P[226]163P[227]212
P[34]35P[158]79P[143]119P[107]164P[224]213
P[228]214
P[162]215


Cordialement
 

SwimCoachNico79

XLDnaute Occasionnel
Re : Optimiser planning de réservations de chambres

Bonjour ODVJ,

Afin de finaliser mon document, j'aurai besoin de faire une dernière (ou avant-dernière) vérification de mon fichier .mod via Cplex. Est-il envisageable que tu m'analyses le fichier joint ?

En te remerciant sincèrement pour toute l'aide apportée.

Cordialement,

SCN79
 

Pièces jointes

  • xld_color.zip
    181.1 KB · Affichages: 22

JBARBE

XLDnaute Barbatruc
Re : Optimiser planning de réservations de chambres

salut

J’ai suivi de loin cet échange en étayant un fichier commencé il y a quelques temps.
Il n’est pas complet pour un usage professionnel mais il peut s’enrichir de fonctions supplémentaires.
Voir si cela peut donner des idées pour ce type de gestion.

Nota : pas trop testé après les nouvelles modifications.


Bonjour à tous, Bonjour SI...,

Je suis intéressé par ton fichier mais j'observe un bug ( voir images ci-jointes )

Bonne journée !
 

Pièces jointes

  • Bug1.jpg
    Bug1.jpg
    45.2 KB · Affichages: 39
  • Bug2.jpg
    Bug2.jpg
    48.7 KB · Affichages: 37

michel_m

XLDnaute Accro
Re : Optimiser planning de réservations de chambres

Bonjour
tout hasard:
un planing de réservation chambre d'hôtes (ou camping à la ferme)
un clic droit donne qui a réservé du tant au tant, une zone rouge indique un conflit

si ca peut servir...
 

Pièces jointes

  • chambres_hotes.xls
    129.5 KB · Affichages: 72

Si...

XLDnaute Barbatruc
Re : Optimiser planning de réservations de chambres

salut

Bonjour à tous, Bonjour SI...,
Je suis intéressé par ton fichier mais j'observe un bug ( voir images ci-jointes )

Voir si les correctifs apportés ici évitent les erreurs.
J’ai ajouté un test de validité pour l’acompte qui ne doit pas être supérieur au montant dû.

VB:
Private Sub Oui_Click()
  'variable C supprimée car inutile et prêtant à confusion avec cette lettre utilisée autrement
   Dim L As Long
  If C4 = "" Or C1 = "" Then Exit Sub
  'nouveau test
   If Ca > Ct Then
    MsgBox "dépasse le montant dû", vbCritical, "Saisie invalidée"
    Ca = "": Exit Sub
  End If
  L = IIf([Tr].Item(1, 1) = 0, 1, [Tr].Rows.Count + 1)
  For n = 1 To 11: [Tr].Item(L, n) = Me("C" & n): Next
  L = IIf([Td].Item(1, 1) = 0, 1, [Td].Rows.Count + 1)
  [Td].Item(L, 1) = C5
  [Td].Item(L, 2) = D1: [Td].Item(L, 3) = D2: [Td].Item(L, 4) = C4
  [Td].Item(L, 5) = Cn: [Td].Item(L, 6) = Ct: [Td].Item(L, 7) = Ca
  'plus d’utilisation du IIf 
   If Ca = "" Then [Td].Item(L, 8) = CCur(Ct) Else [Td].Item(L, 8) = CCur(CCur(Ct) - CCur(Ca))
  Unload Me
  ComboBox1 = ""
End Sub

J'ai déjà eu des problèmes avec IIF qui n'est pas recommandable dans certains cas:confused:.
Il y a encore pas mal de choses à faire notamment la réinitialisation des tableaux quand on efface une période du planning et le remplacement de la liste de validation par une liste déroulante (pour éviter des caractères presque illisibles). Je n’y pencherai plus tard.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Optimiser planning de réservations de chambres

Bonjour Si...

(...) J'ai déjà eu des problèmes avec IIF qui n'est pas recommandable dans certains cas:confused:. (...)

La fonction IIf a la particularité de toujours évaluer les trois arguments avant de renvoyer son résultat.

Ex: IIF(True, 1, 1/0) renverra une erreur (Erreur d'exécution '11': Division par zéro) puisque sont évalués les trois termes True, 1 et 1/0

De par ce fait, le If ... Then ... Else ... est préférable. Il est aussi plus rapide puisqu'il n'évalue que deux termes au maximum.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma