Probleme au niveau de la réservation de tables de restaurant

skye.in.sky

XLDnaute Nouveau
Bonjour à tous et à toutes!

donc voilà j'ai un petit souci. j'ai commencé à faire un programme en vba et je reste bloquée lorsque je veux réserver une table.
j'ai donc fais d'abord une partie " création salle" pour adapter le programme à tout types de resto et ensuite je veux mettre en place une partie réservation .
je veux de l'aide seulement sur cette partie là! toute la mise en page et les détails je le ferais moi! le fichier est donc un peu basique! je ne vous caches pas que je ne suis pas aussi calée que certain c'est pourquoi j'espère avoir un peu d'aide! :D

ce petit projet comporte trois onglets:
salle du resto
planning
données du resto

Petit détail que j'ai remarqué c'est que lorsque j'essaye de masquer la feuille "données du resto" avec une macro enregistrée, il me les masque toute... j'ai pas trop compris. :confused:
(ca me servirais surtout pour que l'utilisateur n'est pas accès aux données du resto, vu que je mettrais par la suite un mot de passe pour la suppression de la salle ou de la modif de la salle)

Ceci n'est qu'un petit souci. Je souhaite surtout votre aide sur la feuille planning. Je veux pouvoir mettre mes réservations dans le tableau de façon a ce qu'elles se classent automatiquement de la plus récente à la plus ancienne pour plus de lisibilité apres la saisie. Le nombre de réservation du jour étant reporté dans la feuille "salle du resto" en haut a droite. ca serais bien qu'une fois la date dépassée les réservations s'effacent au fur et à mesure.

C'est en gros le truc qui me bloque. Evidemment il me reste quelques problèmes mais c'est vraiment ce qui me bloque dans ma progression.

Pour ce qui est de la programmation, je ne veux pas que vous me faisiez tout à ma place, c'est pas ce que je demande! Par contre je souhaite rester sous excel 2002 .


J'espère que quelques uns voudrons bien m'aider et me conseiller! merci.

Bonne fin d'après-midi!

J.

(le fichier est dans mon post du 13.06.09)
---
skye.in.sky@hotmail.fr
 
Dernière édition:

skye.in.sky

XLDnaute Nouveau
Re : Probleme au niveau de la réservation de tables de restaurant

en fait je vais encore t'embeter un petit peu si tu veux bien :)

pour la formule vba

If DateValue(Range("C" & Lig)) < CDate(Now()) Then

c'est normal qu'elle me trie les dates mais elle me supprime aussi les réservations du jour... je dois rajouter +1 jour ou alors il ya une date fausse qui est donnée à excel??? je sais pas...

bonne soirée tout de même et merci!

J.
 
C

Compte Supprimé 979

Guest
Re : Probleme au niveau de la réservation de tables de restaurant

Re,

Le problème se situe dans les valeurs retournées

DateValue(Range("C" & Lig)) renvoie : 16/06/2009
CDate(Now()) renvoie : 16/06/2009 23:08:47

Donc à dates égales, DateValue(...) sera toujours inférieure à CDate(Now())

Pour y remédier il faut formater la date du jour
Code:
  'Effacer les dates dépassées
  For Lig = NewLig To 6 Step -1
    If DateValue(Range("C" & Lig)) < CDate([COLOR=blue]Format(Now(), "dd/mm/yyyy")[/COLOR]) Then
      Rows(Lig).Delete
    End If
  Next Lig                                                   'ligne suivante

Voili, voilà :p

A+
 

skye.in.sky

XLDnaute Nouveau
Re : Probleme au niveau de la réservation de tables de restaurant

bonjour!!!

il faut toujours que j'ai un problème... -___-"
donc voila je pensais m'etre debarassé des doublons par rapport au tableau de la feuille "Données du resto" mais cela marche seulement au jour le jour... et donc pour les réservation plus "eloignés" j'ai pas de controle...

yaurais t-il une formule sur les doublons? j'ai essayé filtre élaboré mais ca m'efface toutes les cases vides en plus doublons..
 

skye.in.sky

XLDnaute Nouveau
Re : Probleme au niveau de la réservation de tables de restaurant

j'ai essayé cela grace à une autre discussion mais cela bloque:
Code:
Sub doublon()
Range("A6").Select
'Suppression des doublons
'Déclaration des variables
Dim CelluleCourante As Range
Dim CelluleSuivante As Range
Set CelluleCourante = Range("A6")
'Boucle effectuée jusqu'à cellule vide
Do While Not IsEmpty(CelluleCourante) = True
Set CelluleSuivante = CelluleCourante.Offset(1, 0)
If CelluleSuivante.Value = CelluleCourante.Value Then
CelluleSuivante.Select
[B][COLOR="Orange"]Selection.Delete Shift:=xlUp[/COLOR][/B]
End If
Set CelluleCourante = CelluleSuivante
Loop
End Sub

je ne comprends pourquoi cela échoue...
 

skye.in.sky

XLDnaute Nouveau
Re : Probleme au niveau de la réservation de tables de restaurant

Je relance ma demande, j'ai beau essayé je n'arrive pas a effacer la ligne lorsqu'une réservation est en double.

En rajoutant un controle sur la droite du tableau de la feuille Planning:
=SI(ET(A6=A7;A6<>"");2;SI(C7="";"";SI(DATEVAL(C7)=AUJOURDHUI();1;"")))

Je peux ainsi identifier les doublons qu'il va faloir que je supprime. Donc j'aimerais que vba me les supprime lorsque je fais la réservation? (Le controle ce ferais donc dans le userform RESERVATION..)

Dans mon post du dessus, cela me parait juste pourtant maintenant excel me met:
Set CelluleSuivante = CelluleCourante.Offset(1, 0)
il y aurait un "objet requis" ??

Merci de m'aider pour pouvoir enfin finir ce projet! :D

J.
 
C

Compte Supprimé 979

Guest
Re : Probleme au niveau de la réservation de tables de restaurant

Salut Skye.in.sky is grey :( ;):D

Peux-tu nous mettre ton fichier actuel ?

Je n'ai rien compris à tes doublons ?
Comment peux-tu en avoir ?

A+
 
Dernière modification par un modérateur:

skye.in.sky

XLDnaute Nouveau
Re : Probleme au niveau de la réservation de tables de restaurant

oui je vais te l'envoyer! ca sera plus clair! ici

le syst de doublons le jour même est réglé! c'est seulement quand la date est supérieur à la date du jour que ce la bloque! parceque tout est géré par le tableau de la feuille Données du resto.


Merci.

tu verras 2 truc que j'ai essayé celle qui est dans Sub et l'autre avec Call doublon ...
 
Dernière édition:

skye.in.sky

XLDnaute Nouveau
Re : Probleme au niveau de la réservation de tables de restaurant

Je sais pas si je me suis bien exprimée.. :s

en fait en prenant un exemple:
qqun prends la réservation pour dans une semaine admettons. il va réserver une table. si un autre client réserve pour le même jour, il n'y a pas de controle pour la table! puisque le système des listes déroulantes est accordé avec le tableau dans "Données du resto" qui lui meme est attaché au donnée du jour...

Merci de bien vouloir m'aider!:)
 
C

Compte Supprimé 979

Guest
Re : Probleme au niveau de la réservation de tables de restaurant

RE,

Tu peux essayer ce code qui remplace le précédent avec une fonction en plus
Code:
Private Sub nb_couverts_change()
  Dim Cel As Range, NbT As Integer                           ' effacer les valeurs de la liste
  NbT = 0
  Me.table_dispo.Clear                                       ' Inscrire les nouvelles valeurs
    For Each Cel In Range("" & Me.nb_couverts)               ' La cellules est-elle vide ?
        If Cel <> "" Then                                    ' Non, alors tester si dispo
          ' Vérifier si la table est dispo
          If LigFind(Me.date_reserv, Me.heure_reserv, Cel.Value) = 0 Then
            NbT = NbT + 1
            Me.table_dispo.AddItem Cel.Value
          End If
        End If
    Next Cel
  If NbT = 0 Then
    MsgBox "Aucune table : " & Me.nb_couverts & vbCrLf _
      & " de disponible" & vbCrLf _
      & "le : " & Me.date_reserv & " à : " & Me.heure_reserv
  Else
    Me.table_dispo.ListIndex = 0
  End If
End Sub
 
Function LigFind(VDate, VHeure, Table)
  Dim DLig As Long, MaForm As String
  DLig = Sheets("Planning").Range("C" & Rows.Count).End(xlUp).Row
  ' Vérification si table déjà utilisée au jour et l'heure prévue
  MaForm = "SUMPRODUCT((Planning!C6:C" & DLig & "=""" & VDate & """)*(Planning!D6:D" & DLig & "=""" & VHeure & """)*(Planning!G6:G" & DLig & "=""" & Table & """))"
  LigFind = Application.Evaluate("" & MaForm & "")
End Function

A tester, tu m'en dis des nouvelles :D:p

Tu pourras supprimer ton "Call doublon" et la sub qui va avec ;)

PS : pour le 18/06/2009 à 13h30 - Table de 4

la fonction est l'équivalent d'un :
=SOMMEPROD((C6:C11="18/06/2009")*(D6: D11="13:30")*(G6:G11="3"))
puis de
=SOMMEPROD((C6:C11="18/06/2009")*(D6: D11="13:30")*(G6:G11="6"))

A+
 
Dernière modification par un modérateur:

skye.in.sky

XLDnaute Nouveau
remerciement

:eek: que dire! à croire que tu sais tout faire!

:D

par contre pour

Me.table_dispo.ListIndex = 0

j'ai mis Me.table_dispo.ListIndex = -1 ça marche mieu... :)

En tout cas merci! Mon projet est fini grâce à toi! ;)
Tu m'as été d'un très grand secours!

Passe un très bon week-end! :p

J.
 

Statistiques des forums

Discussions
312 237
Messages
2 086 489
Membres
103 234
dernier inscrit
matteo75654548