VBA Modification de programme doublon : les mettre en avant

TotoB

XLDnaute Nouveau
Bonjour a tous,

Tout d'abord, je souhaite préciser que j'ai débuté le VBA il y a une semaine donc je ne connais pas (encore) très bien les différentes possibilités de ce magnifique outil :)

Mon tableau excel : une liste de noms de fichiers qui se trouvent sur mon ordinateur dans des dossiers et sous-dossiers. La première ligne de la liste est la ligne 10
Ce que je souhaite : afficher les lignes avec les fichiers dont le nom est le même et cacher les autres.
Ce que j'ai deja : une fonction qui les trouve (que j'ai trouvé sur internet)
Mon problème : je souhaite modifier la macro pour afficher uniquement les lignes avec les noms différents. Et je n'arrive pas a comprendre l'algorithme utilisé. Je n'arrive a afficher qu'une des deux lignes et j'ai besoin des deux lignes (voir plus) car j'ai l'adresse des dossiers ou sont les fichiers dans une autre colonne.

Voici un extrait de mon code :

Code:
 Set Un = New Collection
    Set Plage = Range("B10:B" & Range("B65536").End(xlUp).Row)
    

    
    Table = Plage.Value


    
    On Error Resume Next

    For i = 1 To Plage.Count
    
        ReDim Preserve Result(2, m + 1)

        Un.Add Table(i, 1), CStr(Table(i, 1))
        

        If Err <> 0 Then

            For j = 1 To m + 1

                If Result(1, j) = Table(i, 1) Then
                    Result(2, j) = Result(2, j) + 1
                    Err.Clear
                    Exit For
                End If
            Next j
                

                If Err <> 0 Then
                   
                    Result(1, m + 1) = Table(i, 1)
                    Result(2, m + 1) = 1
                    Range("A" & (i + 9)).EntireRow.Hidden = True
                    m = m + 1
                    Err.Clear

                End If
        End If
    Next i
    
    
    
        For j = 1 To m
            Doublons = Doublons & Result(1, j) & " --> " & _
                        Result(2, j) & vbCrLf

                

        Next j

    For j = 1 To Plage.Count
    
        If Range("B" & j + 9) = "No Number" Then
            Rows(j + 9).Hidden = False
        End If
        
        
        If Rows(j + 9).Hidden = True Then
            Rows(j + 9).Hidden = False
        Else
            Rows(j + 9).Hidden = True
        End If
    Next j

    Range("I1") = Doublons
    
    Set Un = Nothing

Je suis sur que la réponse va être assez simple, mais je n'arrive pas a avancer avec ce problème.

Merci d'avance pour votre aide.

Thomas
 

WUTED

XLDnaute Occasionnel
Re : VBA Modification de programme doublon : les mettre en avant

Bonjour Thomas,

J'ai peur que ce ne soit pas très clair, en gros, tu veux que chacune des lignes de ton tableau soit unique après l'exécution de ta macro?
Au cas, met un fichier exemple en pièce jointe, avec ce que t'as au départ et le résultat attendu sur une autre feuille.
 

TotoB

XLDnaute Nouveau
Re : VBA Modification de programme doublon : les mettre en avant

Non, pour résumer, chaque nom de fichier est sous la forme numero_nom comme ca : 4562186-015-01_nom 2

J'ai déjà fait une macro qui fait la liste des fichiers et qui met dans une colonne le numéro et dans une autre le nom.
Et il ne peux pas y avoir 2 fois le même numéro. Donc je souhaiterai faire une macro qui les met en avant, pour que je puisse aller par la suite dans le dossier correspondant pour le changer.

Dans le fichier joint, le premier onglet est un extrait du tableau original, dans le deuxième onglet est le résultat obtenu.
Les lignes qui sont ok, sont cachées.

Merci

Thomas
 

Pièces jointes

  • Exemple.xlsx
    9.3 KB · Affichages: 54
  • Exemple.xlsx
    9.3 KB · Affichages: 62
  • Exemple.xlsx
    9.3 KB · Affichages: 58

WUTED

XLDnaute Occasionnel
Re : VBA Modification de programme doublon : les mettre en avant

Re,

Voici un essai :
VB:
Sub doublonRelief()
    Dim state As Boolean
    For i = 11 To Sheets("Extrait de depart").Range("A65536").End(xlUp).Row
        state = False
        For j = 11 To Sheets("Extrait de depart").Range("A65536").End(xlUp).Row
            If i <> j Then
                If Sheets("Extrait de depart").Range("A" & i).Value = Sheets("Extrait de depart").Range("A" & j).Value Then
                    state = True
                End If
            End If
        Next j
        If state = False Then
            Sheets("Extrait de depart").Range("A" & i).EntireRow.Hidden = True
        End If
    Next i
End Sub
 

Discussions similaires

Réponses
11
Affichages
297

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 457
dernier inscrit
fab2614