Bonjour,
j'ai un souci , j'ai une colonne et je voudrais savoir le nombres de valeur distinctes dans cette colonne
quelle est l'instruction en vba pour dénombrer les valeurs ?
Merci d'avance
Bonjour,
j'ai un souci , j'ai une colonne et je voudrais savoir le nombres de valeur distinctes dans cette colonne
quelle est l'instruction en vba pour dénombrer les valeurs ?
Merci d'avance
Tu as la fonction countif en vba équivalent à nb.si
par exemple je cherche le nombe de valeur égale à 12 dans la colonne A
Code : Sélectionner tout - Visualiser dans une fenêtre à part Valeur = Application.WorksheetFunction.CountIf(Columns("A:A"), 12)
Merci pour ton aide mais ce que je veux c'est compter le nombre de valeurs différentes
je vais écrire l'algorithme en espérant être précis
pour chaque cellule de la selection
si cellule = agence alors
selectionner la colonne
si les cellules de cette colonnes sont toute identiques
faire traitement
sinon faire traitement
fin si
fin si
fin pour
Ce qui m'interesse c'est surtt ce qui est en rouge
cordialement
Huître
Bonjour
nombre de valeur uniques dans une plage
on pourrait peut-^tre passer + simplement par un filtre ou par la fonction evaluate mais bon courage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Function compter_uniques(plage As Range) As Long Set dico = CreateObject("scripting.dictionary") For Each cellule In plage ref = cellule.Value If Not dico.exists(ref) Then dico.Add ref, ref End If Next compter_uniques = dico.Count End Function
Michel_M
alors je vais rajouter une difficulté
c'est un fichier télécharger à partir du web et on peut choisir l'emplacement des colonnes (donc difficulté)
moi ce que je compte faire ressemble à ça
et je dois réiterer le processus pour le nom du client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub multiple() Dim rg As Excel.Range Dim val As Integer Range("B14").Select Range(Selection, Selection.End(xlToRight)).Select For Each rg In Selection If rg = "Agence" Then rg.Select Range(Selection, Selection.End(xlDown)).Select Range(Selection).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "BO14"), Unique:=True val = Application.WorksheetFunction.CountA("BO") - 1 If val > 1 Then Range("B3").ClearContents End If End If Next End Sub
donc la je cherche la plage qui m'interesse en fontion du critère
ensuite je fais un filtre élaboré avec une extraction sans doublons que je copie dans la cellule BO14 et la je compte le nombre de champs dans la colonne BO en excluant le titre et je l'insere dans la variable , si cette variable est superieur à 1 alors je supprime le champs concerné
alors en plus d'etre fastidieux ,le code ne marche pas(le debogueur m'indique la ligne écrite en vert) mais voilà ce que je veux grossomodo c'est à dire supprimer une cellule en fonction du nombre de valeurs différentes qu'on peut trouver
Sinon si je reviens au code de Michel_M je n'ai pas bien compris les instructions
ah oui j'ai oublié un dernier détail plusieur colonnes peuvent avoir le même ce qui constitue une gêne non négligeable mais comment résoudre ce problème de doublons?
Merci d'avance
Tu n'as pas autre chose à rajouter après une proposition que je reprenne les codes N fois ?
Michel_M
Bonjour huître, Michel M
Si je puis me permettre, j'ai du mal à comprendre ce que tu cherches huître, car :
- à 9h31 la question était : "...je voudrais savoir le nombre de valeurs distinctes dans cette colonne "
- puis à 10h12 : ".....si les cellules de cette colonne sont toutes identiques "
Si la vrai question est celle de 9h31, la réponse de Michel est top, sinon un :
devrait faire l'affaire ("A" étant un exemple), mais ..... peut-être que je me trompe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Application.WorksheetFunction.CountIf(Columns("A:A"), "agence") = nombre de lignes occupées dans la colonne A
Dans le code de huître de 13h34, j'aurai opté pour un "find" à la place de la boucle pour un gain de temps certain, mais .... peut-être que je me trompe
Eric
bonjour
michel M a tres bien repondu
sa macro repond a toutes tes question
et pour la question en rouge meme si la reponse de edelweisseric et parfaite
moi je rajoute a la macro de michel M ce qui est en rouge
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function compter_uniques(plage As Range) As Long dim compteur_pas_unique as variant Set dico = CreateObject("scripting.dictionary") For Each cellule In plage ref = cellule.Value If Not dico.exists(ref) Then dico.Add ref, ref End If Next compter_uniques = dico.Count compteur_pas_unique= plage.cells.count-dico.count End Function
au plaisir
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager