Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : Problème avec Rows("2:" & ActiveSheet.UsedRange.Rows.Count)...

3 réponses
Avatar
lolobeebop23
Bonjour,

J'ai une feuille excel avec un filtre automatique, et pour chaque choix de filtre, je dois couper/coller les résultats (sans la première ligne) dans une autre feuille. Pour sélectionner les lignes concernées, j'utilise donc :
Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select

Qui fonctionne très bien lorsque le filtre donne des résultats, mais dès que je n'ai aucune ligne correspondant au critère sélectionné, au lieu de me sélectionné les lignes 2 et suivantes, il me sélectionne la 2 et la 1 et me supprime donc mon filtre (ligne 1).

Auriez-vous une solution à me proposer ?

3 réponses

Avatar
LSteph
Bonjour,

Déjà fai ton .copy directement au lieu de faire .select
et si tu filtres utilise plutôt

Activesheet.Cells.SpecialCells(xlCellTypeVisible)

En outre si tu connais déjà tous les choix que tu dois faire pourquoi
ne pas faire une macro correspondant à ces données plutôt que de te
taper chaque choix à la mimine.

Cordialement.

--
LSteph


On 26 juil, 17:03, lolobeebop23 wrote:
Bonjour,

J'ai une feuille excel avec un filtre automatique, et pour chaque choix d e
filtre, je dois couper/coller les résultats (sans la première ligne) dans une
autre feuille. Pour sélectionner les lignes concernées, j'utilise don c  :
Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select

Qui fonctionne très bien lorsque le filtre donne des résultats, mais dès que je
n'ai aucune ligne correspondant au critère sélectionné, au lieu de me
sélectionné les lignes 2 et suivantes, il me sélectionne la 2 et la 1 et me
supprime donc mon filtre (ligne 1).

Auriez-vous une solution à me proposer ?
Avatar
lolobeebop23
LSteph a écrit le 26/07/2010 à 18h49 :
Bonjour,

Déjà fai ton .copy directement au lieu de faire .select
et si tu filtres utilise plutôt

Activesheet.Cells.SpecialCells(xlCellTypeVisible)

En outre si tu connais déjà tous les choix que tu dois faire
pourquoi
ne pas faire une macro correspondant à ces données plutôt
que de te
taper chaque choix à la mimine.

Cordialement.

--
LSteph


On 26 juil, 17:03, lolobeebop23 wrote:
Bonjour,

J'ai une feuille excel avec un filtre automatique, et pour chaque choix d e
filtre, je dois couper/coller les résultats (sans la première
ligne) dans une
autre feuille. Pour sélectionner les lignes concernées,
j'utilise don c  :
Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select

Qui fonctionne très bien lorsque le filtre donne des résultats,
mais dès que je
n'ai aucune ligne correspondant au critère sélectionné,
au lieu de me
sélectionné les lignes 2 et suivantes, il me sélectionne
la 2 et la 1 et me
supprime donc mon filtre (ligne 1).

Auriez-vous une solution à me proposer ?




Bonjour,
Merci pour la réponse. Je réalise déjà une macro pour mes choix de filtre, mais c'est pour copier le résultat que j'avais un problème. Avec cette solution ça ne me sélectionne que la case déjà sélectionnée (même dans le cas où j'ai un résultat à mon filtre).

Je ré-explique :

J'ai un filtre automatique avec plusieurs colonnes :

Code Modèle Type Dimensions ....
123 A B4 12
456 A B6 45
....

Et avec ma macro, je sélectionne d'abord toutes les lignes dont le type est B4 (que je copie dans une autre feuille), puis les lignes dont le code est B6 (que je copie encore dans une autre feuille) et ainsi de suite. Mais le problème c'est qu'il peut arriver qu'il n'y ait aucune ligne de type B5 (par exemple) et avec :"Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select (ou copy)" ça me sélectionne la ligne 2 et du coup (comme y a rien d'autre) la ligne 1 (Code Modèle...) ce que je ne souhaite pas.

Faut-il que j'utilise plutôt une structure conditionnelle ?

Merci pour vos réponses
Avatar
LSteph
Activesheet.Cells.SpecialCells(xlCellTypeVisible).copy


On 27 juil, 09:19, lolobeebop23 wrote:
LSteph a écrit le 26/07/2010 à 18h49 :



> Bonjour,

> Déjà fai ton  .copy directement au lieu de faire  .select
> et si tu filtres utilise plutôt

> Activesheet.Cells.SpecialCells(xlCellTypeVisible)

> En outre si tu connais déjà tous les choix que tu dois faire
> pourquoi
> ne pas faire une macro correspondant à ces données plutôt
> que de te
> taper chaque choix à la mimine.

> Cordialement.

> --
> LSteph

> On 26 juil, 17:03, lolobeebop23  wrote:
>> Bonjour,

>> J'ai une feuille excel avec un filtre automatique, et pour chaque choi x d e
>> filtre, je dois couper/coller les résultats (sans la première
>> ligne)  dans une
>> autre feuille. Pour sélectionner les lignes concernées,
>> j'utilise don c  :
>> Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select

>> Qui fonctionne très bien lorsque le filtre donne des résultats,
>> mais  dès que je
>> n'ai aucune ligne correspondant au critère sélectionné,
>> au lieu de  me
>> sélectionné les lignes 2 et suivantes, il me sélectionne
>> la 2 et la  1 et me
>> supprime donc mon filtre (ligne 1).

>> Auriez-vous une solution à me proposer ?

Bonjour,
Merci pour la réponse. Je réalise déjà une macro pour mes choix d e filtre, mais
c'est pour copier le résultat  que j'avais un problème. Avec cette solution ça
ne me sélectionne que la case déjà sélectionnée (même dans le cas où j'ai un
résultat à mon filtre).

Je ré-explique :

J'ai un filtre automatique avec plusieurs colonnes :

Code    Modèle   Type  Dimensions ....
123         A             B4          12
 456        A             B6           45
...

Et avec ma macro, je sélectionne d'abord toutes les lignes dont le type est B4
(que je copie dans une autre feuille), puis les lignes dont le code est B 6 (que
je copie encore dans une autre feuille) et ainsi de suite. Mais le probl ème
c'est qu'il peut arriver qu'il n'y ait aucune ligne de type B5 (par exemp le) et
avec :"Rows("2:" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Select (ou copy)"
ça me sélectionne la ligne 2 et du coup (comme y a rien d'autre) la l igne 1
(Code Modèle...) ce que je ne souhaite pas.

Faut-il que j'utilise plutôt une structure conditionnelle ?

Merci pour vos réponses- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -