Avez vous une procédure rapide qui puisse compter le nombre de doublon dans
une colonne pouvant comporter jusqu'à 2000 noms ?
En fait, je voudrais effectuer un total de salarié dans une liste, ces
derniers pouvant être apparaître plusieurs mais n'être comptabilisé qu'une
fois.
La procédure que j'ai faite est trop longue :
Private Sub Worksheet_Change(ByVal target As Excel.Range)
Dim Collec As New Collection, Plage As Range
Dim t As Variant
On Error Resume Next
Set Plage = Range("$a$6:$a$2000")
If IsEmpty(Plage) Then Exit Sub
For Each target In Plage
If target.Value <> "" Then
Collec.Add target.Value, CStr(target.Value)
If Err <> 0 Then
Err.Clear
t = t + 1
Cells(4, 1) = t
Else: End If
Else: End If
Next target
cells(4,1) contiendra le nombre de doublons ( hors les cellules vides) de la plage considérée
A+
Bonjour à tous,
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans une colonne pouvant comporter jusqu'à 2000 noms ?
En fait, je voudrais effectuer un total de salarié dans une liste, ces derniers pouvant être apparaître plusieurs mais n'être comptabilisé qu'une fois.
La procédure que j'ai faite est trop longue :
Private Sub Worksheet_Change(ByVal target As Excel.Range) Dim Collec As New Collection, Plage As Range Dim t As Variant
On Error Resume Next Set Plage = Range("$a$6:$a$2000")
If IsEmpty(Plage) Then Exit Sub
For Each target In Plage If target.Value <> "" Then Collec.Add target.Value, CStr(target.Value) If Err <> 0 Then Err.Clear t = t + 1 Cells(4, 1) = t Else: End If Else: End If Next target
Merci d'avance
-- Franck
bonjour,
la proc que tu commiuniques n'est pas si mal. Elle pourrait sans doute être
améliorée de la manière suivante.
Private Sub Worksheet_Change(ByVal target As Excel.Range)
Dim Collec As New Collection, Plage As Range
Dim t As Integer
Set Plage = Range("$a$6:$a$2000")
On Error Resume Next
If IsEmpty(Plage) Then Exit Sub
For Each c In Plage
If c.Value <> "" Then Collec.Add c.Value, CStr(c.Value)
Next
cells(4,1) contiendra le nombre de doublons ( hors les cellules vides) de la
plage considérée
A+
Bonjour à tous,
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans
une colonne pouvant comporter jusqu'à 2000 noms ?
En fait, je voudrais effectuer un total de salarié dans une liste, ces
derniers pouvant être apparaître plusieurs mais n'être comptabilisé qu'une
fois.
La procédure que j'ai faite est trop longue :
Private Sub Worksheet_Change(ByVal target As Excel.Range)
Dim Collec As New Collection, Plage As Range
Dim t As Variant
On Error Resume Next
Set Plage = Range("$a$6:$a$2000")
If IsEmpty(Plage) Then Exit Sub
For Each target In Plage
If target.Value <> "" Then
Collec.Add target.Value, CStr(target.Value)
If Err <> 0 Then
Err.Clear
t = t + 1
Cells(4, 1) = t
Else: End If
Else: End If
Next target
cells(4,1) contiendra le nombre de doublons ( hors les cellules vides) de la plage considérée
A+
Bonjour à tous,
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans une colonne pouvant comporter jusqu'à 2000 noms ?
En fait, je voudrais effectuer un total de salarié dans une liste, ces derniers pouvant être apparaître plusieurs mais n'être comptabilisé qu'une fois.
La procédure que j'ai faite est trop longue :
Private Sub Worksheet_Change(ByVal target As Excel.Range) Dim Collec As New Collection, Plage As Range Dim t As Variant
On Error Resume Next Set Plage = Range("$a$6:$a$2000")
If IsEmpty(Plage) Then Exit Sub
For Each target In Plage If target.Value <> "" Then Collec.Add target.Value, CStr(target.Value) If Err <> 0 Then Err.Clear t = t + 1 Cells(4, 1) = t Else: End If Else: End If Next target
Merci d'avance
-- Franck
AV
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans une colonne pouvant comporter jusqu'à 2000 noms ?
Matricielle (validation par ctrl+maj+entrée) =NBVAL(plage)-SOMME(1/NB.SI(plage;plage))
AV
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans
une colonne pouvant comporter jusqu'à 2000 noms ?
Matricielle (validation par ctrl+maj+entrée)
=NBVAL(plage)-SOMME(1/NB.SI(plage;plage))
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans une colonne pouvant comporter jusqu'à 2000 noms ?
En vba et avec des cellules vides x = [counta(A1:A2000)-sum(if(A1:A2000<>"",1/countif(A1:A2000,A1:A2000)))]
AV
Steph_D
Bonjour,
Je ne sais pas si cela pourra vous aider, toujours un peu de mal à maîtriser la fonction Evaluate.
Salutations, Steph D
Sub NbDoublonsDS() Dim MaPlage As Range Set MaPlage = Range("A6:A2000") MsgBox Evaluate("COUNTA(" & MaPlage.Address & ") - SUM(IF(ISBLANK(" & MaPlage.Address & "),""ST"",1/COUNTIF(" & MaPlage.Address & "," & MaPlage.Address & ")))") Set MaPlage = Nothing End Sub
Bonjour,
Je ne sais pas si cela pourra vous aider, toujours un peu de mal à maîtriser
la fonction Evaluate.
Salutations,
Steph D
Sub NbDoublonsDS()
Dim MaPlage As Range
Set MaPlage = Range("A6:A2000")
MsgBox Evaluate("COUNTA(" & MaPlage.Address & ") - SUM(IF(ISBLANK(" &
MaPlage.Address & "),""ST"",1/COUNTIF(" & MaPlage.Address & "," &
MaPlage.Address & ")))")
Set MaPlage = Nothing
End Sub
Je ne sais pas si cela pourra vous aider, toujours un peu de mal à maîtriser la fonction Evaluate.
Salutations, Steph D
Sub NbDoublonsDS() Dim MaPlage As Range Set MaPlage = Range("A6:A2000") MsgBox Evaluate("COUNTA(" & MaPlage.Address & ") - SUM(IF(ISBLANK(" & MaPlage.Address & "),""ST"",1/COUNTIF(" & MaPlage.Address & "," & MaPlage.Address & ")))") Set MaPlage = Nothing End Sub
Sky
Merci pour vos réponses,
je devrais trouver mon bonheur dans tout ça
:) @+
"AV" a écrit dans le message de news: %23AZwne$
Avez vous une procédure rapide qui puisse compter le nombre de doublon dans une colonne pouvant comporter jusqu'à 2000 noms ?
En vba et avec des cellules vides x = [counta(A1:A2000)-sum(if(A1:A2000<>"",1/countif(A1:A2000,A1:A2000)))]
AV
Merci pour vos réponses,
je devrais trouver mon bonheur dans tout ça
:)
@+
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
%23AZwne$oFHA.2904@TK2MSFTNGP12.phx.gbl...
Avez vous une procédure rapide qui puisse compter le nombre de doublon
dans
une colonne pouvant comporter jusqu'à 2000 noms ?
En vba et avec des cellules vides
x = [counta(A1:A2000)-sum(if(A1:A2000<>"",1/countif(A1:A2000,A1:A2000)))]
Ta formule m'intéresse, seul souci je n'arrive pas à l'appliquer puisqu'il me retourne le résutlat #DIV/0#
C'est parceque tu n'as pas validé matriciel ! Tout en maintenant appuyé les touches Ctrl et Alt, tu appuies ensuite sur Entrée
Que signifie en outre la combinaison des touches CTRL MAJ ENTREE? C'est justement la façon particulière (matricielle) de valider une formule
AV
AV
PS : si ta plage contient des cellules vides et que tu veuilles utiliser une fonction de feuille de calcul et non du vba (réponse pré-précédente) : =NBVAL(A1:A2000)-SOMME(SI(A1:A2000<>"";1/NB.SI(A1:A2000;A1:A2000)))
A valider matriciel (voir réponse précédente)
AV
PS : si ta plage contient des cellules vides et que tu veuilles utiliser une
fonction de feuille de calcul et non du vba (réponse pré-précédente) :
=NBVAL(A1:A2000)-SOMME(SI(A1:A2000<>"";1/NB.SI(A1:A2000;A1:A2000)))
PS : si ta plage contient des cellules vides et que tu veuilles utiliser une fonction de feuille de calcul et non du vba (réponse pré-précédente) : =NBVAL(A1:A2000)-SOMME(SI(A1:A2000<>"";1/NB.SI(A1:A2000;A1:A2000)))
A valider matriciel (voir réponse précédente)
AV
Sky
Merci pour ton aide alain, cela fonctionne
"AV" a écrit dans le message de news:
PS : si ta plage contient des cellules vides et que tu veuilles utiliser une fonction de feuille de calcul et non du vba (réponse pré-précédente) : =NBVAL(A1:A2000)-SOMME(SI(A1:A2000<>"";1/NB.SI(A1:A2000;A1:A2000)))
A valider matriciel (voir réponse précédente)
AV
Merci pour ton aide alain, cela fonctionne
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
uCmRMQBpFHA.1412@TK2MSFTNGP09.phx.gbl...
PS : si ta plage contient des cellules vides et que tu veuilles utiliser
une
fonction de feuille de calcul et non du vba (réponse pré-précédente) :
=NBVAL(A1:A2000)-SOMME(SI(A1:A2000<>"";1/NB.SI(A1:A2000;A1:A2000)))
PS : si ta plage contient des cellules vides et que tu veuilles utiliser une fonction de feuille de calcul et non du vba (réponse pré-précédente) : =NBVAL(A1:A2000)-SOMME(SI(A1:A2000<>"";1/NB.SI(A1:A2000;A1:A2000)))