Impossible de trouvé la solution à mon PB, besoin d'expert lol

Signaler
Messages postés
1
Date d'inscription
mardi 25 octobre 2011
Statut
Membre
Dernière intervention
26 octobre 2011
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

Depuis plusieur semaine j'ai modifié un programme pour la gestion de salle de réunion sous EXCEL.
Après la création d'une salle, l'utilisateur peut insérer une réservation par date en indiquant l'heure.

A l'heure actuel l'utilisateur pouvait supprimer une réservation en indiquant la date et le nom de la personne.
Cependant la réservation supprimé était la plus ancienne. Cette supression ne tenant pas compte des salles.

j'aimerais que l'utilisateur puissent suprimer une reservation toujours en choisissant la date le nom et également la salle.

J'ai modifié le code de la fenêtre ainsi que le début du code mais je ne parvient pas établir la corélation entre la salle et la suppression:

--------------------------------------------------------------------------------------

Private Sub CmbValider_Click()
    If ComboNom = "" Then
        MsgBox " le nom de l'utilisateur n'est pas documenté "
        Exit Sub
    End If
    If ComboDate = "" Then
       MsgBox " la date de la réservation n'est pas documentée "
       Exit Sub
    End If
    If ComboSalle = "" Then
       MsgBox " la salle de la réservation n'est pas documentée "
       Exit Sub
    End If   '--> ce que j'ai déjà ajouté    
   
   For compteurFeuille = 1 To Worksheets.Count

        
        If Worksheets(compteurFeuille).Name <> "FeuilleDeTravail" And Worksheets(compteurFeuille).Name <> "Menu" _
        And Worksheets(compteurFeuille).Name <> "Cadre" And Worksheets(compteurFeuille).Name <> "Synthèse" _
        And Worksheets(compteurFeuille).Name <> "AIDE" And Worksheets(compteurFeuille).Name <> "Synthèse" _
        And Worksheets(compteurFeuille).Name <> "TCD" Then
            'MsgBox Sheets(compteurFeuille).Name
            
            LigneDeDate = Application.WorksheetFunction _
                 .Match(CLng(CDate(ComboDate)), Worksheets(compteurFeuille).Range("A1:A368"), 0)
            
            On Error GoTo GestionDesErreurs
            ColonneDuNom = Application.WorksheetFunction _
                 .Match(ComboNom + "*", Worksheets(compteurFeuille).Range("B" & LigneDeDate & ":Z" & LigneDeDate), 0)
            On Error GoTo 0
            NomDeObjet = Worksheets(compteurFeuille).Name
            SupprimerResaDansBase
            ' effacement des resa jours précédents
            If ColonneDuNom 1 And Worksheets(compteurFeuille).Cells(LigneDeDate - 1, 25).Interior.ColorIndex 35 Then
            EffacementRésaJourAvant
           
            End If
           ' Effacement de la résa du jour
           EffacementResaDuJour
           If compteurDeColonneDuJour = 25 Then
           EffacementResaDesJoursAprès
           End If
           MsgBox "Suppression effectué pour M: " & ComboNom & " pour la date du : " & CDate(ComboDate) & " pour la salle : " & Sheets(compteurFeuille).Name
           Unload Me
           Exit Sub
Autre:
        End If
    Next
    MsgBox " pas de réservation trouvée en date du : " & CDate(ComboDate) & " pour M : " & ComboNom & " ."
    Unload Me
GestionDesErreurs:
    If Err = 1004 Then
       Err = 0
       Resume Autre
    End If
End Sub
Sub EffacementRésaJourAvant()
      Dim compteurDeColonne As Byte
      Dim LigneAAnalyser As Integer
        With Sheets(compteurFeuille)
            For LigneAAnalyser = LigneDeDate - 1 To 4 Step -1
                compteurDeColonne = 25
                Do Until compteurDeColonne = 1
                    If .Cells(LigneAAnalyser, compteurDeColonne).Interior.ColorIndex <> 35 Then
                        Exit Sub
                    End If
                    If .Cells(LigneAAnalyser, compteurDeColonne) <> "" Then
                        
                        If .Cells(LigneAAnalyser, compteurDeColonne) <> ComboNom Then
                        Exit Sub
                        ElseIf .Cells(LigneAAnalyser, compteurDeColonne) = ComboNom Then
                        Range(.Cells(LigneAAnalyser, compteurDeColonne), .Cells(LigneAAnalyser, 25)).Clear
                            If compteurDeColonne > 2 Then
                            Exit Sub
                            End If
                        End If
                    End If
                compteurDeColonne = compteurDeColonne - 1
                Loop
            Next
        End With
End Sub
Sub EffacementResaDuJour()
         With Sheets(compteurFeuille)
            For compteurDeColonneDuJour = ColonneDuNom + 1 To 25
                If .Cells(LigneDeDate, compteurDeColonneDuJour).Borders(xlEdgeRight).LineStyle = xlContinuous Then
                    Range(.Cells(LigneDeDate, ColonneDuNom + 1), .Cells(LigneDeDate, compteurDeColonneDuJour)).Clear
                    Exit Sub
                End If
            Next
            
         End With
End Sub
Sub EffacementResaDesJoursAprès()
      Dim compteurDeColonne As Byte
      Dim LigneAAnalyser As Integer
        With Sheets(compteurFeuille)
            For LigneAAnalyser = LigneDeDate + 1 To 368 Step 1
                compteurDeColonne = 2
                    If .Cells(LigneAAnalyser, compteurDeColonne).Interior.ColorIndex <> 35 Then
                        Exit Sub
                    End If
                    If .Cells(LigneAAnalyser, compteurDeColonne) <> "" Then
                        If .Cells(LigneAAnalyser, compteurDeColonne) <> ComboNom Then
                            Exit Sub
                        ElseIf .Cells(LigneAAnalyser, compteurDeColonne) = ComboNom Then
                            Do Until compteurDeColonne = 26
                                If .Cells(LigneAAnalyser, compteurDeColonne).Borders(xlEdgeRight).LineStyle = xlContinuous Then
                                    Range(.Cells(LigneAAnalyser, 2), .Cells(LigneAAnalyser, compteurDeColonne)).Clear
                                End If
                            compteurDeColonne = compteurDeColonne + 1
                            Loop
                            If compteurDeColonne < 25 Then
                                Exit Sub
                            End If
                        End If
                    End If
                
            Next
        End With
End Sub


Sub SupprimerResaDansBase()
    Dim CompteurDeLigne As Long
    With Sheets("Synthèse")
        For CompteurDeLigne = .Range("A65536").End(xlUp).Row To 1 Step -1
            If .Cells(CompteurDeLigne, 1) ComboNom And .Cells(CompteurDeLigne, 2) NomDeObjet And (CDate(ComboDate) >= .Cells(CompteurDeLigne, 3) And CDate(ComboDate) <= .Cells(CompteurDeLigne, 5)) Then
            .Cells(CompteurDeLigne, 1).EntireRow.Delete
            Exit Sub
            End If
        Next
    End With
End Sub



---------------------------------------------------------------------------------


Besoin de votre AIDE


merci


Ange Cédric

1 réponse

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
C'est la deuxième discussion que tu ouvres à ce sujet !

Tu n'as reçu aucune réponse à la première.
Et je n'allais pas du tout répondre à la présente, non plus (purement et simplement).
Mais il me semble assez juste de t'en donner la raison essentielle : ===>>
Ton titre (dans l'une comme dans l'autre de ces deux discussions) ! Il es TEL que toute aide/réponse qui serait donnée, ne servirait que TES seuls intérêts, puisque perdue (à cause du titre) pour tout autre forumeur utilisant le moteur de recherche, en quête d'une solution à un problème identique

Voilà !




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient