OVH Cloud OVH Cloud

affichage de lignes sous sondition

5 réponses
Avatar
Alain Seveste
Bonjour à tous,

Si vous pouviez donner un coup de main à quelqu'un de pas très doué !
je vous expose mon dilème:

J'ai un classeur qui comporte deux feuilles.

la feuille1 comporte un tableau avec un nombre important de lignes:
en colone A les references, en colone B les désignations et en colone C les
quantités éventuelles

la feuille 2 est prévue pour afficher les même lignes mais uniquement celles
dans lesquelles on a entré une quantité. L'affichage des lignes doit se
faire les unes au dessus des autres et sans espace.

Bon enfin,... ça c'est ce à quoi j'ai pensé, toute suggestion est la
bienvenue :-)

j'ai trouvé quelque chose sur Excelabo ( ci-dessous) qui peux se rapprocher
de ce que je veux, mais c'est peut etre à adapter ! et je ne sais pas trop
par ou il faut que je prenne ça !
----------------
Je souhaiterais supprimer la ligne complète si au début de cette
ligne,
dans la colonne A, il y a le mot "toto". Sub
suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row
To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete Shift:=xlUp
Next lin
End Sub

je m'explique
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row c'est le n°
de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en remontant (step -1)
pourquoi ? parce que si je descends, quand j'ôte une ligne, je me
retrouve
décalé d'un cran et ça me fatique de remonter pour ne pas rater un toto.
cells(lin,1) est la première cellule de la ligne n° lin
J@C
--------------Espérant ne pas avoir été trop confus dans mes explications

Merci par avance

5 réponses

Avatar
Philippe.R
Bonsoir Alain,
Voici ce suggère l'enregistreur de macros sur la base d'un filtre automatique utilisant le critère "non
vide" de la colonne C

Sub Macro2()
Range("C8").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Rows("2:8").Select
Selection.Copy
Sheets("Feuil2").Select
Rows("1:1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

appliquée après chaque mise à jour, cette macro écrasera les données de la feuille 2
Est ce pour toi une piste intéressante ?
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Alain Seveste" a écrit dans le message de
news:3f203c84$0$22763$
Bonjour à tous,

Si vous pouviez donner un coup de main à quelqu'un de pas très doué !
je vous expose mon dilème:

J'ai un classeur qui comporte deux feuilles.

la feuille1 comporte un tableau avec un nombre important de lignes:
en colone A les references, en colone B les désignations et en colone C les
quantités éventuelles

la feuille 2 est prévue pour afficher les même lignes mais uniquement celles
dans lesquelles on a entré une quantité. L'affichage des lignes doit se
faire les unes au dessus des autres et sans espace.

Bon enfin,... ça c'est ce à quoi j'ai pensé, toute suggestion est la
bienvenue :-)

j'ai trouvé quelque chose sur Excelabo ( ci-dessous) qui peux se rapprocher
de ce que je veux, mais c'est peut etre à adapter ! et je ne sais pas trop
par ou il faut que je prenne ça !
----------------
Je souhaiterais supprimer la ligne complète si au début de cette
ligne,
dans la colonne A, il y a le mot "toto". Sub
suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row
To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete Shift:=xlUp
Next lin
End Sub

je m'explique
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row c'est le n°
de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en remontant (step -1)
pourquoi ? parce que si je descends, quand j'ôte une ligne, je me
retrouve
décalé d'un cran et ça me fatique de remonter pour ne pas rater un toto.
cells(lin,1) est la première cellule de la ligne n° lin

--------------Espérant ne pas avoir été trop confus dans mes explications

Merci par avance




Avatar
Alain CROS.
Bonjour.

Ton tableau en feuil1 nommé Table avec en ligne 1 des
entetes Ref,Designation,Quantité par ex.
En Feuille1 F1 --> tu copy colle C1 et en F2 tu inscrit
=">0"
tu nommes F1:F2 Critere
Puis cette petite macro

Sub AfficheLigneSousCondition()
With [Table]
.AdvancedFilter Action:=xlFilterInPlace,
CriteriaRange:=[Critere]
.Copy Worksheets(2).[A1]
.Parent.ShowAllData
End With
End Sub

Alain CROS.

-----Message d'origine-----
Bonjour à tous,

Si vous pouviez donner un coup de main à quelqu'un de pas
très doué !

je vous expose mon dilème:

J'ai un classeur qui comporte deux feuilles.

la feuille1 comporte un tableau avec un nombre important
de lignes:

en colone A les references, en colone B les désignations
et en colone C les

quantités éventuelles

la feuille 2 est prévue pour afficher les même lignes
mais uniquement celles

dans lesquelles on a entré une quantité. L'affichage des
lignes doit se

faire les unes au dessus des autres et sans espace.

Bon enfin,... ça c'est ce à quoi j'ai pensé, toute
suggestion est la

bienvenue :-)

j'ai trouvé quelque chose sur Excelabo ( ci-dessous) qui
peux se rapprocher

de ce que je veux, mais c'est peut etre à adapter ! et je
ne sais pas trop

par ou il faut que je prenne ça !
----------------
Je souhaiterais supprimer la ligne complète si au
début de cette

ligne,
dans la colonne A, il y a le mot "toto". Sub
suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count +
ActiveSheet.UsedRange.Row

To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete
Shift:=xlUp

Next lin
End Sub

je m'explique
ActiveSheet.UsedRange.Rows.Count +
ActiveSheet.UsedRange.Row c'est le n°

de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en
remontant (step -1)

pourquoi ? parce que si je descends, quand j'ôte une
ligne, je me

retrouve
décalé d'un cran et ça me fatique de remonter pour ne
pas rater un toto.

cells(lin,1) est la première cellule de la ligne n°
lin


--------------Espérant ne pas avoir été trop confus dans
mes explications


Merci par avance


.



Avatar
Alain Seveste
Ben la... en fait....c'est un peu confus !

comme indiqué dans mon post je ne suis pas très doué ...mais alors
j'imaginais pas que ce fut à ce point !!
tant pis pour la désillusion ! !

Si tu peux un peu préciser

"Alain CROS." a écrit dans le message de
news:050b01c3522f$f6efb130$
Bonjour.

Ton tableau en feuil1 nommé Table avec en ligne 1 des
entetes Ref,Designation,Quantité par ex.
En Feuille1 F1 --> tu copy colle C1 et en F2 tu inscrit
=">0"
tu nommes F1:F2 Critere
Puis cette petite macro

Sub AfficheLigneSousCondition()
With [Table]
.AdvancedFilter Action:=xlFilterInPlace,
CriteriaRange:=[Critere]
.Copy Worksheets(2).[A1]
.Parent.ShowAllData
End With
End Sub

Alain CROS.

-----Message d'origine-----
Bonjour à tous,

Si vous pouviez donner un coup de main à quelqu'un de pas
très doué !

je vous expose mon dilème:

J'ai un classeur qui comporte deux feuilles.

la feuille1 comporte un tableau avec un nombre important
de lignes:

en colone A les references, en colone B les désignations
et en colone C les

quantités éventuelles

la feuille 2 est prévue pour afficher les même lignes
mais uniquement celles

dans lesquelles on a entré une quantité. L'affichage des
lignes doit se

faire les unes au dessus des autres et sans espace.

Bon enfin,... ça c'est ce à quoi j'ai pensé, toute
suggestion est la

bienvenue :-)

j'ai trouvé quelque chose sur Excelabo ( ci-dessous) qui
peux se rapprocher

de ce que je veux, mais c'est peut etre à adapter ! et je
ne sais pas trop

par ou il faut que je prenne ça !
----------------
Je souhaiterais supprimer la ligne complète si au
début de cette

ligne,
dans la colonne A, il y a le mot "toto". Sub
suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count +
ActiveSheet.UsedRange.Row

To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete
Shift:=xlUp

Next lin
End Sub

je m'explique
ActiveSheet.UsedRange.Rows.Count +
ActiveSheet.UsedRange.Row c'est le n°

de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en
remontant (step -1)

pourquoi ? parce que si je descends, quand j'ôte une
ligne, je me

retrouve
décalé d'un cran et ça me fatique de remonter pour ne
pas rater un toto.

cells(lin,1) est la première cellule de la ligne n°
lin


--------------Espérant ne pas avoir été trop confus dans
mes explications


Merci par avance


.



Avatar
Alain Seveste
Merci pour ta réponse
La résultat final est à peu près ce que j'esperais, toutefois dans le cas
décrit, l'intégralité des autres lignes est masquée ( tu vas me dire c'est
ce qu'on demandait!)... mais cela ne m'arrange pas, peut on éventuellement
définir uniquement une plage de celllules à masquer ??

Alain

"Philippe.R" a écrit dans le message de
news:uCykY$
Bonsoir Alain,
Voici ce suggère l'enregistreur de macros sur la base d'un filtre
automatique utilisant le critère "non

vide" de la colonne C

Sub Macro2()
Range("C8").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Rows("2:8").Select
Selection.Copy
Sheets("Feuil2").Select
Rows("1:1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

appliquée après chaque mise à jour, cette macro écrasera les données de la
feuille 2

Est ce pour toi une piste intéressante ?
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Alain Seveste" a écrit dans le message de
news:3f203c84$0$22763$
Bonjour à tous,

Si vous pouviez donner un coup de main à quelqu'un de pas très doué !
je vous expose mon dilème:

J'ai un classeur qui comporte deux feuilles.

la feuille1 comporte un tableau avec un nombre important de lignes:
en colone A les references, en colone B les désignations et en colone C
les


quantités éventuelles

la feuille 2 est prévue pour afficher les même lignes mais uniquement
celles


dans lesquelles on a entré une quantité. L'affichage des lignes doit se
faire les unes au dessus des autres et sans espace.

Bon enfin,... ça c'est ce à quoi j'ai pensé, toute suggestion est la
bienvenue :-)

j'ai trouvé quelque chose sur Excelabo ( ci-dessous) qui peux se
rapprocher


de ce que je veux, mais c'est peut etre à adapter ! et je ne sais pas
trop


par ou il faut que je prenne ça !
----------------
Je souhaiterais supprimer la ligne complète si au début de cette
ligne,
dans la colonne A, il y a le mot "toto". Sub
suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count +
ActiveSheet.UsedRange.Row


To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete Shift:=xlUp
Next lin
End Sub

je m'explique
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row c'est
le n°


de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en remontant
(step -1)


pourquoi ? parce que si je descends, quand j'ôte une ligne, je me
retrouve
décalé d'un cran et ça me fatique de remonter pour ne pas rater un
toto.


cells(lin,1) est la première cellule de la ligne n° lin

--------------Espérant ne pas avoir été trop confus dans mes
explications



Merci par avance








Avatar
Philippe.R
Bonsoir Alain,
Si ce que tu veux, c'est réafficher la totalité des lignes en feuille1, tu remplaces juste la ligne de
code :

Application.CutCopyMode = False

située à la fin de la macro par :

Sheets("Feuil1").Select
Application.CutCopyMode = False
Selection.AutoFilter Field:=3

Mais as tu absolument besoin d'une macro? Si la mise à jour est très fréquente, cela se comprend,
sinon...
Essaie avec le filtre automatique :
Sélection de la dernière cellule de la colonne C puis Menu / Données / Filtrer / Filtre automatique
Tu cliques sur la petite flèche en haut de colonne C et tu choisis Non vides dans le menu déroulant
Tu copies les lignes affichées, tu vas en Feuille2, tu sélectionne la ligne 1 et tu colles.
Ensuite, de retour dans feuille 1 tu réaffiche toutes les lignes en cliquant de nouveau sur la flèche de
la colonne C et en choisissant Tous

Sinon, je ne comprends pas bien ce que tu veux dire par "définir uniquement une plage de cellules à
masquer"
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Alain Seveste" a écrit dans le message de
news:3f217e8a$0$22763$
Merci pour ta réponse
La résultat final est à peu près ce que j'esperais, toutefois dans le cas
décrit, l'intégralité des autres lignes est masquée ( tu vas me dire c'est
ce qu'on demandait!)... mais cela ne m'arrange pas, peut on éventuellement
définir uniquement une plage de celllules à masquer ??

Alain

"Philippe.R" a écrit dans le message de
news:uCykY$
Bonsoir Alain,
Voici ce suggère l'enregistreur de macros sur la base d'un filtre
automatique utilisant le critère "non

vide" de la colonne C

Sub Macro2()
Range("C8").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Rows("2:8").Select
Selection.Copy
Sheets("Feuil2").Select
Rows("1:1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

appliquée après chaque mise à jour, cette macro écrasera les données de la
feuille 2

Est ce pour toi une piste intéressante ?
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Alain Seveste" a écrit dans le message de
news:3f203c84$0$22763$
Bonjour à tous,

Si vous pouviez donner un coup de main à quelqu'un de pas très doué !
je vous expose mon dilème:

J'ai un classeur qui comporte deux feuilles.

la feuille1 comporte un tableau avec un nombre important de lignes:
en colone A les references, en colone B les désignations et en colone C
les


quantités éventuelles

la feuille 2 est prévue pour afficher les même lignes mais uniquement
celles


dans lesquelles on a entré une quantité. L'affichage des lignes doit se
faire les unes au dessus des autres et sans espace.

Bon enfin,... ça c'est ce à quoi j'ai pensé, toute suggestion est la
bienvenue :-)

j'ai trouvé quelque chose sur Excelabo ( ci-dessous) qui peux se
rapprocher


de ce que je veux, mais c'est peut etre à adapter ! et je ne sais pas
trop


par ou il faut que je prenne ça !
----------------
Je souhaiterais supprimer la ligne complète si au début de cette
ligne,
dans la colonne A, il y a le mot "toto". Sub
suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count +
ActiveSheet.UsedRange.Row


To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete Shift:=xlUp
Next lin
End Sub

je m'explique
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row c'est
le n°


de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en remontant
(step -1)


pourquoi ? parce que si je descends, quand j'ôte une ligne, je me
retrouve
décalé d'un cran et ça me fatique de remonter pour ne pas rater un
toto.


cells(lin,1) est la première cellule de la ligne n° lin

--------------Espérant ne pas avoir été trop confus dans mes
explications



Merci par avance