Macro a plage évolutive - pour filtre élaboré

Sylzer

XLDnaute Nouveau
Bonjour,

Je viens d’automatiser un filtre élaboré sur un fichier afin de faciliter son utilisation pour la personne qui en a la charge.
Toutefois, le tableau où l’on réalise l’extraction est évolutif. De se fait, de nouvelle ligne peuvent être insérée ou supprimée n’importe où.

Le problème, c’est qu’une suppression de ligne entraîne une erreur dans l’exécution de la macro, et donc, du filtre élaboré.

Voici le code de la macro réalisant le filtre élaboré :


Range("A4:AP615").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
("AO4:CI13"), CopyToRange:=Range("A1104:AP1104"), Unique:=False

J’aimerai pouvoir indiquer que le tableau à extraire n’est pas A4:AP615 mais qu’il débute en A4 et qu’il à une taille de 611 lignes (par exemple).


Cela est il possible ? Comment faire ?


Merci à ceux qui prendront le temps de m’aider ;)
 

Sylzer

XLDnaute Nouveau
Re : Macro a plage évolutive - pour filtre élaboré

Cela n'affecte pas les performances en temps normal. Mais là l'extraction se réalise en dessous de la BDD. Donc ce qui créé une erreur lors d'une insertion ou supression de ligne ...
Toutefois, il suffis de déplacer l'extraction ;) Donc tu m'as mené à ma réponse.

Dranreb, connais tu un lien explicitant l'utilisation de resize ? car je n'ai pas réussi à mettre cela en pratique :s
 

Dranreb

XLDnaute Barbatruc
Re : Macro a plage évolutive - pour filtre élaboré

Bonjour.
Resize, propriété
Voir aussi S'applique à Exemple Spécificités
Cette propriété redimensionne la plage spécifiée. Cette propriété renvoie un objet Range qui représente la plage redimensionnée.

expression.Resize(RowSize, ColumnSize)

expression Obligatoire. Expression qui renvoie un objet Range à redimensionner.

RowSize Argument de type Variant facultatif. Nombre de lignes de la nouvelle plage. Si vous n'avez pas spécifié cet argument, le nombre de lignes de la plage demeure inchangé.

ColumnSize Argument de type Variant facultatif. Nombre de colonnes de la nouvelle plage. Si vous n'avez pas spécifié cet argument, le nombre de colonnes de la plage demeure inchangé.

Exemples
Cet exemple montre comment étendre d'une ligne et d'une colonne la sélection effectuée dans la feuille « Sheet1 ».

Worksheets("Sheet1").Activate
numRows = Selection.Rows.Count
numColumns = Selection.Columns.Count
Selection.Resize(numRows + 1, numColumns + 1).Select
Cet exemple suppose que vous disposez d'un tableau avec ligne d'en-tête dans « Sheet1 ». L'exemple montre comment sélectionner le tableau sans sélectionner la ligne d'en-tête. La cellule active doit se trouver quelque part dans le tableau avant d'exécuter l'exemple.

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
Donc dans votre exemple votre plage serait représentée par Range("A4:AP4").Resize(611)
le 611 pouvant être replacée par une variable As Long contenant 611 bien sûr.
Cordialement.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
766

Statistiques des forums

Discussions
312 595
Messages
2 090 103
Membres
104 378
dernier inscrit
neovo