Excel: Somme plage conditionnelle

Résolu
tictac847 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
tictac847 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un tableau qui à la forme suivante

commande------refpaquet-----couleur------- taille -------qte
A ---------------Abs1------- bleu----------- s------------25
A---------------Abs2-------- bleu----------- s ----------- 25
A---------------Abs3--------bleu-----------s ----------- 22
A--------------- Abm1--------bleu----------- m-----------25
A--------------- Abm1-------- bleu ----------- m----------- 25
B--------------- Brs1-------- rouge----------- s -----------15
B--------------- Bbm1 -------- bleu ----------- m ----------- 25

Je voudrais mettre en place une macro qui recupere sur un userform la taille et la qte total
d'une meme paquet (commande et taille identique)

Exemple:

les trois 1ere lignes font partie d'un meme paquets etant donne qu'elle on la meme reference de commane "A" , la meme couleur "Bleu" et la meme taille "s"

je voudrais que ma macro reporte "s" dans le textboxTaille de mon userfom et "72" dans le textboxQte


j'ai commencer à écrire la macro suivante mais je ne parviens pas à finaliser mon raisonnement.

Private Sub ComboBoxCouleur_Change()
Dim Commande, Couleur As String
Dim c As Range
Dim i, n As Integer
Commande = UserFormPlanning.TextBoxRefCommande.Text
Couleur = UserFormPlanning.ComboBoxCouleur.Text

For Each c In Range("B101:B1000")
      If c.Value = Commande And c.Offset(0, 2).Value = Couleur Then
          While c.Offset(c, 3).Value = c.Offset(c + 1, 3).Value 'ajouter +1 pour la derniere
            For i = 1 To 10 Step 1
            UserFormPlanning.Controls("TextBoxTaille" & i).Text = c.Offset(c, 3).Value
            UserFormPlanning.Controls("textboxqte" & i).Text = Sum(c.Offset(0, 4).Value)
            Next i
         Loop
       
    End If
Next

For n = 1 To 10 Step 1
   If UserFormPlanning.Controls("TextBoxTaille" & n).Text <> "" Then UserFormPlanning.Controls("TextBoxTaille" & n).Visible = True
   If UserFormPlanning.Controls("textboxqte" & n).Text <> "" Then UserFormPlanning.Controls("textboxqte" & n).Visible = True
  
Next n

End Sub


Je sais qu'il y a un probleme de syntaxe pour la somme, mais je ne sais pas le résoudre.

merci d'avance.


A voir également:

3 réponses

tictac847 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Petit complement d'info
lorsque j'ouvre le userform je le fait a partir d'une commande. ce qui fait que la commande apparait automatiquement dans le texteboxRefCommande.
La macro s'active lorsque je la choisis dans le comboboxCouleur.
Ce qui fait que pour chaque recherche je dispose deja de la commande et de la couleur
je recherche donc uniquement les differentes tailles pour chauqe couleur ainsi que les quantité total pour chauqe taille je joint une photo du userform pour plus de visibilité.

https://www.cjoint.com/?BAxany52qWq
MERCI
0
tictac847 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Pou simplifier les chose l'idée de ma macro est la suivante:

-dans la plage("B100:B1000")
. SI la couleur et la commande sont identique a celle du userform
If c.Value = Commande And c.Offset(0, 2).Value = Couleur Then

. tant que la colonne 4 represente la meme taille
 i = 1
         For n = 1 To 1000 Step 1
            While c.Offset(n, 3).Value = c.Offset(n + 1, 3).Value

.faire la somme de la qté pour cette taille "Et c'est precisement la que je bloque"
  t = c.Offset(n, 4).Value + c.Offset(n + 1, 4).Value

enregistrer le resultat dans le userform
UserFormPlanning.Controls("TextBoxTaille" & i) = n
                      UserFormPlanning.Controls("TextBoxQte" & i) = t
                      i = i + 1



Voila si quelqu'un veut bien m'aider ca me serait d'un grand secours
n'hesitez pas à demander plus d'explication si ce n'est pas assez claire
merci
0
tictac847 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Re le forum,

C'est bon j'ai trouver la solution tout seul comme un grand, voici le code final.

Private Sub ComboBoxCouleur_Change()  
Dim Commande, Couleur, Taille As String  
Dim c As Range  
Dim i, n, Qte  As Integer  
Commande = UserFormPlanning.TextBoxRefCommande.Text  
Couleur = UserFormPlanning.ComboBoxCouleur.Text  

i = 1  
For n = 70 To 1000  
      If Range("CK" & n).Value = Commande And Range("CK" & n).Offset(0, 2).Value = Couleur Then 'pour la couleur choisie  
                
                 Qte = Qte + Range("CK" & n).Offset(0, 4).Value  
            If Range("CK" & n).Offset(0, 3).Value = Range("CK" & n).Offset(1, 3).Value Then ' tant que la taille est identique  
                Taille = Range("CK" & n).Offset(0, 3).Value  
                UserFormPlanning.Controls("TextBoxTaille" & i).Text = Taille  
            Else   ' si  la taille est differente  
              
                UserFormPlanning.Controls("TextBoxQte" & i).Text = Qte  
                Qte=0
                i = i + 1  
                Taille = Range("CK" & n).Offset(1, 3).Value  
            End If  
        End If  
 Next n  
   
 For p = 1 To 10 Step 1  
         If UserFormPlanning.Controls("TextBoxTaille" & p).Text <> "" Then UserFormPlanning.Controls("TextBoxTaille" & p).Visible = True  
         If UserFormPlanning.Controls("TextBoxQte" & p).Text <> "" Then UserFormPlanning.Controls("TextBoxQte" & p).Visible = True  
Next p  
   
End Sub


N'hesitez pas à me relancer si jamais quelqu'un a une question par rapport a ce code.
0