Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

VBA Excel compter nbre valeur différente

linette44, le mercredi 31 octobre 2007 à 15:23:18
Bonjour,
Je cherche un code VBA qui me permettrait de compter le nombre de valeur différente dans une colonne.
Exemple : Colonne A
Valeur :
A2 : 10,
A3 : 20,
A4 : 10,
A5 : 15,
A6 : 20
Résultat en A1 : 3 (valeurs différentes)
Merci de votre aide
Cordialement
linette44
Configuration: Windows XP
Firefox 2.0.0.8
Répondre à linette44  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
aminea, le mercredi 31 octobre 2007 à 23:57:24
Bonjour linette44,
Voici une solution possibe:
- Tu crée un tableau dans lequel tu mets les valeurs de ta colonne
- Tu classe les éléments de ce tableau par ordre croissant
- Tu met un compteur qui parcourt le tableau et qui s'incrémente à chaque fois qu'il trouve deux cases successives de valeurs différentes.

Voici le code correspondant:

Sub nombreValeurs()

'Tu crée un tableau où tu va mettre les valeurs de ta colonne
Dim monTableau(5) As String 'tu mets la taille de ton tableau
Dim i, j, n As Integer
Dim myRange As Range
Dim R As Range
i = 0
j = 0
k = 0
n = 1
Set myRange = Range("A2:A6")

For Each R In myRange
    If R.Value <> "" Then '(non vides)
        monTableau(k) = R.Value
        k = k + 1
    End If
Next R

' Tri croissant du tableau
Dim str As String
For i = 0 To UBound(monTableau) - 2
    For j = i + 1 To UBound(monTableau) - 1
        If monTableau(i) > monTableau(j) Then
            str = monTableau(i)
            monTableau(i) = monTableau(j)
            monTableau(j) = str
        End If
    Next j
Next i

'Calcul de n, le nombre de valeurs 
For i = 0 To UBound(monTableau) - 2
    If monTableau(i) <> monTableau(i + 1) Then
       n = n + 1
    End If
Next i

ActiveSheet.Range("A1") = n
End Sub
Répondre à aminea

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 1 novembre 2007 à 00:45:37
Bonsoir,

Un code VBA absolument ? Sinon une autre solution par formule:
en B2: =1/NB.SI($A$2:$A$6;A2) à recopier vers le bas
en A1: =SOMME(B2:B6) => 3

ou bien seulement en A1: {=SOMME(1/NB.SI(A2:A6;A2:A6))} à valider par SHIFT+Ctrl+Entrée

eric
Répondre à eriiic

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
linette44, le jeudi 1 novembre 2007 à 21:37:52
Bonsoir,
Merci pour tes réponses.
Le fait d'être obligé de créer un tableau avec le code VBA ne m'arrange pas vraiment.
Je vais donc plutôt partir sur les formules.
J'ai testé la 1ère solution avec une formule en B2 et 1 en A1. Cela fonctionne.
Le problème c'est que les données dans la colonne A peuvent varier, de A1 à A30 par exemple. Quand je tire la formule de B2 jusqu'à B30, j'ai un #DIV/0! pour les cellules non renseignées en A et quand je demande la somme en A1, j'ai un #DIV/0! également. Peut-on empêcher ce genre de chose ?

J'ai voulu tester la dernière solution A1: {=SOMME(1/NB.SI(A2:A6;A2:A6))} à valider par SHIFT+Ctrl+Entrée mais je ne dois pas savoir faire. J'ai saisi la formule ci-dessus après la saisie j'ai appuyé sur SHIFT+Ctrl+Entrée en même temps et rien. Peux-tu me dire pourquoi une parenthèse devant la formule et crois-tu que je peux intégrer la validation dans un code VBA ?

Cordialement
linette44
Répondre à linette44

4


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 1 novembre 2007 à 22:01:25
Re,

Déjà pour la dernière solution il ne faut pas saisie les { }, excel les rajoute si tu fais bien le shift+ctrl+enter.

Reste sur la 1ère à ce moment là et remplace par:
=SI(A2="";"";1/NB.SI($A$2:$A$30;A2))

eric
Répondre à eriiic

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 linette44, le vendredi 2 novembre 2007 à 08:10:17
Bonjour,
Merci beaucoup eriiic, la formule convient parfaitement
Cordialement
linette44
Répondre à linette44

Résultats pour VBA Excel compter nbre valeur différente

VBA excel formulaire de saisie - aide (Résolu) Bonjour, je suis débutant en VBA excel, et j'ai construis un formulaire de saisie (userform). Malheureusement je n'arrive pas à le finaliser... il me manque : a/ le numéro de transaction (TRANID) ne change pas lorsque j'appuie sur OK... www.commentcamarche.net/forum/affich-6740657-vba-excel-formulaire-de-saisie-aide
VBA excel insérer une ligne vide (Résolu) Bonjour, Je voudrais en vba excel insérer des lignes à chaque fois qu'une valeur d'une cellule change par rapport à celle du dessus. exemple : il faudrait que j'insére une ligne vide entre 15 et 20, entre 20 et 23, entre 23 et 26.... www.commentcamarche.net/forum/affich-4126535-vba-excel-inserer-une-ligne-vide
[vba] recherche d'une valeur EXACTE (Résolu) Bonjour, Débutante en vba, je recherche la valeur "NumUnique" parmi les cellules "B39 à B200" grâce au code : " Set CelluleTrouvee = Range("B39:B200").Find(NumUnique, LookIn:=xlValues) " PROBLEME : ma macro ne me retourne pas les cellules de valeur... www.commentcamarche.net/forum/affich-5011142-vba-recherche-d-une-valeur-exacte

Résultats pour VBA Excel compter nbre valeur différente

[VBA Excel] exporter cellules en couleur (Résolu)VBA Excel - importer / exporter des cellules en couleur bonjour ou bonsoir à toutes / tous ! J'ai un soucis ! Plusieurs jours/heures/aides pour essayer de faire quelque chose, j'explique ! J'ai un tableau excel, 3 feuilles, sur la... www.commentcamarche.net/forum/affich-2956148-vba-excel-exporter-cellules-en-couleur
VBA Excel - Ecrire dans fichier txt (Résolu)Bonjour à tous Je dois exécuter 2 macros en vba Excel, - une qui ouvre un fichier text et incrémente un tableau de variable, là pas de problème (voici le code épuré pour info) --------------------- Private Sub Command6_Click() On Error GoTo... www.commentcamarche.net/forum/affich-4854458-vba-excel-ecrire-dans-fichier-txt
[VBA Excel] activesheet.visible=false !HELP!! (Résolu)Bonjour, Je me dirige vers vous, car je crois que je viens de faire une belle boulette .... J'ai écrit un module en VBA Excel. Dans un module, j'enregistre dans un fichier "base e données" toutes les données que l'utilisateur vient... www.commentcamarche.net/forum/affich-4942514-vba-excel-activesheet-visible-false-help