Selection plage avec une box

Résolu
Bonjour,

Sous Xp , excel 2000.

je voudrais selectionner une plage de cellule et faire le somme sur 3 colonnes.

j'ai un tableau de 6 colonnes ( c,d,e,f,g,h) sur 54 lignes (7 à 61)
(les titres et étiquettes de colonnes se trouvant entre les lignes 1 et 6).

Dans la colonne c , je rentre des dates, et dans les colonnes f, g, h des sommes .
je voudrais donc , avec l'aide d'une box choisir deux dates différentes et faire la somme colonne f , colonne g et colonne h qui correspond à la sélection demandée par la box .

Dans l'attente , bonne journée à vous.
faroka

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. C'est un début . Par contre les sommes calculées en f g et h n'apparaissent seulement que dans trois cellules i2,i3 et i4 .Ce n'est pas une obligation d'apparaitre dans la box. De plus, j'ai un bug ligne :
    With Sheets(1).colomns(3)
    la methode Sheets de l'objet global a échoué erreur 1004

    Merci à vous de m'aider
    a +
    Cordialement
    faroka

    Private Sub CommandButton2_Click()
    Dim Datedeb As Date, Datefin As Date
    Dim LignDeb As Integer, LignFin As Integer, Lign As Integer
    Dim Somme As Double
    If Label3.Caption = "" Then
    MsgBox "Veuillez indiquer la date de départ"
    Exit Sub
    End If
    If Label4.Caption = "" Then
    MsgBox "Veuillez indiquer la date de fin"
    Exit Sub
    End If
    Datedeb = CDate(Label3.Caption)
    Datefin = CDate(Label4.Caption)
    With Sheets(1).Columns(3)</ital> ' erreur 1004
    1. Euh .....
      Aprés avoir enregistrer je n'ai plus de bug

      Désolé .................
      1. Modérateur
        Pour faire apparaitre les sommes en I2, I3 et I4, il convient d'ajouter, dans les codes de CommandButton_click, en fin de code :
        Pour I2 :
        Private Sub CommandButton1_Click()
        Dim Datedeb As Date, Datefin As Date
        Bla bla bla bla
        TextBox1.Value = Somme
        Cells(2, 9).Value = Somme
        End Sub

        Pour I3 :
        Private Sub CommandButton2_Click()
        Dim Datedeb As Date, Datefin As Date
        Bla bla bla bla
        TextBox1.Value = Somme
        Cells(3, 9).Value = Somme
        End Sub

        Pour I4 :
        Private Sub CommandButton3_Click()
        Dim Datedeb As Date, Datefin As Date
        Bla bla bla bla
        TextBox1.Value = Somme
        Cells(4, 9).Value = Somme
        End Sub


        Sinon, plus de bugs???
    2. Bonjour,
      Plus de Bug...

      Autre petit problème , si j'ai n dates identiques ( ex 01/01/2010)
      les sommes ne s'effectuent pas , même si on retrouve n dates dans la box.

      Par contre ,
      si on sélectionne la première date (01/01/2010 ....n dates ... 02/01/2010)
      les sommes sont bien prises en compte .

      Serait il également possible de grisé la ligne se trouvant juste en dessous de la date de fin à chaque fois que l'on agit sur la box ( que l'on fait la caisse) ceci pour mettre un " témoin" sur la feuille de calcul.

      Merci à vous , Bon WE
      1. Modérateur
        Salut,
        Alors il faut tout repenser le code de l'USF...
        On ne travaille plus en recherche de date, mais avec les lignes de ton tableau...
        Voici tout le code :
        Dim LignDeb As Integer, LignFin As Integer
        
        Private Sub CommandButton1_Click()
        Dim Lign As Integer
        Dim Somme As Double
        If Label3.Caption = "" Then
            MsgBox "Veuillez indiquer la date de départ"
            Exit Sub
        End If
        If Label4.Caption = "" Then
            MsgBox "Veuillez indiquer la date de fin"
            Exit Sub
        End If
        
        If LignDeb > LignFin Then
            For Lign = LignDeb To LignFin Step -1
                Somme = Somme + CDbl(Cells(Lign, 6).Value)
            Next Lign
        Else
            For Lign = LignDeb To LignFin
                Somme = Somme + CDbl(Cells(Lign, 6).Value)
            Next Lign
        End If
        TextBox1.Value = Somme
        Cells(2, 9).Value = Somme
        Rows(LignFin + 1).Interior.ColorIndex = 15
        End Sub
        
        Private Sub CommandButton2_Click()
        Dim Lign As Integer
        Dim Somme As Double
        If Label3.Caption = "" Then
            MsgBox "Veuillez indiquer la date de départ"
            Exit Sub
        End If
        If Label4.Caption = "" Then
            MsgBox "Veuillez indiquer la date de fin"
            Exit Sub
        End If
        If LignDeb > LignFin Then
            For Lign = LignDeb To LignFin Step -1
                Somme = Somme + CDbl(Cells(Lign, 7).Value)
            Next Lign
        Else
            For Lign = LignDeb To LignFin
                Somme = Somme + CDbl(Cells(Lign, 7).Value)
            Next Lign
        End If
        TextBox1.Value = Somme
        Cells(3, 9).Value = Somme
        Rows(LignFin + 1).Interior.ColorIndex = 15
        End Sub
        
        Private Sub CommandButton3_Click()
        Dim Lign As Integer
        Dim Somme As Double
        If Label3.Caption = "" Then
            MsgBox "Veuillez indiquer la date de départ"
            Exit Sub
        End If
        If Label4.Caption = "" Then
            MsgBox "Veuillez indiquer la date de fin"
            Exit Sub
        End If
        
        If LignDeb > LignFin Then
            For Lign = LignDeb To LignFin Step -1
                Somme = Somme + CDbl(Cells(Lign, 8).Value)
            Next Lign
        Else
            For Lign = LignDeb To LignFin
                Somme = Somme + CDbl(Cells(Lign, 8).Value)
            Next Lign
        End If
        TextBox1.Value = Somme
        Cells(4, 9).Value = Somme
        Rows(LignFin + 1).Interior.ColorIndex = 15
        End Sub
        
        Private Sub Label1_Click()
        Dim Lign As Integer
        Dim cpt As Boolean
        cpt = False
        For Lign = 0 To ListBox1.ListCount
            If ListBox1.Selected(Lign) = True Then
                Label3.Caption = ListBox1.List(Lign)
                LignDeb = Lign + 7
                ListBox1.Selected(Lign) = False
                cpt = True
                Exit For
            End If
        Next Lign
        If cpt = False Then
            MsgBox "Sélectionnez une date au préalable. Merci."
        End If
        End Sub
        
        Private Sub Label2_Click()
        Dim Lign As Integer
        Dim cpt As Boolean
        cpt = False
        For Lign = 0 To ListBox1.ListCount
            If ListBox1.Selected(Lign) = True Then
                Label4.Caption = ListBox1.List(Lign)
                LignFin = Lign + 7
                ListBox1.Selected(Lign) = False
                cpt = True
                Exit For
            End If
        Next Lign
        If cpt = False Then
            MsgBox "Sélectionnez une date au préalable. Merci."
        End If
        End Sub
        
        Private Sub UserForm_Initialize()
        Dim Lign As Integer, DernLig As Integer
        Label3.Caption = ""
        Label4.Caption = ""
        TextBox1.Value = ""
        DernLig = Range("C65536").End(xlUp).Row
        
        For Lign = 7 To DernLig
            ListBox1.AddItem Cells(Lign, 3).Value
        Next
        End Sub


        Tu dis...
        1. Merci Pijaku
          Votre macro fonctionne parfaitement
          Problème résolu.

          Cordialement et bonnes fêtes de fin d'année