Utilisation plage de données nommées pour un filtre élaboré

Pseudoto

XLDnaute Nouveau
Bonjour à tous et tout d'abord merci de votre aide dans ma quête du code ^^

J'ai lu pas mal de post ici ou là qui m'ont bien aidé !

Pour vous résumer mon projet, il s'agit d'un onglet d'opérations qui sont classés selon des critères en colonne (type, client, etc).
L'idée est de produire à partir de cet onglet plusieurs tableaux avec des mises en forme différente. Le projet est simple mais assez complexe au final pour quelqu'un qui découvre les macros !


En clair, ma première étape, est de rechercher via un filtre élaboré les données répondant à 2 critères croisés et les coller dans un autre onglet
- soit tout en haut si l'onglet est vide
- soit 2 lignes en dessous du précédent bloc de données

Voilà le code en l'état:

Code:
    If Sheets("2011.test").Cells.Find("*") Is Nothing Then
    ligne_collage = Sheets("2011.test").Range("A1:M1")
    Else:
    plage1 = Sheets("2011.test").UsedRange.End(xlDown).Row.Offset(2, 0)
    plage2 = Sheets("2011.test").Range("A65536:M65536")
    ligne_collage = Range("plage1 plage2")
    End If

    Sheets("Données").Range("A1:M65536").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Sheets("Données").Range("P1:Q2"), CopyToRange:=ligne_collage, Unique:=False

Si c'est vide, alors, la plage pour le collage du filtre élaboré sera la première ligne.
Sinon, c'est l'intersection de deux zones (j'ai pas su faire autrement pour sélectionner 2 lignes en dessous de mon usedrange ...).

Le problème, mon xlFilterCopy me renvoie rien ("référence non valide").

Je pense que j'ai du foiré une syntaxe quelque par mais où :confused:

Merci par avance de votre aide !
 

Pseudoto

XLDnaute Nouveau
Re : Utilisation plage de données nommées pour un filtre élaboré

Le pire, c'est qu'en testant :

Code:
Sub Copiecolle()
' Macro qui copie colle les affaires depuis l'onglet "données"

    
    'If Sheets("2011.test").Cells.Find("*") Is Nothing Then
    'ligne_collage = Sheets("2011.test").Range("A1:M1")
    'Else:
    'plage1 = Sheets("2011.test").UsedRange.End(xlDown).RowOffset(2, 0)
    'ligne_collage = Range("plage1 plage2")
    'End If

    Sheets("Données").Range("A1:M65536").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Sheets("Données").Range("P1:Q2"), CopyToRange:=Sheets("2011.test").Range("A1:M1"), Unique:=False


End Sub

ça marche ... donc y'a bien une erreur dans la façon dont j'appelle avec le CopyToRange mon Range ...
 

Discussions similaires

Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 331
Messages
2 087 354
Membres
103 528
dernier inscrit
hplus