Re,
Bon, j'avoue que je ne comprends rien à tes explications mais puisque tu sembles satisfait alors OK pour moi...
Re,
Bon, j'avoue que je ne comprends rien à tes explications mais puisque tu sembles satisfait alors OK pour moi...
Malheureusement, j'ai poussé plus loin et le code ne compte pas les valeurs uniques a priori:
Je voudrais ce qui correspond à un nbval après suppression des doublons
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 Sub COMPTEOCCURR() Application.EnableEvents = False Dim O As Worksheet 'déclare la variable O (Onglet) Dim D As Object 'déclare la variable D (Dictionnaire) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) Dim I As Double 'déclare la variable I (Incrément) Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire) Dim R As Range 'déclare la variable R (Recherche) Dim T As String 'déclare la variable T (Texte) Dim FinTab As Double Worksheets(2).Select FinTab = Range("A100000").End(xlUp).Row Sheets(Sheets.Count).Select Dim ColCompt As String Select Case ActiveCell.Row Case Is = 6 ColCompt = "A" Case Is = 7 ColCompt = "D" End Select Set O = Worksheets(2) 'définit l'onglet O (à adapter a ton cas) TV = O.Range(ColCompt & "1" & ":" & ColCompt & FinTab) '("A1:A73787") 'définit le tableau des valeurs TV (à adapter à ton cas) Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D For I = 2 To FinTab '87 'boucle sur toutes les lignes du tableau des valeurs TV (en partant de la seconde) D(TV(I, 1)) = "" 'alimente le dictionnaire D Next I 'prochaine ligne de la boucle TMP = D.keys 'récupère dans le tableau temporaire TMP, la liste des éléments du dictionnaire D sans doublon Select Case ActiveCell.Row Case Is = 8 Set O = Worksheets(2) 'définit l'onglet O (à adapter a ton cas) TV = O.Range("A1:A" & FinTab, "D1:D" & FinTab) '("A1:A73787") 'définit le tableau des valeurs TV (à adapter à ton cas) Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D For I = 2 To FinTab '87 'boucle sur toutes les lignes du tableau des valeurs TV (en partant de la seconde) D(TV(I, 1)) = "" 'alimente le dictionnaire D Next I 'prochaine ligne de la boucle TMP = D.keys 'récupère dans le tableau temporaire TMP, la liste des éléments du dictionnaire D sans doublon Range("L8").Value = UBound(TMP) - 1 End Select If ColCompt = "A" Then Range("L6").Value = UBound(TMP) - 1 End If If ColCompt = "D" Then Range("L7").Value = UBound(TMP) - 1 End If Application.EnableEvents = False ActiveWorkbook.Save End Sub
Sans supprimer les doublons de ma colonne de façon effective et en faisant un nbval sur 73787 ligne
En fait il faut que j'ajoute 1 au UBound, je pense que ça vient de premier index des tableaux / Première ligne de la feuille de calculs
Re,
Une fois de plus, je me rend compte que j'ai un mal fou à comprendre sans le fichier. Je sais que ce n'est pas la politique de ce forum mais il me faudrait un exemple avec des explications claires sinon je ne pourrai rien de plus...
Bonjour,
Voici une façon de faire ta demande
C'est du code simple sans utilisation de tableaux ou dictionnaire.Je me suis mal exprimé, j'ai, dans ma colonne A:A un certain nombre de valeurs qui se répètent, je voudrais connaître le nombre de valeur mais sans compter les répétitions.
Idem, en B:B.
Je voudrais aussi connaître le nombre de valeurs (An;Bn) sans compter les répétitions.
Teste et dis nous.
Bonsoir le fil, bonsoir le forum,
Je n'ai pas regardé ton code dans le détail Alex mais j'ai une une première erreur ici (variable non définie) :
que j'ai annulée en supprimant le Option Explicit (pour aller au plus vite), mais ensuite nouveau bug (erreur 438) ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part For ligne_cours = 2 To nbre_lignes_max
Là, j'avoue que je ne suis pas allé au-delà...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sheets("analyses").Sort.SortFields.Add2 Key:=Range("G2:G1048576"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ligne_cours n'était pas défini.
Pour la seconde erreur c'est selon la version d'Excel; dans votre cas à priori il faut enlever le "2" de "Add2".
J'utilise Office 2016 et le "Add2" fonctionne mais je crois qu'il ne fonctionne pas sous 2010.
Pour la déclaration c'est de ma faute. Un oubli. Par contre cela ne me dit pas pourquoi le code fonctionnait quand même... Le déboggueur aurait du bloquer. C'est assez souvent qu'il me fait ce coup la.
Je remets le fichier modifié pour qu'il soit plus "ouvert" aux versions d'Excel.
Oui enfin c'est améliorable je pense.
C'est surtout une entrée en matière pour Kestion pour voir si j'ai bien compris sa demande. Ensuite on adapte.
Il faut sa réponse et un fichier exemple de sa part serait aussi le bienvenu.
Bon bein je crois qu'il a trouvé ce qu'il voulait car plus de nouvelles...
Bonjour, merci pour les réponses, je n'ai pu répondre faute de temps , désolé.
Le code de Thautheme fonctionne parfaitement bien pour ma question sur une colonne.
Je test ton code Alex020181 et te dis.
Si je comprends bien ton code Alex, il compte le nombre de 0 dans la colonne A de l'onglet origine.
Je voudrais, pour ma part, compter le nombre de valeurs telles qu'elles sont inscrites dans ta colonne A de ton onglet analyses, c'est cette info que je n'ai pas.
(Chez toi, 0; 1; 2; ... 10)
Moi je ne sais pas combien de valeurs se répètent dans ma colonne A de mon onglet d'origine, peu importe le nombre de fois qu'elles y sont répétées.
Encore merci
pour reprendre ton fichier:
Origine:
0
1
6
0
4
10
1
.
.
.
Dans cette colonne j'ai 5 valeurs différentes:
0
1
6
4
10
C'est ce chiffre que je cherche à obtenir
Sur 2 colonnes, plus ardu:
0 1
3 2
0 1
4 1
6 2
.
.
.
Ici, 4 couples différents:
0 1
3 2
4 1
6 2
4 est le chiffre que je cherche
Ce qui correspond à 122 dans tes colonnes G et H de l'onglet analyses
Comme si je faisais un nbval dans ma colonne de 75000 valeurs après avoir supprimé les répétitions (menu: données/ supprimer doublons)
Je ne génère pas moi-même mes valeur de l'onglet origine, c'est une extraction d'une base de données.....
Dans vos codes, vous savez qu'il y a 11 valeurs différentes (0; 1; 2; .... 10) car vous générez cela avec la borne de la fonction alea
PS: je ne reçois plus les mails de notification de nouveaux messages......
bonjour
je sais pas si j'ai compris la demande
mais selon cette exemple :
Sur 2 colonnes, plus ardu:
0 1
3 2
0 1
4 1
6 2
.
.
.
Ici, 4 couples différents:
0 1
3 2
4 1
6 2
4 est le chiffre que je cherche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub test() Dim f2 As Worksheet Set d = CreateObject("Scripting.Dictionary") Set f2 = Sheets("Feuil1") TblBD1 = f2.Range("A1:B" & f2.Range("B" & Rows.Count).End(xlUp).Row) For i = 1 To UBound(TblBD1) clé = TblBD1(i, 1) & TblBD1(i, 2) d(clé) = d(clé) Next i MsgBox d.Count End Sub
Pour 1 colonne: OK, je pense que ça correspond bien.
J'ai essayé de modifier pour 2 colonnes disjointes et je ne pense pas que ce soit OK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub test() Dim f2 As Worksheet Set D = CreateObject("Scripting.Dictionary") Set f2 = Sheets(2) TblBD1 = f2.Range("A1:A" & f2.Range("A" & Rows.Count).End(xlUp).Row, "E1:E" & f2.Range("E" & Rows.Count).End(xlUp).Row) For I = 1 To UBound(TblBD1) clé = TblBD1(I, 1) & TblBD1(I, 1) D(clé) = D(clé) Next I MsgBox D.Count - 1 End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub test() Dim f2 As Worksheet Set d = CreateObject("Scripting.Dictionary") Set f2 = Sheets("Feuil1") TblBD1 = f2.Range("A1:E" & f2.Range("E" & Rows.Count).End(xlUp).Row) For i = 1 To UBound(TblBD1) clé = TblBD1(i, 1) & TblBD1(i, 5) d(clé) = d(clé) Next i MsgBox d.Count End Sub
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