Microsoft 365 Code incomplet

Marvin57

XLDnaute Occasionnel
Bonjour à tout le monde,

j'ai récupéré un fichier qui pourrait m'aider, mais je n'arrive pas à mettre en place les codes .

Il contient des codes que j'ai réussi à modifier, mais je n'arrive pas à adapter les deux codes suivants: " Actualiser_Planning_Reservations" et le code " SupprPlanningReservations ".
Je pense que dans ces deux codes il y a des instructions manquantes !

Pour vous donner une explication du fonctionnement du fichier;

En appelant le UserForm " DEMANDE_RESERVATIONS " (en cliquant sur le bouton " Saisir une réservation") , je veux pouvoir saisir le nom de client, le nombre de jours dans le textbox5 et suite à la saisie de ce nombre de jour dans ce textbox et la saisie de la date d'arrivée choisie, il me renseignera la date de départ.

Une fois que cela fonctionne, il faudrait également pouvoir modifier des lignes si nécessaire en cliquant sur le client voulu dans la listbox1 et une fois les infos modifiées je pourrai cliquer sur le bouton modifier.

Pour l'instant je vous laisse regarder et si besoin vous me dites si quelque chose est mal expliqué s'il vous plaît.

Merci à vous en attendant.

Marvin57
 

Pièces jointes

  • MARVIN57 PLANNING RESERVATIONS.xlsm
    94.7 KB · Affichages: 5
Solution
Bonjour,

@Marvin57 : Code à copier dans un module standard. Ensuite l'appeler à partir de l'évènement Activate de la feuille PLANNING RESERVATIONS. Clic-droit sur l'onglet, visualiser le code et tu colles les lignes ci-dessous
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Actualiser_Planning
End Sub
Dans module standard ci-dessous
Code:
Sub Actualiser_Planning()   'valider
'/!\ Attention! Il faut supprimer la 1ère colonne Nom, la ligne des dates doit débuter en A5
   Dim RngDate As Range, rng As Range, col1 As Integer, col2 As Integer, LigFeuil As Integer
   Dim colfeuil As Integer, i As Integer, x As Byte, couleur As Byte, lig As Long
   Dim plage As Range, DateDebut As Long, derlig1 As Long, derlig2 As Long...

Marvin57

XLDnaute Occasionnel
Bonjour,

Je l'ai fait très tôt ce matin. Tester et faire un retour.
Je me dépêche, je suis en retard.
Bonne journée.
Bonjour cp4,

je vais essayer cela dans la matinée.

Mais j'ai deux questions pour terminer.

1) peut-on supprimer l'onglet PLANNING RESERVATIONS ?

2) avant quand j'inscrivais par exemple 5 jours et que je saisissais la date d'arrivée il me donner automatiquement la date de départ.

Peut-on remettre cela ?

Merci à toi et bonne journée.

Marvin57
 

Marvin57

XLDnaute Occasionnel
Bonjour,

Je l'ai fait très tôt ce matin. Tester et faire un retour.
Je me dépêche, je suis en retard.
Bonne journée.
Re,

je viens de tester ton travail et tout fonctionne très bien, même pour la recherche du client, c'est TOP cp4.;);)

La seule chose que je voulais savoir c'est si tu peux supprimer l'onglet PLANNING RESERVATIONS.

A part cela je ne changerai rien, car c'est vraiment très bien fait. Encore une fois UN GRAND MERCI à toi pour ce boulot.🙏

J'attendrai ton retour.

A+
Marvin57
 

cp4

XLDnaute Barbatruc
1) peut-on supprimer l'onglet PLANNING RESERVATIONS ?
Si tu n'en as plus besoin, tu peux supprimer la feuille.
Si j'ai du temps, j'essaierai de faire quelque chose sur cette feuille.
2) avant quand j'inscrivais par exemple 5 jours et que je saisissais la date d'arrivée il me donner automatiquement la date de départ.
Normalement c'est le cas. Je n'ai pas testé.
Ajoute au début de la procédure
Private Sub OptAjoutRes_Click()
flag = True
 

Marvin57

XLDnaute Occasionnel
Si tu n'en as plus besoin, tu peux supprimer la feuille.
Si j'ai du temps, j'essaierai de faire quelque chose sur cette feuille.

Normalement c'est le cas. Je n'ai pas testé.
Ajoute au début de la procédure
Private Sub OptAjoutRes_Click()
flag = True
Re,

C'est fait, j'ai rajouté et cela fonctionne.

Pour la feuille PLANNING RESERVATION, si je la supprime, dois-je aussi supprimer des lignes dans des codes car j'ai vu dans le code de validation le With Sheets("PLANNING RESERVATIONS").

VB:
Private Sub BtVALIDATION_Click()   'Valider l'enregistrement des congés saisis
'      Stop
   Application.ScreenUpdating = False

   Select Case BtVALIDATION.Caption

   Case "VALIDER"
      If Not verifControl Then Exit Sub
      If MsgBox("Vous êtes sur le point d'ajouter une réservation, voulez-vous continuer?", vbYesNo, "Demande de confirmation") = vbYes Then
         With Sheets("PLANNING RESERVATIONS")
            Dim row As ListRow
            Set row = .[TbRes].ListObject.ListRows.Add()
            row.Range.Cells(1) = Application.WorksheetFunction.Max(Range("Tbres[N° DEMANDE]")) + 1
            row.Range.Cells(2) = CDate(Me.TxtDateJour.Value)
            row.Range.Cells(3) = CDate(Me.TxtDateAriv.Value)
            row.Range.Cells(4) = CDate(Me.TxtDateDept.Value)
            row.Range.Cells(5) = Me.TxtNomClient.Value
            row.Range.Cells(6) = Me.TxtNotes.Value
            row.Range.Cells(7) = Me.TxtNbJour.Value
         End With
 

cp4

XLDnaute Barbatruc
Re,

C'est fait, j'ai rajouté et cela fonctionne.

Pour la feuille PLANNING RESERVATION, si je la supprime, dois-je aussi supprimer des lignes dans des codes car j'ai vu dans le code de validation le With Sheets("PLANNING RESERVATIONS").

VB:
Private Sub BtVALIDATION_Click()   'Valider l'enregistrement des congés saisis
'      Stop
   Application.ScreenUpdating = False

   Select Case BtVALIDATION.Caption

   Case "VALIDER"
      If Not verifControl Then Exit Sub
      If MsgBox("Vous êtes sur le point d'ajouter une réservation, voulez-vous continuer?", vbYesNo, "Demande de confirmation") = vbYes Then
         With Sheets("PLANNING RESERVATIONS")
            Dim row As ListRow
            Set row = .[TbRes].ListObject.ListRows.Add()
            row.Range.Cells(1) = Application.WorksheetFunction.Max(Range("Tbres[N° DEMANDE]")) + 1
            row.Range.Cells(2) = CDate(Me.TxtDateJour.Value)
            row.Range.Cells(3) = CDate(Me.TxtDateAriv.Value)
            row.Range.Cells(4) = CDate(Me.TxtDateDept.Value)
            row.Range.Cells(5) = Me.TxtNomClient.Value
            row.Range.Cells(6) = Me.TxtNotes.Value
            row.Range.Cells(7) = Me.TxtNbJour.Value
         End With
houlala! je fais du n'importe quoi. Correction ci-dessous, fais un copier/coller
VB:
Case "VALIDER"
      If Not verifControl Then Exit Sub
      If MsgBox("Vous êtes sur le point d'ajouter une réservation, voulez-vous continuer?", vbYesNo, "Demande de confirmation") = vbYes Then
'         With Sheets("planning reservations")
            Dim row As ListRow
            Set row = [tbres].ListObject.ListRows.Add() 'supprimer le point avant [tbres]
            row.Range.Cells(1) = Application.WorksheetFunction.Max(Range("Tbres[N° DEMANDE]")) + 1
            row.Range.Cells(2) = CDate(Me.TxtDateJour.Value)
            row.Range.Cells(3) = CDate(Me.TxtDateAriv.Value)
            row.Range.Cells(4) = CDate(Me.TxtDateDept.Value)
            row.Range.Cells(5) = Me.TxtNomClient.Value
            row.Range.Cells(6) = Me.TxtNotes.Value
            row.Range.Cells(7) = Me.TxtNbJour.Value
'         End With
 
Dernière édition:

Marvin57

XLDnaute Occasionnel
houlala! je fais du n'importe quoi. Correction ci-dessous, fais un copier/coller
VB:
Case "VALIDER"
      If Not verifControl Then Exit Sub
      If MsgBox("Vous êtes sur le point d'ajouter une réservation, voulez-vous continuer?", vbYesNo, "Demande de confirmation") = vbYes Then
'         With Sheets("planning reservations")
            Dim row As ListRow
            Set row = [tbres].ListObject.ListRows.Add()
            row.Range.Cells(1) = Application.WorksheetFunction.Max(Range("Tbres[N° DEMANDE]")) + 1
            row.Range.Cells(2) = CDate(Me.TxtDateJour.Value)
            row.Range.Cells(3) = CDate(Me.TxtDateAriv.Value)
            row.Range.Cells(4) = CDate(Me.TxtDateDept.Value)
            row.Range.Cells(5) = Me.TxtNomClient.Value
            row.Range.Cells(6) = Me.TxtNotes.Value
            row.Range.Cells(7) = Me.TxtNbJour.Value
'         End With
je crois que c'est la même chose non !
 

Marvin57

XLDnaute Occasionnel
houlala! je fais du n'importe quoi. Correction ci-dessous, fais un copier/coller
VB:
Case "VALIDER"
      If Not verifControl Then Exit Sub
      If MsgBox("Vous êtes sur le point d'ajouter une réservation, voulez-vous continuer?", vbYesNo, "Demande de confirmation") = vbYes Then
'         With Sheets("planning reservations")
            Dim row As ListRow
            Set row = [tbres].ListObject.ListRows.Add()
            row.Range.Cells(1) = Application.WorksheetFunction.Max(Range("Tbres[N° DEMANDE]")) + 1
            row.Range.Cells(2) = CDate(Me.TxtDateJour.Value)
            row.Range.Cells(3) = CDate(Me.TxtDateAriv.Value)
            row.Range.Cells(4) = CDate(Me.TxtDateDept.Value)
            row.Range.Cells(5) = Me.TxtNomClient.Value
            row.Range.Cells(6) = Me.TxtNotes.Value
            row.Range.Cells(7) = Me.TxtNbJour.Value
'         End With
je viens d'essayer en modifiant cela
With Sheets("planning reservations")

en
With Sheets("Listing reservations")

est-ce correct ?
 

TooFatBoy

XLDnaute Barbatruc
J'avoue que je découvre que le code ne tient pas compte de la feuille sur laquelle se trouve le tableau.
C'est pourtant toi qui a écrit le code, puisque si j'ai bien compris tu as remplacé la moitié de ce que j'avais fait (ajout d'une résa dans le listing, et modif d'une résa dans le listing) et supprimé l'autre moitié de ce que j'avais fait (ajout d'une résa dans le planning, et modif d'une résa dans le planning).


Question en passant : en gros, c'est quoi un planning de Gantt ?
Ça a l'air intéressant en lisant ton message. Du coup ça m'intrigue.
 

cp4

XLDnaute Barbatruc
C'est pourtant toi qui a écrit le code, puisque si j'ai bien compris tu as remplacé la moitié de ce que j'avais fait
En effet, J'ai écrit le code (ou adapté) mais je n'ai pas modifié le tien. J'ai travaillé sur le fichier initial de @Marvin57.
Ensuite, je ne connais pas tout du VBA. C'est en faisant une erreur que je découvre ce que j'ai dis dans le fil plus haut.

Question en passant : en gros, c'est quoi un planning de Gantt ?
En fait c'est Diagramme de Gantt. Tu trouveras plein d'explication sur le net dont une sur ce lien
 

TooFatBoy

XLDnaute Barbatruc
Ensuite, je ne connais pas tout du VBA. C'est en faisant une erreur que je découvre ce que j'ai dis dans le fil plus haut.
Ah ok, donc tu ne parlais en fait pas de ce code en particulier, mais de la possibilité, en général, de faire référence à un TS en VBA sans faire référence à sa feuille.

Perso, je ne connais que les bases de VBA, et même que les bases du Basic, et je me bats toujours avec la syntaxe pour adresser les TS. 😡



Merci pour le lien. Je vais aller voir si j'y comprends quelque chose. ;)

[edit] D'après ce que j'y vois, c'est un simple tableau, avec les cellules remplies aux dates correspondantes. Le jour où il a "inventé" ça ce monsieur Gantt, il n'a pas dû faire un AVC... 😂 [/edit]
 
Dernière édition:

Marvin57

XLDnaute Occasionnel
En effet, J'ai écrit le code (ou adapté) mais je n'ai pas modifié le tien. J'ai travaillé sur le fichier initial de @Marvin57.
Ensuite, je ne connais pas tout du VBA. C'est en faisant une erreur que je découvre ce que j'ai dis dans le fil plus haut.


En fait c'est Diagramme de Gantt. Tu trouveras plein d'explication sur le net dont une sur ce lien
@cp4

j'ai beau essayé mais cela ne fonctionne pas si je supprime la ligne
With Sheets("planning reservations") et le end with.

Par contre si je change en
With Sheets("Listing reservations"), tout va bien.

Ce que tu m'as dis tout à l'heure je ne l'ai pas compris .
tu disais : Mais j'ai utilisé le nom du tableau entre crochet, il est inutile d'ajouter le nom de la feuille.
 

TooFatBoy

XLDnaute Barbatruc
T'as bien enlevé le . devant le [ dans l'assignation de la variable "row" ?

Pardon pour cette remarque, mais à mon avis ce n'est pas une bonne idée d'utiliser un "mot réservé" comme nom de variable.
Il vaudrait peut-être mieux utiliser autre chose, comme par exemple Ligne. ;)
 
Dernière édition:

Statistiques des forums

Discussions
313 219
Messages
2 096 310
Membres
106 566
dernier inscrit
Fabiens