Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comptabilisation d'item

8 réponses
Avatar
Didier NOVARIN
Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier

8 réponses

Avatar
JB
Bonjour,


Sub Essai()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("A1", [A65000].End(xlUp))
If Not mondico.Exists(c.Value) Then
mondico.Add c.Value, 1
Else
temp = mondico.Item(c.Value)
mondico.Remove (c.Value)
mondico.Add c.Value, temp + 1
End If
Next c
a = mondico.keys
b = mondico.items
temp = ""
For i = 0 To mondico.Count - 1
temp = temp & a(i) & ":" & b(i) & " "
Next i
MsgBox temp
End Sub

http://cjoint.com/?bAnnwMj7xb

JB



On 26 jan, 12:06, "Didier NOVARIN"
wrote:
Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier


Avatar
JB
Sub Essai()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("A1", [A65000].End(xlUp))
If Not mondico.Exists(c.Value) Then
mondico.Add c.Value, 1
Else
temp = mondico.Item(c.Value)
mondico.Remove (c.Value)
mondico.Add c.Value, temp + 1
End If
Next c
For Each c In mondico
temp = temp & c & ":" & mondico.Item(c) & " "
Next c
MsgBox temp
End Sub

http://cjoint.com/?bAnJBRLrCz

JB

On 26 jan, 13:13, JB wrote:
Bonjour,

Sub Essai()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("A1", [A65000].End(xlUp))
    If Not mondico.Exists(c.Value) Then
      mondico.Add c.Value, 1
    Else
      temp = mondico.Item(c.Value)
      mondico.Remove (c.Value)
      mondico.Add c.Value, temp + 1
    End If
  Next c
  a = mondico.keys
  b = mondico.items
  temp = ""
  For i = 0 To mondico.Count - 1
    temp = temp & a(i) & ":" & b(i) & "  "
  Next i
  MsgBox temp
End Sub

http://cjoint.com/?bAnnwMj7xb

JB

On 26 jan, 12:06, "Didier NOVARIN"
wrote:



Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
MichDenis
En retenant qu'un filtre élaboré doit avoir une étiquette le colonne
Il est difficile de batre en vitesse et en simplicité ce type de code.

Nom de la feuille et plage de cellules à déterminer selon ton application.

Sub test()
Dim X As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom feuille à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
X = Application.WorksheetFunction.Subtotal(3, .EntireRow) - 1
End With
.ShowAllData
End With
MsgBox X & " Valeurs différentes"
End Sub





"Didier NOVARIN" a écrit dans le message de news:

Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier
Avatar
MichDenis
Si tu as plusieurs valeurs différentes que tu veux dénombrer,
il y a aussi ceci :

Tu adaptes la valeur que tu cherches et la plage où se fait
le travail.

'-------------------------------------
Sub test()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Long, S As Variant, T As Variant

V1 = 3 ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("SUMPRODUCT((" & Plg & "=" & V1 & ")*1)")
S = Evaluate("SUMPRODUCT((" & Plg & "=" & V2 & ")*1)")
T = Evaluate("SUMPRODUCT((" & Plg & "=" & V3 & ")*1)")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-------------------------------------




"MichDenis" a écrit dans le message de news:
u9%
En retenant qu'un filtre élaboré doit avoir une étiquette le colonne
Il est difficile de batre en vitesse et en simplicité ce type de code.

Nom de la feuille et plage de cellules à déterminer selon ton application.

Sub test()
Dim X As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom feuille à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
X = Application.WorksheetFunction.Subtotal(3, .EntireRow) - 1
End With
.ShowAllData
End With
MsgBox X & " Valeurs différentes"
End Sub





"Didier NOVARIN" a écrit dans le message de news:

Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier
Avatar
MichDenis
J'y ajoute un détail qui peut t'aider...
Si au lieu de chercher à dénombrer une valeur numérique
tu veux dénombrer une valeur texte, tu dois utiliser ceci
pour renseigner une variable... observe les guillemets.

V1 = """A"""

Et pour formule, il est aussi possible d'utiliser Nb.Si() ou Countif()
'-----------------------------
Sub testdf()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Variant, S As Variant, T As Variant

V1 = """a""" ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("CountIf(" & Plg & "," & V1 & ")")
S = Evaluate("CountIf(" & Plg & "," & V1 & ")")
T = Evaluate("CountIf(" & Plg & "," & V1 & ")")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-----------------------------







"MichDenis" a écrit dans le message de news:

Si tu as plusieurs valeurs différentes que tu veux dénombrer,
il y a aussi ceci :

Tu adaptes la valeur que tu cherches et la plage où se fait
le travail.

'-------------------------------------
Sub test()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Long, S As Variant, T As Variant

V1 = 3 ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("SUMPRODUCT((" & Plg & "=" & V1 & ")*1)")
S = Evaluate("SUMPRODUCT((" & Plg & "=" & V2 & ")*1)")
T = Evaluate("SUMPRODUCT((" & Plg & "=" & V3 & ")*1)")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-------------------------------------




"MichDenis" a écrit dans le message de news:
u9%
En retenant qu'un filtre élaboré doit avoir une étiquette le colonne
Il est difficile de batre en vitesse et en simplicité ce type de code.

Nom de la feuille et plage de cellules à déterminer selon ton application.

Sub test()
Dim X As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom feuille à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
X = Application.WorksheetFunction.Subtotal(3, .EntireRow) - 1
End With
.ShowAllData
End With
MsgBox X & " Valeurs différentes"
End Sub





"Didier NOVARIN" a écrit dans le message de news:

Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier
Avatar
MichDenis
Il y a aussi ceci que tu peux utiliser :

'-------------------------------------
Sub test()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As Range
Dim R As Variant, S As Variant, T As Variant

V1 = "a" ' Nombre de 3 dans la plage
V2 = 2 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Set Plg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

R = Application.CountIf(Plg, V1)
S = Application.CountIf(Plg, V2)
T = Application.CountIf(Plg, V3)

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-------------------------------------



"MichDenis" a écrit dans le message de news:

J'y ajoute un détail qui peut t'aider...
Si au lieu de chercher à dénombrer une valeur numérique
tu veux dénombrer une valeur texte, tu dois utiliser ceci
pour renseigner une variable... observe les guillemets.

V1 = """A"""

Et pour formule, il est aussi possible d'utiliser Nb.Si() ou Countif()
'-----------------------------
Sub testdf()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Variant, S As Variant, T As Variant

V1 = """a""" ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("CountIf(" & Plg & "," & V1 & ")")
S = Evaluate("CountIf(" & Plg & "," & V1 & ")")
T = Evaluate("CountIf(" & Plg & "," & V1 & ")")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-----------------------------







"MichDenis" a écrit dans le message de news:

Si tu as plusieurs valeurs différentes que tu veux dénombrer,
il y a aussi ceci :

Tu adaptes la valeur que tu cherches et la plage où se fait
le travail.

'-------------------------------------
Sub test()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Long, S As Variant, T As Variant

V1 = 3 ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("SUMPRODUCT((" & Plg & "=" & V1 & ")*1)")
S = Evaluate("SUMPRODUCT((" & Plg & "=" & V2 & ")*1)")
T = Evaluate("SUMPRODUCT((" & Plg & "=" & V3 & ")*1)")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-------------------------------------




"MichDenis" a écrit dans le message de news:
u9%
En retenant qu'un filtre élaboré doit avoir une étiquette le colonne
Il est difficile de batre en vitesse et en simplicité ce type de code.

Nom de la feuille et plage de cellules à déterminer selon ton application.

Sub test()
Dim X As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom feuille à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
X = Application.WorksheetFunction.Subtotal(3, .EntireRow) - 1
End With
.ShowAllData
End With
MsgBox X & " Valeurs différentes"
End Sub





"Didier NOVARIN" a écrit dans le message de news:

Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier
Avatar
JB
Avec ADO:

Sub essai2()
' Microsoft ActiveX DataObject doit être coché
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" &
ThisWorkbook.FullName
Set rs = cnn.Execute("SELECT titre,count(*) as nb FROM maBD group by
titre")
Do While Not rs.EOF
temp = temp & rs("titre") & ":" & rs("nb") & " "
rs.MoveNext
Loop
MsgBox temp
End Sub

http://cjoint.com/?bAo4dFoXmo

JB

On 26 jan, 13:13, JB wrote:
Bonjour,

Sub Essai()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("A1", [A65000].End(xlUp))
    If Not mondico.Exists(c.Value) Then
      mondico.Add c.Value, 1
    Else
      temp = mondico.Item(c.Value)
      mondico.Remove (c.Value)
      mondico.Add c.Value, temp + 1
    End If
  Next c
  a = mondico.keys
  b = mondico.items
  temp = ""
  For i = 0 To mondico.Count - 1
    temp = temp & a(i) & ":" & b(i) & "  "
  Next i
  MsgBox temp
End Sub

http://cjoint.com/?bAnnwMj7xb

JB

On 26 jan, 12:06, "Didier NOVARIN"
wrote:



Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Didier NOVARIN
Je vous remercie beaucoup
J'ai grâce à vous trouvé mon bonheur !
Didier

"MichDenis" a écrit dans le message de news:

Il y a aussi ceci que tu peux utiliser :

'-------------------------------------
Sub test()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As Range
Dim R As Variant, S As Variant, T As Variant

V1 = "a" ' Nombre de 3 dans la plage
V2 = 2 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Set Plg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

R = Application.CountIf(Plg, V1)
S = Application.CountIf(Plg, V2)
T = Application.CountIf(Plg, V3)

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-------------------------------------



"MichDenis" a écrit dans le message de news:

J'y ajoute un détail qui peut t'aider...
Si au lieu de chercher à dénombrer une valeur numérique
tu veux dénombrer une valeur texte, tu dois utiliser ceci
pour renseigner une variable... observe les guillemets.

V1 = """A"""

Et pour formule, il est aussi possible d'utiliser Nb.Si() ou Countif()
'-----------------------------
Sub testdf()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Variant, S As Variant, T As Variant

V1 = """a""" ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("CountIf(" & Plg & "," & V1 & ")")
S = Evaluate("CountIf(" & Plg & "," & V1 & ")")
T = Evaluate("CountIf(" & Plg & "," & V1 & ")")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-----------------------------







"MichDenis" a écrit dans le message de news:

Si tu as plusieurs valeurs différentes que tu veux dénombrer,
il y a aussi ceci :

Tu adaptes la valeur que tu cherches et la plage où se fait
le travail.

'-------------------------------------
Sub test()

Dim V1 As Variant, V2 As Variant
Dim V3 As Variant, Plg As String
Dim R As Long, S As Variant, T As Variant

V1 = 3 ' Nombre de 3 dans la plage
V2 = 4 ' Nombre de 4 dans la plage
V3 = 5 ' Nombre de 5 dans la plage

' Nom feuille à déterminer
With Worksheets("Feuil1")
'Définir la plage de cellules
Plg = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address
End With

R = Evaluate("SUMPRODUCT((" & Plg & "=" & V1 & ")*1)")
S = Evaluate("SUMPRODUCT((" & Plg & "=" & V2 & ")*1)")
T = Evaluate("SUMPRODUCT((" & Plg & "=" & V3 & ")*1)")

MsgBox R & " Valeur " & V1 & vbCrLf & _
S & " Valeur " & V2 & vbCrLf & _
T & " Valeur " & V3 & vbCrLf
End Sub
'-------------------------------------




"MichDenis" a écrit dans le message de news:
u9%
En retenant qu'un filtre élaboré doit avoir une étiquette le colonne
Il est difficile de batre en vitesse et en simplicité ce type de code.

Nom de la feuille et plage de cellules à déterminer selon ton application.

Sub test()
Dim X As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom feuille à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
X = Application.WorksheetFunction.Subtotal(3, .EntireRow) - 1
End With
.ShowAllData
End With
MsgBox X & " Valeurs différentes"
End Sub





"Didier NOVARIN" a écrit dans le message
de news:

Bonjour,
J'ai dans une colonne des numéros de plusieurs sorte 3 ou 4 sortes
Je souhaite avoir dans un msgbox que je lance avec un bouton, le nombre de
numéro différent
exemple "Il y a 300 numéro x, 250 numéro y" etc.
Je vous remercie
Didier