IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Supprimer un doublons mais dans un tableau array() et pas access ni excel ! [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Par défaut Supprimer un doublons mais dans un tableau array() et pas access ni excel !
    Bonjour à tous,

    J'ai deux tableaux en vba (un array directement, je ne parle pas d'une table access ou excel) type1() et nom1 () qui contiennent les noms des fichiers qui se trouve dans un dossier. Je récupère tout ça en vba.

    En fait un fichier se nomme "type01_formulaire01.dot" par exemple, le tableau type1 récupère "type01" et nom1 récupère "formulaire01.dot".

    Mon souci est que je les envoi dans des combobox pour que l'utilisateur puisse choisir un type ou un nom de formulaire, seulement par exemple il peut y avoir plusieurs fois le type01.

    Comment puis-je supprimer les doublons de mes tableau ?

    Je m'en remet à vous, j'ai cherché partout sur le net mais les gens veulent seulement supprimer les doublons d'une table excel ou access !

    Merci énormément d'avance


    ps: mon code si ça peut aider :
    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
    Private Sub Form_Load()
     
        Dim Fso As Scripting.FileSystemObject
        Dim SourceFolder As Scripting.Folder
        Dim FileItem As Scripting.File
        Dim i As Long
        Dim repertoire
        Dim nom1()
        Dim type1()
        Dim fich
        Dim typ
     
        repertoire = "C:\Documents and Settings\993921\Bureau\LOLA1\modele word"
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = Fso.GetFolder(repertoire)
     
        i = 0
     
        'Boucle sur tous les fichiers du répertoire
        For Each FileItem In SourceFolder.Files
     
            typ = Left(FileItem.Name, 6)
            fich = Right(FileItem.Name, (Len(FileItem.Name) - 7))
            ReDim Preserve nom1(i)
            ReDim Preserve type1(i)
            nom1(i) = fich
            type1(i) = typ
     
            Me.cbo_type.AddItem type1(i)
            Me.cbo_nom.AddItem nom1(i)
     
        Next FileItem
     
    End Sub

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Par défaut
    Bjr
    Sans doute te suffrait il de tester, avant de renseigner tes tableaux "nom1()" et "type1()" que la valeur que tu souhaites y mettre n'y est pas déjà...

    Par exemple :
    Avant d'augmenter la taille de chacun de tes deux tableaux et d'y affecter une valeur tu fais une boucle te permettant de tester que la valeur n'existe pas déjà dans le style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NomExistant = False
    TypeExistant= False
    For J = 0 To UBound(nom1)
                If nom1(J) = fich Then NomExistant = True
    Next J
            For J = 0 To UBound(type1)
                If type1(J) = typ Then TypeExistant = True
     Next J
    et bien sûr tu n'augmentes la taille et ne renseignes tes deux tableaux que lorsque NomExistant = False et TypeExistant = False au sortir des deux boucles FOR J / Next J (peut être faut-il donner comme butoir Ubond(TesTableaux) - 1 et non comme je l'écris plus haut ubond(TesTableaux)... à vérifier.

    Au passage, dans ton code, je vois que la valeur de "i" n'est jamais incrémentée... est-ce normal ?

    Michel

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Par défaut
    Merci énormément de ta réponse !

    Non en effet ce n'est pas normal j'ai du l'enlever sans faire exprès en recopiant mon code sur le forum en supprimant un commentaire mais il est bel est bien dans mon code !

    Je vais tester ta méthode et je reviens !

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Par défaut
    NICKEL ça marche ! J'ai du faire encore plein de test et de changement (notamment au niveau de l'endroit ou placer mes incrémentations) mais ça y est ça marche !!!!

    Un énorme merci à toi !!!

    Je met mon code final si ça intéresse de futur coincé !

    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
    Private Sub Form_Load()
     
        Dim Fso As Scripting.FileSystemObject
        Dim SourceFolder As Scripting.Folder
        Dim FileItem As Scripting.File
        Dim i, j, k As Long
        Dim repertoire
        Dim nom1()
        Dim type1()
        Dim fich, typ As String
        Dim NomExistant, TypeExistant As Boolean
     
        repertoire = "C:\Documents and Settings\999999\Bureau\LOLA1\modele word"
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set SourceFolder = Fso.GetFolder(repertoire)
     
        i = 1
        k = 1
        ReDim Preserve nom1(0)
        ReDim Preserve type1(0)
     
        nom1(0) = ""
        type1(0) = ""
     
        'Boucle sur tous les fichiers du répertoire
        For Each FileItem In SourceFolder.Files
     
            typ = Left(FileItem.Name, 6)
            fich = Right(FileItem.Name, (Len(FileItem.Name) - 7))
     
            NomExistant = False
            TypeExistant = False
     
            For j = 0 To UBound(nom1)
                If nom1(j) = fich Then NomExistant = True
            Next j
     
            If NomExistant = False Then
                ReDim Preserve nom1(i)
                nom1(i) = fich
                Me.cbo_nom.AddItem nom1(i)
                i = i + 1
            End If
     
            For j = 0 To UBound(type1)
                If type1(j) = typ Then TypeExistant = True
            Next j
     
            If TypeExistant = False Then
                ReDim Preserve type1(k)
                type1(k) = typ
                Me.cbo_type.AddItem type1(k)
                k = k + 1
            End If
     
        Next FileItem
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-03] Tableau dans lequel on supprime les doublons mais pas toujours
    Par edonist dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/10/2008, 21h38
  2. [MySQL] Insertion de donnée dans un tableau array
    Par guigui69 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 18/06/2008, 17h10
  3. Supprimer occurrence du max dans un tableau d'entiers
    Par momo1367 dans le forum Pascal
    Réponses: 2
    Dernier message: 13/06/2008, 11h44
  4. Suppression d'éléments dans un tableau (Array)
    Par jeremie74 dans le forum Flash
    Réponses: 4
    Dernier message: 06/03/2007, 13h54
  5. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo