Compter le nombre de personnes qui disposent du même compte utilisateur
Bonjour, est-ce que quelqu’un pourrait m’aider ; Il m’est demandé de créer une colonne « Nombre de clients connectés » dans la feuille « comptes utilisateur », pour stocker le nombre de clients connecter à un compte particulier ( sachant qu’un client n’a qu’un seul numéro de compte, mais qu’un numéro de compte est attribué à plusieurs clients).
Donc le but est de savoir combien il y a de clients au total dans chaque compte utilisateur.
Pour ce faire, j’ai utilisé le code suivant :
Sub clients_connect()
Sheets("Clients").Select
Dim nbcompte As Long
nbcompte = Range("B2").End(xlDown).Row
Sheets("Comptes utilisateur").Select
Dim nbcompte2 As Long
nbcompte2 = Range("A2").End(xlDown).Row
Dim numcompte As String
Dim count As Integer
Range("F1").Value = "Nombre de clients connecté"
Sheets("comptes utilisateur").Select
For compte = 2 To nbcompte2
numcompte = Range("A" & compte).Value
count = 0
Sheets("Clients").Select
For clients = 2 To nbcompte
If Range("B" & clients).Value = numcompte Then
count = count + 1
End If
Sheets("comptes utilisateur").Select
Range("F" & compte).Value = count
Next clients
Next compte
End Sub
Malheureusement, ce code ne me donne pas la réponse attendue, il ne fait qu’afficher un 1 pour la deuxième ligne de la colonne suivie de plein de 0 pour les colonnes suivantes. Je ne comprends pas comment faire en sorte qu’il parcourt toute la colonne B de la feuille clients, et compte le nombre de fois qu’un même compte utilisateur s’y trouve, et ensuite mettre cette information dans la colonne « nombre de clients connecté » de la feuille « compte utilisateur »…
Si quelqu’un a compris mon erreur, peut-il m’expliquer ?
Edit Dan : Fichier retiré pour présence de données confidentielles
Salut Estelle,
VBA est plus simple que tu crois : quasi toujours, il n'est pas besoin de sélectionner ou d'activer feuilles ou cellules.
L'adressage direct fonctionne très bien : il suffit de préciser dans le code qui fait quoi.
J'imagine que tu veux une mise à jour en temps réel : si ce code fonctionne comme il devrait, je te ferai une macro qui fera ce même calcul automatiquement lors de l'encodage.
Sub clients_connect()
'
Dim sWkCL As Worksheet, iTot%
'
Set sWkCL = Worksheets("Clients")
Application.ScreenUpdating = False
'
With Worksheets("Comptes utilisateurs")
.[F1] = "Nombre de clients connectés"
For x = 2 To .Range("A" & Rows.count).End(xlUp).Row
iTot = 0
For y = 2 To sWkCL.Range("B" & Rows.count).End(xlUp).Row
If sWkCL.Range("B" & y).Value = .Range("A" & x).Value Then iTot = iTot + 1
Next
.Range("F" & x).Value = iTot
Next compte
End With
'
Application.ScreenUpdating = True
'
End Sub
A+