CountIf argument multiple
Résolu/Fermé
pou pouille
Messages postés
207
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 juillet 2012
-
26 oct. 2009 à 15:24
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 - 28 oct. 2009 à 15:06
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 - 28 oct. 2009 à 15:06
A voir également:
- CountIf argument multiple
- Excel cellule choix multiple - Guide
- Ecran multiple pc - Guide
- Copier coller multiple - Guide
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Executer un programe python dans la console ✓ - Forum Python
3 réponses
ladameblanche
Messages postés
309
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
3 novembre 2023
88
26 oct. 2009 à 15:55
26 oct. 2009 à 15:55
Peut-être ça
http://www.cijoint.fr/cjlink.php?file=cj200910/cijsOwc6Ns.xls
http://www.cijoint.fr/cjlink.php?file=cj200910/cijsOwc6Ns.xls
pou pouille
Messages postés
207
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 juillet 2012
31
26 oct. 2009 à 16:06
26 oct. 2009 à 16:06
cela pourai fonctionner oui mais jme suis mal exprimer
il n'y as rien dans la colonne C , la colonne B est "toto B"
et il y as un petit problème d'automatisation j'ai cré une macro pour ce que je souhaite faire parce que j'ai au moins 300 lignes avec des nombres qui varie ( K ).
en tout cas merci pour la réponse rapide ^^
il n'y as rien dans la colonne C , la colonne B est "toto B"
et il y as un petit problème d'automatisation j'ai cré une macro pour ce que je souhaite faire parce que j'ai au moins 300 lignes avec des nombres qui varie ( K ).
en tout cas merci pour la réponse rapide ^^
pou pouille
Messages postés
207
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 juillet 2012
31
28 oct. 2009 à 15:06
28 oct. 2009 à 15:06
bon avec l'aide d'un autre forum j'ai enfin solution à mon problème , je post le code si des fois cela pouvais servire à quelqun.
Sub Macro1()
Dim DicoBoite As Object, Boite As Range, DerLig As Integer, Lig As Integer, Elmnt As Variant
Dim Qte As Integer, QteB As Integer, QteC As Integer
Application.ScreenUpdating = False
[E2:E65000].ClearContents
Set DicoBoite = CreateObject("Scripting.Dictionary")
DerLig = [B65000].End(xlUp).Row
'on identifie la liste unique des boites
For Each Boite In Range([B2], [B65000].End(xlUp))
If Not DicoBoite.Exists(Boite.Value) Then DicoBoite.Add Boite.Value, Boite.Value
Next Boite
For Each Elmnt In DicoBoite.items
Lig = [E65536].End(xlUp).Row + 1
Qte = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)<>""C"")*(RIGHT(C2:C" & DerLig & ",1)<>""B""))")
QteB = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""B""))")
QteC = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""C""))")
If Qte > 0 Then
Range("E" & Lig).Value = Elmnt
Range("F" & Lig).Value = Qte
Range("G" & Lig).Value = Columns(2).Find(Elmnt, LookIn:=xlValues, lookat:=xlWhole).Offset(0, -1).Value
Lig = Lig + 1
End If
If QteB > 0 Then
Range("E" & Lig).Value = Elmnt & "B"
Range("F" & Lig).Value = QteB
Lig = Lig + 1
End If
If QteC > 0 Then
Range("E" & Lig).Value = Elmnt & "C"
Range("F" & Lig).Value = QteC
Lig = Lig + 1
End If
' Range("E" & Lig).Value = Elmnt: Range("E" & Lig + 1).Value = Elmnt & "B": Range("E" & Lig + 2).Value = Elmnt & "C"
' Range("F" & Lig).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)<>""C"")*(RIGHT(C2:C" & DerLig & ",1)<>""B""))")
' Range("F" & Lig + 1).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""B""))")
' Range("F" & Lig + 2).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""C""))")
Next
End Sub
Sub Macro1()
Dim DicoBoite As Object, Boite As Range, DerLig As Integer, Lig As Integer, Elmnt As Variant
Dim Qte As Integer, QteB As Integer, QteC As Integer
Application.ScreenUpdating = False
[E2:E65000].ClearContents
Set DicoBoite = CreateObject("Scripting.Dictionary")
DerLig = [B65000].End(xlUp).Row
'on identifie la liste unique des boites
For Each Boite In Range([B2], [B65000].End(xlUp))
If Not DicoBoite.Exists(Boite.Value) Then DicoBoite.Add Boite.Value, Boite.Value
Next Boite
For Each Elmnt In DicoBoite.items
Lig = [E65536].End(xlUp).Row + 1
Qte = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)<>""C"")*(RIGHT(C2:C" & DerLig & ",1)<>""B""))")
QteB = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""B""))")
QteC = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""C""))")
If Qte > 0 Then
Range("E" & Lig).Value = Elmnt
Range("F" & Lig).Value = Qte
Range("G" & Lig).Value = Columns(2).Find(Elmnt, LookIn:=xlValues, lookat:=xlWhole).Offset(0, -1).Value
Lig = Lig + 1
End If
If QteB > 0 Then
Range("E" & Lig).Value = Elmnt & "B"
Range("F" & Lig).Value = QteB
Lig = Lig + 1
End If
If QteC > 0 Then
Range("E" & Lig).Value = Elmnt & "C"
Range("F" & Lig).Value = QteC
Lig = Lig + 1
End If
' Range("E" & Lig).Value = Elmnt: Range("E" & Lig + 1).Value = Elmnt & "B": Range("E" & Lig + 2).Value = Elmnt & "C"
' Range("F" & Lig).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)<>""C"")*(RIGHT(C2:C" & DerLig & ",1)<>""B""))")
' Range("F" & Lig + 1).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""B""))")
' Range("F" & Lig + 2).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""C""))")
Next
End Sub