Problème de sélection après filtre d'un tableau

Bonjour à tous,

J'ai un tableau dans lequel j'extrait le nom des collaborateurs sur le départ. Mon problème c'est que j'ai un bug lorsqu'il n'y a aucun départ pour le mois en cours.

Voici mon code:

Windows("fichier_a.xlsm").Activate 'ALLER DANS LE FICHIER A
With Sheets("Départ")
        If .FilterMode = True Then .ShowAllData
    End With 'SUPPRIMER LES FILTRES ACTIFS

Range("E512:M512").Select
 Selection.AutoFilter
  ActiveSheet.Range("$E$512:$M$813").AutoFilter Field:=1, Criteria1:="<>"
  Range("E513:E812").Copy 'FILTRER LES CELLS VIDES COLONNE 1 ET RECUPERER LE NOM DES COLLABORATEURS

Windows("fichier_b.xlsm").Activate 'ALLER DANS LE FICHIER B
i = Empty ' REINITIALISER LA VARIABLE i
i = Application.WorksheetFunction.CountA(Range("N:N")) 'LA VARIABLE i VAUT LE NOMBRE DE LIGNE NON-VIDE DE LA COLONNE (N)
Cells(i + 1, 14).Select ' SELECTIONNER LA CELL LIGNE i + 1, COLONNE 12 (L)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False 'COLLAGE VALEUR

La problématique réside dans le fait que les données du tableau provient de formules, donc les cellules sont vides visuellement mais compte comme non-vide.

=SI(B513=0;"";'Saisie Départ'!H512) ' renvoie au nom du collaborateur

Dans mon cas lorsqu'il n'y a que des cellules vides, ma macro va bien filtrer le tableau mais va quand même copier les cellules dans le second fichier.

J'aimerais dans le cadre où il n'y a aucun contenu dans le tableau (Seul filtre possible = (vides)), que le programme passe a la tache suivante.

Merci par avance,

Stan

Ps: Désolé je ne peux pas joindre de fichier car il y a énormément de données à rendre anonyme, au risque d'avoir des bugs.

Bonjour,

voici un exemple,

Merci SabV,

Cependant, je n'ai pas réussi à appliquer votre code à mon cas.

J'ai donc reproduit le fichier que vous trouverez ci-joint.

Merci bien.

Stan

Bonjour,

une autre possibilité à tester.

utilisant uniquement les feuilles "Données" et "Reporting"

Sub test2()
Dim list1()
Dim list2()
Set sh1 = Sheets("Données")
Set sh2 = Sheets("Reporting")
With sh1
    Set plg1 = .Range("B2:B" & .Cells(Rows.Count, "B").End(xlUp).Row)
    Set plg2 = .Range("G2:G" & .Cells(Rows.Count, "G").End(xlUp).Row)
End With

For Each c In plg1
     If c.Offset(, -1) = 1 Then x = x + 1: ReDim Preserve list1(x): list1(x) = c
Next

For Each c In plg2
     If c.Offset(, -1) = 1 Then x = x + 1: ReDim Preserve list1(x): list1(x) = c.Value
Next
sh2.Range("A2").Resize(UBound(list1) + 1) = Application.Transpose(list1)
End Sub

Bonjour,

Malheureusement ça ne fonctionne pas. Dans le fichier original les informations de l'onglet données proviennent elles aussi de formules et pour être honnête il y a derrière un véritable usine à gaz.

Pouvons-nous pas adapter le premier code que vous m'avez fourni sur le fichier joint ?

Merci par avance.

Stan

Personne pour m'aider ?

Rechercher des sujets similaires à "probleme selection filtre tableau"