activecell.offset dans un filtre

Le
Shewy_FR_34
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 surcr=
oit
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 !
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #22160361
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 !
Shewy_FR_34
Le #22160421
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 !




Shewy_FR_34
Le #22160411
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 !




Daniel.C
Le #22160511
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 !
Daniel.C
Le #22160571
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 !
Publicité
Poster une réponse
Anonyme