Exercice d'entrainement

Bilal57 Messages postés 3 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Le prof nous a demandé de créer un programme qui étant donné un tableau de chaîne de caractère trié, de supprimer les doublons et de ressortir le résultat sous forme d'un tableau, j'ai testé une solution mais cela ne fonctionne pas, est ce que quelqu'un pourrait me dire d'où viens le problème ? :

Public Function supprimerDoublons(ByRef TabChaine() As String) As String
    Dim i As Integer, nb As Integer
    Dim TabResultat() As String
    nb = 1
    ReDim TabResultat(UpperBound(TabChaine))
    TabResultat(0) = TabChaine(0)
        For i = 1 To UpperBound(TabChaine)
            If TabChaine(i) <> TabChaine(i - 1) Then
                TabResultat(nb) = TabChaine(i)
                nb = nb + 1
            End If
        Next i
    ReDim Preserve TabResultat(nb - 1)
    supprimerDoublons = TabResultat()
    
End Function


Sub Main()
    Dim TabChaine() As String
    TabChaine(0) = "aaa"
    TabChaine(1) = "paa"
    TabChaine(2) = "paaa"
    TabChaine(3) = "alala"
    TabChaine(4) = "alala"
    TabChaine(5) = "alala"
    TabChaine(6) = "palala"
    TabChaine(7) = "alala"
    supprimerDoublons
    Debug.Print SupprierDoublons

End Sub


Merci d'avance ! :)
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

4 réponses

  1. Utilisateur anonyme
     
        supprimerDoublons tabChaine
    


    1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    1/ une fonction ne renvoie pas de tableau

    2/en VBA, il existe l'objet Dictionary qui élimine les doublons et renvoie la liste unique sous forme d'un tableau...
    Donc, si ce n'est pas trop tard,
    Un exemple avec Excel

    Option Explicit
    Dim Dico As Object
    '---------------------------------------------------------------------------
    Sub supprimerDoublons(ByRef TabChaine() As String)
        Dim Cptr As Integer
        
        Set Dico = CreateObject("scripting.dictionary")
        For Cptr = 0 To UBound(TabChaine)
            If Not Dico.exists(TabChaine(Cptr)) Then
                Dico.Add TabChaine(Cptr), ""
            End If
        Next
    End Sub
    '------------------------------------------------------------------------
    Sub Main()
        Dim TabChaine() As String
        
        ReDim TabChaine(7)
        TabChaine(0) = "aaa"
        TabChaine(1) = "paa"
        TabChaine(2) = "paaa"
        TabChaine(3) = "alala"
        TabChaine(4) = "alala"
        TabChaine(5) = "alala"
        TabChaine(6) = "palala"
        TabChaine(7) = "alala"
        Call supprimerDoublons(TabChaine)
        Range("B2").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)
    End Sub

    1
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Pour commencer .. ta fonction supprimerDoublons attend des paramètres ...
    Sauf que quand tu l'appelles ... tu ne lui passe rien.
    0
    1. Bilal57 Messages postés 3 Statut Membre
       
      Bonjour, du coup je dois lui passer comme paramètre : tabChaine() si je ne me trompe pas ?

      supprimerDoublons tabChaine()

      Merci pour votre réponse.
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Sans les parenthèses
      0
  4. Utilisateur anonyme
     
    Bonjour
    sans regarder ton code en détail, je voie que la fonction a besoin d'un paramètre et tu ne lui en fournis pas.
    0
    1. Bilal57 Messages postés 3 Statut Membre
       
      Bonjour, en effet merci de me l'avoir fait remarquer.
      0