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

activecell.offset dans un filtre

5 réponses
Avatar
Shewy_FR_34
Bonjour =E0 tous.

Je relance mon sujet, un peu par empressement je dois l'admettre, m=EAme =

si je sais que tout le monde ici est b=E9n=E9vole et nous sommes de surcr=
oit=20
le wend ... Je tiens =E0 m'en excuser !

La petite macro qui provoque ce gros probl=E8me s'inscrit dans un tr=E9s =

gros traitement. Seul ce petit sub coince ... et je suis donc =E0 l'arr=EA=
t.=20
l'amont et l'aval du projet =E9tant termin=E9 et fonctionnel.


J'ai cette petite macro :

-------------------------------------------------------
> Function testNEGATIF(NB_SUPPORT)
> 'NB_SUPPORT =3D "43"
> 'Dim tabres(4)
>
> Range("B1").Select
> ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=3D2, Criteria1:=3D=
NB_SUPPORT
>
> 'On recherche dans la colonne H la plus grande des valeurs n=E9gatives =
pour les seuls crit=E8res affich=E9s
> Range("H1").Select
>
> val_max =3D 0
> ref_ligne =3D ""
>
> While ActiveCell.Offset(1, 0).Value > 0
> ActiveCell.Offset(1, 0).Select
>
> If Val(ActiveCell.Value) < 0 Then
>
> If Val(ActiveCell.Value) < val_max Then
> val_max =3D Val(ActiveCell.Value)
> ref_ligne =3D ActiveCell.Address
> End If
> Else
> 'MsgBox "valeur POSITIVE"
>
> End If
>
> Wend
>
> Range(ref_ligne).Select
> LIGNE =3D ActiveCell.Row
> Range("E" & LIGNE & ":N" & LIGNE).Select
> Selection.Copy
>
>
> End Function


-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des=20
lignes filtr=E9es ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules=20
uniquement affich=E9 grace au filtre ?

Merci de votre aide !

5 réponses

Avatar
Daniel.C
Bonjour.
Tu peux utiliser :

Sub test()
Set plage = Intersect([_filterdatabase], [H:H])
MsgBox Application.Subtotal(104, plage)
End Sub

ou, pour coller d'avantage à ton code :

If Val(ActiveCell.Value) > 0 And ActiveCell.Hidden = False Then

Cordialement.
Daniel

Bonjour à tous.

Je relance mon sujet, un peu par empressement je dois l'admettre, même si je
sais que tout le monde ici est bénévole et nous sommes de surcroit le wend
... Je tiens à m'en excuser !

La petite macro qui provoque ce gros problème s'inscrit dans un trés gros
traitement. Seul ce petit sub coince ... et je suis donc à l'arrêt. l'amont
et l'aval du projet étant terminé et fonctionnel.


J'ai cette petite macro :

-------------------------------------------------------
Function testNEGATIF(NB_SUPPORT)
'NB_SUPPORT = "43"
'Dim tabres(4)

Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=2,
Criteria1:=NB_SUPPORT

'On recherche dans la colonne H la plus grande des valeurs négatives pour
les seuls critères affichés
Range("H1").Select

val_max = 0
ref_ligne = ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) < 0 Then

If Val(ActiveCell.Value) < val_max Then
val_max = Val(ActiveCell.Value)
ref_ligne = ActiveCell.Address
End If
Else
'MsgBox "valeur POSITIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE = ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy


End Function




-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des lignes
filtrées ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules uniquement
affiché grace au filtre ?

Merci de votre aide !
Avatar
Shewy_FR_34
Bonjour Daniel.

Des 2 propositions aucune ne fonctionne.

Sur la première, j'ai un retour "0" au msgbox ...

Sur la seconde un message d'erreur "Err.1004 - Impossible de lire la
propriété Hidden de la classe range"

Merci par avance de ton aide.




Le 24/05/2010 12:25, Daniel.C a écrit :
Bonjour.
Tu peux utiliser :

Sub test()
Set plage = Intersect([_filterdatabase], [H:H])
MsgBox Application.Subtotal(104, plage)
End Sub

ou, pour coller d'avantage à ton code :

If Val(ActiveCell.Value) > 0 And ActiveCell.Hidden = False Then

Cordialement.
Daniel

Bonjour à tous.

Je relance mon sujet, un peu par empressement je dois l'admettre, mê me
si je sais que tout le monde ici est bénévole et nous sommes de
surcroit le wend ... Je tiens à m'en excuser !

La petite macro qui provoque ce gros problème s'inscrit dans un tré s
gros traitement. Seul ce petit sub coince ... et je suis donc à
l'arrêt. l'amont et l'aval du projet étant terminé et fonctionne l.


J'ai cette petite macro :

-------------------------------------------------------
Function testNEGATIF(NB_SUPPORT)
'NB_SUPPORT = "43"
'Dim tabres(4)

Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=2,
Criteria1:=NB_SUPPORT

'On recherche dans la colonne H la plus grande des valeurs négative s
pour les seuls critères affichés
Range("H1").Select

val_max = 0
ref_ligne = ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) < 0 Then

If Val(ActiveCell.Value) < val_max Then
val_max = Val(ActiveCell.Value)
ref_ligne = ActiveCell.Address
End If
Else
'MsgBox "valeur POSITIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE = ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy


End Function




-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des
lignes filtrées ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules
uniquement affiché grace au filtre ?

Merci de votre aide !




Avatar
Shewy_FR_34
PS : j'ai trouvé cette instruction sur GG :

Set rngSelect = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeVisible )

Celle-ci me renvoi :
Debug.Print rngSelect.Address

$A$1:$N$1,$A$82:$N$85,$A$114:$N$121

mis à pars copié collé dans un feuille cette zone pour ensuite fair e mon
while, je ne vois pas comment je pourrai me balder dans cette zone.
Un "truc" du style :

While rngSelect.ActiveCell.Offset(1, 0).Value > 0
If Val(rngSelect.ActiveCell.Value)

hum ...

Le 24/05/2010 12:25, Daniel.C a écrit :
Bonjour.
Tu peux utiliser :

Sub test()
Set plage = Intersect([_filterdatabase], [H:H])
MsgBox Application.Subtotal(104, plage)
End Sub

ou, pour coller d'avantage à ton code :

If Val(ActiveCell.Value) > 0 And ActiveCell.Hidden = False Then

Cordialement.
Daniel

Bonjour à tous.

Je relance mon sujet, un peu par empressement je dois l'admettre, mê me
si je sais que tout le monde ici est bénévole et nous sommes de
surcroit le wend ... Je tiens à m'en excuser !

La petite macro qui provoque ce gros problème s'inscrit dans un tré s
gros traitement. Seul ce petit sub coince ... et je suis donc à
l'arrêt. l'amont et l'aval du projet étant terminé et fonctionne l.


J'ai cette petite macro :

-------------------------------------------------------
Function testNEGATIF(NB_SUPPORT)
'NB_SUPPORT = "43"
'Dim tabres(4)

Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=2,
Criteria1:=NB_SUPPORT

'On recherche dans la colonne H la plus grande des valeurs négative s
pour les seuls critères affichés
Range("H1").Select

val_max = 0
ref_ligne = ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) < 0 Then

If Val(ActiveCell.Value) < val_max Then
val_max = Val(ActiveCell.Value)
ref_ligne = ActiveCell.Address
End If
Else
'MsgBox "valeur POSITIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE = ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy


End Function




-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des
lignes filtrées ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules
uniquement affiché grace au filtre ?

Merci de votre aide !




Avatar
Daniel.C
Peux-tu mettre un classeur exemple sur www.cijoint.fr et poster ici le
lien généré?
Daniel

Bonjour Daniel.

Des 2 propositions aucune ne fonctionne.

Sur la première, j'ai un retour "0" au msgbox ...

Sur la seconde un message d'erreur "Err.1004 - Impossible de lire la
propriété Hidden de la classe range"

Merci par avance de ton aide.




Le 24/05/2010 12:25, Daniel.C a écrit :
Bonjour.
Tu peux utiliser :

Sub test()
Set plage = Intersect([_filterdatabase], [H:H])
MsgBox Application.Subtotal(104, plage)
End Sub

ou, pour coller d'avantage à ton code :

If Val(ActiveCell.Value) > 0 And ActiveCell.Hidden = False Then

Cordialement.
Daniel

Bonjour à tous.

Je relance mon sujet, un peu par empressement je dois l'admettre, même
si je sais que tout le monde ici est bénévole et nous sommes de
surcroit le wend ... Je tiens à m'en excuser !

La petite macro qui provoque ce gros problème s'inscrit dans un trés
gros traitement. Seul ce petit sub coince ... et je suis donc à
l'arrêt. l'amont et l'aval du projet étant terminé et fonctionnel.


J'ai cette petite macro :

-------------------------------------------------------
Function testNEGATIF(NB_SUPPORT)
'NB_SUPPORT = "43"
'Dim tabres(4)

Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=2,
Criteria1:=NB_SUPPORT

'On recherche dans la colonne H la plus grande des valeurs négatives
pour les seuls critères affichés
Range("H1").Select

val_max = 0
ref_ligne = ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) < 0 Then

If Val(ActiveCell.Value) < val_max Then
val_max = Val(ActiveCell.Value)
ref_ligne = ActiveCell.Address
End If
Else
'MsgBox "valeur POSITIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE = ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy


End Function




-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des
lignes filtrées ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules
uniquement affiché grace au filtre ?

Merci de votre aide !
Avatar
Daniel.C
Pour la seconde proposition, il faut mettre :
If Val(ActiveCell.Value) > 0 And ActiveCell.EntireRow.Hidden = False
Then
Sinon, regarde le classeur suivant :
les deux macros fonctionnent :
http://www.cijoint.fr/cjlink.php?file=cj201005/cij5c0j7NB.xls
Daniel

Bonjour.
Tu peux utiliser :

Sub test()
Set plage = Intersect([_filterdatabase], [H:H])
MsgBox Application.Subtotal(104, plage)
End Sub

ou, pour coller d'avantage à ton code :

If Val(ActiveCell.Value) > 0 And ActiveCell.Hidden = False Then

Cordialement.
Daniel

Bonjour à tous.

Je relance mon sujet, un peu par empressement je dois l'admettre, même si
je sais que tout le monde ici est bénévole et nous sommes de surcroit le
wend ... Je tiens à m'en excuser !

La petite macro qui provoque ce gros problème s'inscrit dans un trés gros
traitement. Seul ce petit sub coince ... et je suis donc à l'arrêt. l'amont
et l'aval du projet étant terminé et fonctionnel.


J'ai cette petite macro :

-------------------------------------------------------
Function testNEGATIF(NB_SUPPORT)
'NB_SUPPORT = "43"
'Dim tabres(4)

Range("B1").Select
ActiveSheet.Range("$B$1:$B$65536").AutoFilter Field:=2,
Criteria1:=NB_SUPPORT

'On recherche dans la colonne H la plus grande des valeurs négatives pour
les seuls critères affichés
Range("H1").Select

val_max = 0
ref_ligne = ""

While ActiveCell.Offset(1, 0).Value > 0
ActiveCell.Offset(1, 0).Select

If Val(ActiveCell.Value) < 0 Then

If Val(ActiveCell.Value) < val_max Then
val_max = Val(ActiveCell.Value)
ref_ligne = ActiveCell.Address
End If
Else
'MsgBox "valeur POSITIVE"

End If

Wend

Range(ref_ligne).Select
LIGNE = ActiveCell.Row
Range("E" & LIGNE & ":N" & LIGNE).Select
Selection.Copy


End Function




-------------------------------------------------------

Mais le soucis c'est que mon activecell.offset ne tiens pas compte des
lignes filtrées ou de celles qui ne le sont pas !

Comment faire pour se balader avec activecell sur les cellules uniquement
affiché grace au filtre ?

Merci de votre aide !