Selection plage avec une box

Résolu
faroka -  
 faroka -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,
    Est ce que ce fichier pourrait vous convenir???
    Vous dites...
    0
  2. faroka
     
    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
  3. faroka
     
    Euh .....
    Aprés avoir enregistrer je n'ai plus de bug

    Désolé .................
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  4. faroka
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  7. faroka
     
    Merci Pijaku
    Votre macro fonctionne parfaitement
    Problème résolu.

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