Exercice d'entrainement

Fermé
Bilal57 Messages postés 3 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 24 février 2018 - Modifié le 24 févr. 2018 à 14:55
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 févr. 2018 à 08:46
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

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 928
Modifié le 24 févr. 2018 à 16:03
    supprimerDoublons tabChaine


1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 27 févr. 2018 à 09:32
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 févr. 2018 à 14:57
Bonjour,

Pour commencer .. ta fonction supprimerDoublons attend des paramètres ...
Sauf que quand tu l'appelles ... tu ne lui passe rien.
0
Bilal57 Messages postés 3 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 24 février 2018
24 févr. 2018 à 15:12
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 févr. 2018 à 16:11
Sans les parenthèses
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 928
24 févr. 2018 à 15:00
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
Bilal57 Messages postés 3 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 24 février 2018
24 févr. 2018 à 15:13
Bonjour, en effet merci de me l'avoir fait remarquer.
0