Recuperer plage de valeur pour userform

Recuperer plage de valeur pour userform - VB/VBA/VBS - Programmation

Marsh Posté le 27-05-2007 à 20:12:48    


  Bonjour,
 
     J'ai réalisé une form qui permet le calcul de sous totaux a partir d'un classeur excel.
       En colonne A j'ai les dates de 1 à 31
       En colonne B des montants  (en especes)
       En colonne C des montant   (en cheques)
 
       Sur cette form je demande a l'utilisateur de choisir la date du début (textbox1) et la date de fin (textbox2)  (par exemple du 5 au 10)
 puis il a le choix il coche soient "espece" soit "cheque". (exemple: espece)
 
        En cliquant sur le boutons "calculer" la somme des montants (en especes) de la date de début (le 5) à la date de fin (le 10) apparait dan sune textbox3.
 
        Mon souci est de récupérer la plage de valeur de la date de début à la date de fin en fonction des colonnes choisi:
 
       J'ai écrit cela:  

Code :
  1. Private Sub cmdcalculer_Click()
  2. Dim Plage As Range 'plage de valeur sur laquelle sera effectuer la somme'
  3. Dim dd As Integer 'date de début entré par l'utilisateur'
  4. Dim df As Integer 'date de fin entré par l'utilisateur'
  5. Dim col As String 'col correspondant aux especes ou aux cheques ou autres'
  6. dd = TextBox1.Value
  7. df = TextBox2.Value
  8.       If optespece.Value = True Then
  9.       col = "B"
  10.       Set Plage = Sheets("Feuil1" ).Range("col & dd,col & df" )
  11.       textresultat.Value = Application.WorksheetFunction.Sum(Plage)
  12.       End If
  13.      
  14.       If optcheque.Value = True Then
  15.       col = "C"
  16.       Set Plage = Sheets("Feuil1" ).Range("C4:C5" )
  17.       textresultat.Value = Application.WorksheetFunction.Sum(Plage)
  18.       End If
  19.      
  20.       If optautre.Value = True Then
  21.       col = "D"
  22.       Set Plage = Sheets("Feuil1" ).Range("D4:D5" )
  23.       textresultat.Value = Application.WorksheetFunction.Sum(Plage)
  24.    
  25.       End If
  26.      
  27. End Sub


 
   Je vous remercie par avance pour vos réponses.
 
    Uriel,

Reply

Marsh Posté le 27-05-2007 à 20:12:48   

Reply

Marsh Posté le 27-05-2007 à 20:22:01    


 Les lignes 14,20 et 26 me pose problème,  que dois je passer en argument du "range" ?

Reply

Marsh Posté le 27-05-2007 à 23:09:35    

bonsoir,
 
la date 1 est a quelle ligne?
 
EDIT: tu n'as pas d'intitulé sur la ligne 1 ?


Message édité par ingenieurcesi le 27-05-2007 à 23:32:01
Reply

Marsh Posté le 27-05-2007 à 23:14:07    

pour la ligne 14 il faut enlever les ""
Set Plage = Sheets("Feuil1" ).Range(col & dd,col & df)

Reply

Marsh Posté le 27-05-2007 à 23:33:35    

certaine fois à la place des & il faut utiliser des +

Reply

Marsh Posté le 28-05-2007 à 10:46:36    

comme tu fixes col à B autant faire directement:
Set Plage = Sheets("Feuil1" ).Range("B" & dd &":B"& df)

Reply

Marsh Posté le 28-05-2007 à 16:39:54    

with worksheets(1)
If optespece.Value = True Then
     textresultat.Value = Application.Sum()
     End If
     If optcheque.Value = True Then
     col = "C"
     Set Plage = Sheets("Feuil1" ).Range("C4:C5" )
     textresultat.Value = Application.WorksheetFunction.Sum(Plage)
     End If
     If optautre.Value = True Then
     col = "D"
     Set Plage = Sheets("Feuil1" ).Range("D4:5" )
     textresultat.Value = Application.WorksheetFunction.Sum(Plage)
 
End If

Reply

Marsh Posté le 28-05-2007 à 16:44:06    

Pardon pour le précédent envoi... le couyp est parti tout seul...
Donc, est ce que ce code fonctionne (?) :
 
 
with worksheets(1)
  If optespece.Value = True Then
     textresultat.Value = Application.Sum(range(.cells(dd,2),.cells(df,2)))
  elseIf optcheque.Value = True Then
     textresultat.Value =Application.Sum(range(.cells(dd,3),.cells(df,3)))
  elseIf optautre.Value = True Then
     textresultat.Value = Application.Sum(range(.cells(dd,4),.cells(df,4)))
  End If
end with

Reply

Marsh Posté le 02-06-2007 à 13:08:34    

Merci a toutes et tous pour votre participation, voici le code que j'ai utilisé et qui fonctionne, a force d'acharnement j'y suis arrivé. Les différentes solutions que vous me proposer sont plus "élégante" je tacherai de m'en inspirer a l'avenir.
 
   Merci
 

Code :
  1. Private Sub cmdcalculer_Click()
  2. Dim Plage As Range
  3. Dim dd As Integer
  4. Dim df As Integer
  5. Dim col As String
  6. Dim a As Boolean
  7. If TextBox1.Value <> "" Or TextBox2.Value <> "" Then
  8. dd = TextBox1.Value
  9. df = TextBox2.Value
  10. dd = dd + 4
  11. df = df + 4
  12. Else
  13. MsgBox "Remplir les champs"
  14. End If
  15. If dd = df Then
  16. MsgBox "choisir deux dates différente"
  17. End If
  18. If df < dd Then
  19. MsgBox "La date de début doit être inférieur à la date de fin"
  20. End If
  21. If optespece.Value = False And optcheque.Value = False And optautre.Value = False Then
  22. MsgBox "choisir un type de paiement"
  23. End If
  24. If optespece.Value = True Or optcheque.Value = True Or optautre.Value = True Then
  25.       If optespece.Value = True Then
  26.       col = "G"
  27.       Set Plage = Sheets("mai" ).Range(col & dd, col & df)
  28.       textresultat.Value = Application.WorksheetFunction.Sum(Plage)
  29.       End If
  30.      
  31.       If optcheque.Value = True Then
  32.       col = "F"
  33.       Set Plage = Sheets("mai" ).Range(col & dd, col & df)
  34.       textresultat.Value = Application.WorksheetFunction.Sum(Plage)
  35.       End If
  36.      
  37.       If optautre.Value = True Then
  38.       col = "D"
  39.       Set Plage = Sheets("mai" ).Range(col & dd, col & df)
  40.       textresultat.Value = Application.WorksheetFunction.Sum(Plage)
  41.       End If
  42.      
  43. End If
  44.      
  45. End Sub

Reply

Marsh Posté le 02-06-2007 à 13:09:51    


  Ce topic peut être fermé. (désolé je ne sais comment procéder pour le cloturer)
 
 
   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed