compter les clients

alessandro

XLDnaute Occasionnel
Bonjour a tous
Je voudrai avec vba savoir pour chaque code et pour chaque commercial combien de client
merci
Alessandro
 

Pièces jointes

  • stat_cli.xls
    43 KB · Affichages: 82

Fred0o

XLDnaute Barbatruc
Re : compter les clients

Bonjour Alessandro,

Je te fais une proposition dans le fichier ci-joint en utilisant un TCD (tableau croisé dynamique). A mon avis pour ce genre de statisytique, c'est beaucoup plus simple et plus souple que du code VBA.

Bon dimanche
 

Pièces jointes

  • stat_cli_01.xls
    47.5 KB · Affichages: 63

pierrejean

XLDnaute Barbatruc
Re : compter les clients

Bonjour Alessandro

Voi si cela te convient
Attention les 'agente' doivent etre conservés sous les N° 1 a 20

Edit:Salut FredO0
 

Pièces jointes

  • stat_cli.zip
    18.7 KB · Affichages: 46
  • stat_cli.zip
    18.7 KB · Affichages: 45
  • stat_cli.zip
    18.7 KB · Affichages: 43

alessandro

XLDnaute Occasionnel
Re : compter les clients

bonsoir

Je n'ai pas vue un reponse a ma question,peut etre mal pose
je voudrai savoir combien de clients unique sont etes servis.
exemple:avec le code 03201 l'agente 10 a servi seulement 1 client pas deux
j'attende une reponse svp
alessandro
 

alessandro

XLDnaute Occasionnel
Re : compter les clients

Bonjour Alessandro

Voi si cela te convient
Attention les 'agente' doivent etre conservés sous les N° 1 a 20

Edit:Salut FredO0

Bonsoir
je vu votre travail c'e bon mais je voudrai savoir combien de client unique
je servi par agente
exemple avec le code 03201 l'agente 10 a servi 1(un) seul client pas deux
j'espere en une reponse svp
alessandro
 

pierrejean

XLDnaute Barbatruc
Re : compter les clients

Re

Ma version (en foglio3)
@ Habitude
Je vais tenter de saisir ton travail (il m'a très utilement servi a controler le mien)
 

Pièces jointes

  • stat_cli.zip
    34.8 KB · Affichages: 41
  • stat_cli.zip
    34.8 KB · Affichages: 42
  • stat_cli.zip
    34.8 KB · Affichages: 45

homepyrof53

XLDnaute Occasionnel
Re : compter les clients

Bonjour,

Voici une autre version qui me semble plus rapide

Code:
Dim tab1
Sub toto()
t = Timer
Set tab1 = CreateObject("scripting.dictionary")
l = 2
com = Trim(Cells(2, 11))
While Cells(l, 1) <> ""
    If Cells(l, 2) > agence_max Then agence_max = Cells(l, 2) ' recupere le nombre d'agence
    If Trim(Cells(l, 1)) = com Then
        agence = "A" & Cells(l, 2)
        If tab1.exists(agence) Then
           tab1(agence) = tab1(agence) + 1
        Else
            tab1(agence) = 1
        End If
    End If
    l = l + 1
Wend

'ecriture resultat
l = 1
c = 14
Range(Cells(2, 14), Cells(1000, 15)).ClearComments
For b = 1 To agence_max
'For Each agence In tab1
    l = b + 1
    agence = "A" & b
    If tab1.exists(agence) Then
        Cells(l, c) = b
        Cells(l, c + 1) = tab1(agence)
    Else
        Cells(l, c) = b
        Cells(l, c + 1) = 0
    End If
Next
MsgBox Round(Timer - t, 2) & " s"
End Sub

simple macro pas de module de classe




bien entendu il faut
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$K$2" Then toto
end sub
au niveau de la feuille

bonne journée
 

homepyrof53

XLDnaute Occasionnel
Re : compter les clients

Bonjour PierreJean

Et oui je n'avais pas fait le controle si meme agence et meme code client

voila
Code:
Dim tab1
Dim tab2
Sub toto()
t = Timer
Set tab1 = CreateObject("scripting.dictionary")
Set tab2 = CreateObject("scripting.dictionary")
l = 2
com = Trim(Cells(2, 11))
While Cells(l, 1) <> ""
    If Cells(l, 2) > agence_max Then agence_max = Cells(l, 2) ' recupere le nombre d'agence
    If Trim(Cells(l, 1)) = com Then
        agence = "A" & Cells(l, 2)
        cle2 = Cells(l, 2) & "_" & Cells(l, 3)
        
        
        If tab2.exists(cle2) = False Then
        If tab1.exists(agence) Then
           tab1(agence) = tab1(agence) + 1
        Else
            tab1(agence) = 1
        End If
        End If
        tab2(cle2) = 1
    End If
    l = l + 1
Wend

'ecriture resultat
l = 1
c = 14
Range(Cells(2, 14), Cells(1000, 15)).ClearComments
For b = 1 To agence_max
'For Each agence In tab1
    l = b + 1
    agence = "A" & b
    If tab1.exists(agence) Then
        Cells(l, c) = b
        Cells(l, c + 1) = tab1(agence)
    Else
        Cells(l, c) = b
        Cells(l, c + 1) = 0
    End If
Next
MsgBox Round(Timer - t, 2) & " s"
End Sub

je pense que c'est mieux

excusez moi des fautes mais je viens de perdre l'utilisation demon bras gauche
j'ai mis beaucoup de temps à écrire ce code

A+
 

Discussions similaires

Réponses
13
Affichages
448

Statistiques des forums

Discussions
312 763
Messages
2 091 852
Membres
105 078
dernier inscrit
piqpat57