Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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ù

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
607
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…