Connaitre le nombre d'elements (sans doublons) d'un tableau [Résolu]

nicobox2
Messages postés
23
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
14 décembre 2006
- 6 nov. 2006 à 19:09 - Dernière réponse : PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 8 nov. 2006 à 00:38
Bonjour,

Y a t-il une fonction VB qui permet de connaitre le nombre d'élément d'un tableau mais sans les doublons ?

Ex de tableau :

toto
titi
toto
tutu

Nombre d'éléments : 3

Car là j'ai mal au crane et j'arrive plus à reflechir ...

D'avance merci bcp !
Afficher la suite 

Votre réponse

56 réponses

Meilleure réponse
PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 7 nov. 2006 à 23:56
3
Merci
très bien
mis à part que je ne vois pas pourquoi il faudrait ôter 1...

ps : pense à valider le code ;)
++
Prenez un instant pour répondre à ce sondage svp

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de PCPT
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 6 nov. 2006 à 19:16
0
Merci
Il te suffit de trier le tableau et de tester ligne à ligne si deux lignes sont identiques
OU
faire deux boucles imbriquées : l'une qui lit, l'autre qui parcourt toutes les autres lignes pour tester les doublons.
Commenter la réponse de cs_DARKSIDIOUS
le cancre
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Dernière intervention
27 novembre 2009
- 6 nov. 2006 à 19:19
0
Merci
dim Compare as string
For i = 0 To UBound(TonTab)   If InStr(hi, TonTab(i)) 0 Then Compare Compare & TonTab(i) & "/"
Next i

Dim yo() As String
yo = Split(hi, "/")
MsgBox "le nombre est  " & UBound(yo)
Commenter la réponse de le cancre
cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
- 6 nov. 2006 à 19:19
0
Merci
Salut, il faut que tu construise ta procédure en 2 étapes

Avant les étapes créer une variable disponible à travers les fonctions et sub-r de ta form

Private Toto() as string


Ensuite créer une fontion qui va vérifier le contenu de ton tableau Toto enfin de voir si l'info est déjà enregistrée


 


Private function CheckRef(byval Ref as String) as Boolean


'ici une boucle qui parcours ton tableau et qui retourne True si Ref à été trouvé dans le tableau et false dans le cas contraire


end function


puis créer la sub-r principale de ta vérif


Sub CheckTable


'ici une boucle qui parcours toutes les lignes du tableau et qui vérifie si la ligne en cours est présente dans toto ou pas


'si elle y est alors tu passe à la suivante, dans le cas contraire tu ajoute cette ref au tableau toto
'puis une fois la boucle finie tu fait : len(toto) ou toto.lenght je sais plus ^^ bref ça te retourne le nombre d'élément enregistrer


end Sub



Chris...


Web :
Firstruner
Commenter la réponse de cboulas
le cancre
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Dernière intervention
27 novembre 2009
- 6 nov. 2006 à 19:20
0
Merci
laisse tomber le premier

dim Compare as string
For i = 0 To UBound(TonTab)   If InStr(Compare, TonTab(i)) 0 Then Compare Compare & TonTab(i) & "/"
Next i

Dim yo() As String
yo = Split(Compare, "/")
MsgBox "le nombre est  " & UBound(yo)
Commenter la réponse de le cancre
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 6 nov. 2006 à 19:23
0
Merci
Salut,

une simple collection, avec la clé, les données en doublons ne s'ajoutent pas.
Un petit on error resume next avant l'ajout dans la collection, on error goto 0 et c'est fini.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
le cancre
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Dernière intervention
27 novembre 2009
- 6 nov. 2006 à 19:26
0
Merci
mortalino tu peux faire une ptite démo stp
Commenter la réponse de le cancre
le cancre
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Dernière intervention
27 novembre 2009
- 6 nov. 2006 à 19:37
0
Merci
bien sur si ton code est plus petit que le mien ,sinon laisse tomber
Commenter la réponse de le cancre
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 6 nov. 2006 à 19:40
0
Merci
En cas ouvre un nouveau projet, fait Ctrl + G, et colle ceci :

Private Sub Form_Load()
    Dim sTableau(1 To 5)    As String
    Dim i                   As Byte
    Dim cCollection         As New Collection
    
sTableau(1) = "Valeur 1"
sTableau(2) = "Valeur 2"
sTableau(3) = "Valeur 1"
sTableau(4) = "Valeur 3"
sTableau(5) = "Valeur 2"
' *** seul 1, 2 et 3 devra rester

    On Error Resume Next
' l'ajout d'un doublon provoque
une erreur, on occulte l'erreur,
' l'ajout du
doublon ne se fait pas et la routine continue  ;)

For i = LBound(sTableau) To UBound(sTableau)
    cCollection.Add sTableau(i), CStr(sTableau(i))
Next i
For i = 1 To cCollection.Count
    Debug.Print cCollection.Item(i)
Next i
    Unload Me
End Sub


--Mortalino--

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
le cancre
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Dernière intervention
27 novembre 2009
- 6 nov. 2006 à 19:57
0
Merci
j'utilise jamais les collections mais c'est bon à savoir,merci
Commenter la réponse de le cancre
cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
- 6 nov. 2006 à 20:09
0
Merci
Bonne idée !

Chris...
Web : Firstruner
Commenter la réponse de cboulas
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
- 6 nov. 2006 à 20:15
0
Merci
ca produit pas une erreur si y'a des doublons dans une collection à l'ajout ?
Commenter la réponse de cs_DARKSIDIOUS
nicobox2
Messages postés
23
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
14 décembre 2006
- 6 nov. 2006 à 20:31
0
Merci
Je laisse un message, je prends le RER, j'arrive chez moi 11 messages ! Quelle reactivité !
Merci à tous pour votre aide,
Commenter la réponse de nicobox2
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 6 nov. 2006 à 20:34
0
Merci
LOL, j'avais perdu le fil, j'ai cru que c'était Le Cancre qui demandait, du coup !
Bah voilà, t'as le choix du code.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 6 nov. 2006 à 20:42
0
Merci
Excuse Dark, j'avais pas vu ton message,

Oui, avec la clé (qui doit être unique), tu as l'erreur 457, "Cette clé est déjà associé à cette collection".

Ce qui as de bien, c'est que ça prend du String. (pas forcément du numérique)

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Dolphin Boy
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Dernière intervention
17 février 2007
- 6 nov. 2006 à 21:06
0
Merci
Salut, s'il s'agit d'un tableau en mémoire, je pense que DARKSIDIOUS a donné la meilleure réponse possible.
Quoique, à mon avis, le meilleur des contrôles de doublons aurait dû se faire au niveau du remplissage du tableau et non pas au moment de son utilisation.
Commenter la réponse de Dolphin Boy
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 6 nov. 2006 à 21:10
0
Merci
Je sais qu'une collection est plus lourde qu'un tableau, mais s'il y a un tri de données sur les doublons à faire en tableau, 2 boucles pour le tableau, c'est trop long, surtout si t'as des milliers de données à traiter.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
Dolphin Boy
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Dernière intervention
17 février 2007
- 6 nov. 2006 à 21:54
0
Merci
mortalino > je persiste et signe : il est sûrement moins long de contrôler les doublons au moment du remplissage du tableau (ou de la collection) qu'au moment des différentes utilisations. Reste à savoir comment ce tableau (ou cette collection) est rempli(e).
Commenter la réponse de Dolphin Boy
vercomax
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Dernière intervention
11 septembre 2013
- 6 nov. 2006 à 22:00
0
Merci
trés fort avec les collections Mortalino, merci pour ce code
:)
Commenter la réponse de vercomax
chaibat05
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Dernière intervention
20 novembre 2007
- 7 nov. 2006 à 00:24
0
Merci
Bonsoir le cercle des poètes perdus ,


une variante de l' idée de DARKSIDIOUX,
si ce n' est la même...
'------------------------------------------------
Function Compte_Sans_Doublon() As integer
  Dim uB as integer
  uB=UBound(T)
  if uB=0 Then
     Compte_Sans_Doublon=0
  ElseIf uB=1 Then
     Compte_Sans_Doublon=1
  Else
     uB=uB-1
     Dim Temp() As String
     Dim i as Integr, Dim sText As string
     For i=1 To uB
       sText=T(i)
       Redim Preserve Temp(i)
       Temp(i)=sText
       Do While sText=T(i+1)
           i=i+1
       Loop
    Next
       Compte_Sans_Doublon=UBound(Temp)
   End If


End Function
'------------------------------------------------
  MonCompte=Compte_Sans_Doublon
'------------------------------------------------
j' espère que je ne me suis pas perdu !
Commenter la réponse de chaibat05

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.