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

  1. Modérateur
    Salut,
    Est ce que ce fichier pourrait vous convenir???
    Vous dites...
    0
    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
      0
      1. Euh .....
        Aprés avoir enregistrer je n'ai plus de bug

        Désolé .................
        0
        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???
          0
      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
        0
        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...
          0
          1. Merci Pijaku
            Votre macro fonctionne parfaitement
            Problème résolu.

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