mise à jour d'une liste

2b7a

XLDnaute Occasionnel
bonjour à toutes et tous,

j'ai un gros classeur dont chacune des feuilles, en colonne A ,comporte un certain nombre de dénominations
Il peut y avoir par feuille 1 ou plusieures dénominations (maxi 10)
En première page, je voudrais pouvoir "actualiser" la liste des dénominations utilisées (macro ? formule ?)

D'avance, merci pour votre aide
 

Pièces jointes

  • Classeur2.xls
    20.5 KB · Affichages: 58
  • Classeur2.xls
    20.5 KB · Affichages: 56
  • Classeur2.xls
    20.5 KB · Affichages: 52

Dranreb

XLDnaute Barbatruc
Re : mise à jour d'une liste

Bonjour.
Cette procédure, dans le module de la feuille fait l'affaire:
VB:
Private Sub CommandButton2_Click()
Dim Dico As Dictionary, N As Long, TV() As Variant, L As Long
Set Dico = New Dictionary
For N = 2 To ThisWorkbook.Worksheets.Count
   With ThisWorkbook.Worksheets(N)
      L = .[A65536].End(xlUp).Row
      If L > 1 Then
         TV = .[A1].Resize(L).Value
         For L = 1 To UBound(TV)
            Dico(TV(L, 1)) = L
            Next L
      Else
         Dico(.[A1].Value) = 1
         End If
      End With
   Next N
Me.[B11].Resize(50000).ClearContents
Me.[B11].Resize(Dico.Count).Value = WorksheetFunction.Transpose(Dico.Keys)
End Sub
Nécessite la référence "Microsoft Scripting Runtime" qui définit le type Dictionary, qu'il est préférable d'utiliser plutot que Object qui aboutit à des liaisons tardives à ses méthodes et propriétés.
À +
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : mise à jour d'une liste

Bonjour à tous,

Peux-tu essayer ceci associer à ton bouton :

VB:
Option Explicit

Sub ListageDonnées()
    Application.ScreenUpdating = 0
    Dim DerL%, i As Byte, X&
    With Sheets("Récap")
        DerL = .Range("B65536").End(xlUp).Row
        If DerL > 11 Then .Range("B11:B" & DerL).ClearContents
        For i = 1 To Sheets.Count
            If Sheets(i).Name <> "Récap" Then
                DerL = Sheets(i).Range("A65536").End(xlUp).Row
                Sheets(i).Range("A1:A" & DerL).Copy .Range("B" & .Range("B65536").End(xlUp).Row + 1)
            End If
        Next i
    End With
    Range("B11:B25").Sort Key1:=Range("B11"), Order1:=xlAscending, Header:=xlGuess
    DerL = Feuil1.[B65536].End(xlUp).Row
    For X = DerL To 11 Step -1
        If Evaluate("COUNTIF(B11:B" & DerL & ",""" & Cells(X, 2).Value & """)") > 1 Then Cells(X, 2).Delete
    Next X
End Sub

A + à tous

Edition : Oups... Salut Cisco, Bernard
 

2b7a

XLDnaute Occasionnel
Re : mise à jour d'une liste

Bonjour à tous,

Peux-tu essayer ceci associer à ton bouton :

VB:
Option Explicit

Sub ListageDonnées()
    Application.ScreenUpdating = 0
    Dim DerL%, i As Byte, X&
    With Sheets("Récap")
        DerL = .Range("B65536").End(xlUp).Row
        If DerL > 11 Then .Range("B11:B" & DerL).ClearContents
        For i = 1 To Sheets.Count
            If Sheets(i).Name <> "Récap" Then
                DerL = Sheets(i).Range("A65536").End(xlUp).Row
                Sheets(i).Range("A1:A" & DerL).Copy .Range("B" & .Range("B65536").End(xlUp).Row + 1)
            End If
        Next i
    End With
    Range("B11:B25").Sort Key1:=Range("B11"), Order1:=xlAscending, Header:=xlGuess
    DerL = Feuil1.[B65536].End(xlUp).Row
    For X = DerL To 11 Step -1
        If Evaluate("COUNTIF(B11:B" & DerL & ",""" & Cells(X, 2).Value & """)") > 1 Then Cells(X, 2).Delete
    Next X
End Sub

A + à tous

Edition : Oups... Salut Cisco, Bernard


bonjour JCGL

Il y a juste un petit détail (que je n'arrive pas à résoudre . ...)
Les dénominations de mes colonnes A sont bien reportées dans la colonne B de la feuille "Récap".
Mais je voudrais que le collage (en feuille Récap) ne commence qu'à partir de la cellule B16
Où est-ce que je dois corriger ?
encore merci !
 

Discussions similaires

Statistiques des forums

Discussions
312 885
Messages
2 093 256
Membres
105 658
dernier inscrit
Mario Richard