Bonjour à tous,
je voudrez faire une somme sous deux conditions en vba
faisant partie d'une macro plus grande. Le premier critère et une cible le deuxieme est une correspondance de date.
je mets la macro entière puis la partie ou je voudrais une somme conditionnelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Sub copieclient()
 
Set Flcd = ThisWorkbook.Worksheets("CC2012")
Set Fl = ThisWorkbook.Worksheets("facturation prévisionnelle")
Set Flech = ThisWorkbook.Worksheets("Echéancier prévisionnel")
 
 
     Set rancom = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
 
If Not rancom Is Nothing Then
lNx = rancom.Row
 
   Fl.Activate
 
' Remplissage de la feuille de facturation prévisionnelle.
 
Range("A1").Select
If Range("A2").Value <> "" Then ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
      randes = ActiveCell.Row
      ActiveCell.Offset(0, 1).Value = Flcd.Cells(lNx, 8)            'Nom du client
      ActiveCell.Offset(0, 2).Value = rancom.Value                  'Numéro de commande
      ActiveCell.Offset(0, 3).Value = Flcd.Cells(lNx, 9)            'Nom du chantier
      ActiveCell.Offset(0, 4).Value = Flcd.Cells(lNx, 5)            'statut(en cours/soldé)
      ActiveCell.Offset(0, 5).Value = Date                          'Date
      Flcd.Cells(lNx, 1).Copy Fl.Cells(randes, 1)                   'Numéro de Devis
 
      U_Fact.Show
      If satisf = True Then
 Fl.Cells(randes, 7).Value = valtb1                        'Numéro de Bon
 Fl.Cells(randes, 9).Value = valtb2                        'Numéro de palette
 Fl.Cells(randes, 10).Value = valtb3                       'Nombre de pierre
 Fl.Cells(randes, 8).Value = valtb4                        'Montant Hors taxe
 Fl.Cells(randes, 11).Value = valtb5                       'Versement
 Fl.Cells(randes, 12).Value = cbo1                         'Chèque ou espèce
 Fl.Cells(randes, 13).Value = cbo2                         'statut complete /partielle
 Fl.Cells(randes, 14).Value = cbo3                         'Vu par tel/mail/pers.
 End If
  If satisf = False Then
  U_Fact.Hide
  Flcd.Activate
 End If
 End If
 
 Fl.Activate
 
' Somme des montants des bons de livraison dans le carnet de commande.
 
ligdebut = 4
ligfin = Fl.Range("A" & Fl.Rows.Count).End(xlUp).Row
 
  For xndev = ligdebut To ligfin
  ndevis = Fl.Cells(xndev, 1).Value
  cib1 = ndevis
  Set rcib1 = Flcd.Columns(1).Find(What:=cib1, LookAt:=xlPart)
  Set rcibis = Flech.Columns(1).Find(What:=cib1, LookAt:=xlPart)
 
  If Not rcib1 Is Nothing Then
  Flcd.Cells(rcib1.Row, 12) = Application.WorksheetFunction.SumIf(Fl.Columns(1), cib1, Fl.Columns(8))
  Flcd.Cells(rcib1.Row, 17) = Application.WorksheetFunction.SumIf(Fl.Columns(1), cib1, Fl.Columns(10))
  Flcd.Cells(rcib1.Row, 20) = Application.WorksheetFunction.SumIf(Fl.Columns(1), cib1, Fl.Columns(9))
  Flcd.Cells(rcib1.Row, 13) = Application.WorksheetFunction.SumIf(Fl.Columns(1), cib1, Fl.Columns(11))
End If
 
' Envoi dans l'échéancier prévisionnel
 
datecher = Fl.Cells(xndev, 6).Value
lemois = Month(datecher)
 
Select Case lemois
 
  Case 1
 colmois = 8
  Case 2
 colmois = 9
  Case 3
 colmois = 10
  Case 4
 colmois = 11
  Case 5
 colmois = 12
 Case 6
 colmois = 13
 Case 7
 colmois = 14
 Case 8
 colmois = 15
 Case 9
 colmois = 16
  Case 10
 colmois = 17
  Case 11
 colmois = 18
  Case 12
 colmois = 19
End Select
 
 If Not rcibis Is Nothing Then
Flech.Cells(rcibis.Row, colmois) = Application.WorksheetFunction.SumIf(Fl.Columns(1), cib1, Fl.Columns(8))
End If
Next
 
    Set Flcd = Nothing
    Set Fl = Nothing
    Set Flech = Nothing
End Sub
C'est sur cette partie que je veux ajouter une condition à ma somme en vba
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 If Not rcibis Is Nothing Then
Flech.Cells(rcibis.Row, colmois) = Application.WorksheetFunction.SumIf(Fl.Columns(1), cib1, Fl.Columns(8))
End If
Next
je veux en plus de la cib1 (qui est un numéro de devis) que la somme qui s'effectue dans mon échéancier (Flech) respecte la date colonne F de la feuille Fl. Actuellement j'ai la somme de tous les bons d'enlèvements dans chaque mois or je voudrais la somme des bons en fonction du mois de la date d'enlèvement.
N'hésitez pas à me demander des clarification si vous pensez pouvoir m'aider merci d'avance.