Selection cellule masquée ou filtrée

Chombi

XLDnaute Occasionnel
Bonjour à tous

Dans un tableau de A à C Je cherche à extraire de la colonne A et B les valeurs sans doublon
j'utilise ça:
Code:
  Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("A5", [A65536].End(xlUp))
    temp = c & "-" & c.Offset(, 1)
    mondico(temp) = mondico(temp) + 1
  Next c
  Sheets("Client").[A3].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
Tout va bien

je voudrais pouvoir faire la même chose en ayant filtré ou masque une partie de mon tableau sans défiltrer ou afficher ce dernier, je voudrai en fait pouvoir sélectionner la dernière cellule non vide même si elle est masquée

Pour arriver à mes fins j’utilise le code ci dessus légèrement modifier comme suit:
Code:
  Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("A5", [A65536])
    temp = c & "-" & c.Offset(, 1)
    mondico(temp) = mondico(temp) + 1
  Next c
  Sheets("Client").[A3].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  Sheets("Client").Range("A65536").End(xlUp).ClearContents

le résultât est là mais la procédure est plus longue
ci joint extrait de mon fichier
y aurait il une solution
Merci
 

Pièces jointes

  • Extraire sans doublon sur cellule masquerl.xlsm
    24.4 KB · Affichages: 27

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Selection cellule masquée ou filtrée

Re,

Essayer le code suivant :
VB:
Sub Test()
Dim derlig&, i&, mondico, c As Range

  Application.ScreenUpdating = False
  Application.Calculation = xlManual
  With Sheets("Feuil1")
    derlig = .UsedRange.Rows.Count + .UsedRange.Row - 1
    For i = derlig To 4 Step -1
      If .Cells(i, 1) <> "" Then Exit For
    Next i
    If i = 3 Then Exit Sub Else derlig = i
  End With
  
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("a4:a" & derlig)
    mondico(c & "-" & c.Offset(, 1)) = ""
  Next c
  
  With Sheets("Client")
    .Columns(1).ClearContents
    .Range("a3").Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
    .Range("a3").Resize(mondico.Count, 1).Sort key1:=.Range("a3"), order1:=xlAscending, Header:=xlNo
    .Activate
  End With
  Application.ScreenUpdating = True
  Application.Calculation = xlAutomatic
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Selection cellule masquée ou filtrée

Re,

Une version sans doute plus rapide avec un tableau.
VB:
Sub Test2()
Dim derlig&, i&, mondico, tablo

  Application.ScreenUpdating = False: Application.Calculation = xlManual
  Sheets("Client").Activate
  Sheets("Client").Range("a3:a" & Rows.Count).ClearContents
  
  With Sheets("Feuil1")
    derlig = .UsedRange.Rows.Count + .UsedRange.Row - 1
    tablo = .Range("a1:a" & derlig)
    For i = derlig To 1 Step -1
      If tablo(i, 1) <> "" Then Exit For
    Next i
    If i <= 3 Then Exit Sub Else derlig = i
    tablo = .Range("a4:b" & derlig): derlig = UBound(tablo)
    Set mondico = CreateObject("Scripting.Dictionary")
    For i = 1 To derlig: mondico(Trim((tablo(i, 1)) & "-" & Trim(tablo(i, 2)))) = "": Next i
    If mondico.exists("-") Then mondico.Remove "-"
  End With
  
  With Sheets("Client")
    .Range("a3").Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
    .Range("a3").Resize(mondico.Count, 1).Sort key1:=.Range("a3"), order1:=xlAscending, Header:=xlNo
  End With
  Application.ScreenUpdating = True: Application.Calculation = xlAutomatic
End Sub
 
Dernière édition:

Chombi

XLDnaute Occasionnel
Re : Selection cellule masquée ou filtrée

Bonjour mapomme

un grand merci c'est super rapide et je ne vois pas bcp de diff entre les 2 versions
j'ai juste modifier
Code:
.Columns(1).ClearContents
par
Code:
.Range("A3:A" & derlig).ClearContents
pour garder l’entête

encore merci
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG