Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-François Aubert
Salut Domi,
remplacer par "" tout ce qui est <> de "Prévis."
J'ai testé 3 manières différentes (RienQuePrévis1-2-3), à tester 1 fois après avoir exécuté Sub peu() et 1 fois après avoir exécuté Sub beaucoup()
Qui dit mieux, en partant des 2 sub de préparations (Sub peu() et Sub beaucoup() ?
'********************************* Sub RienQuePrévis1() ' si dans la plage A20:A6500 '10 blocs de 10 cellules sont à remplacer par "" : 7 secondes 'sub peu
' si toutes les valeurs de A20:A6500 'sauf 10 blocs de 10 cellules sont à remplacer par "" : 1 secondes 'sub beaucoup
td = Time Set Rng = Range("A3:A65536") Do début: On Error GoTo fin r = Application.Match("Prévis.", Rng, 0) If r = 1 Then GoTo saute If Rng(r - 1) = "Prévis." Then Set Rng = _ Range(Rng(r + 1).Address & ":A65536"): GoTo début If IsError(r) = False Then Range(Rng(r - 1).Address _ & ":" & Rng(r - (r - 1)).Address).ClearContents saute: Set Rng = Range(Rng(r + 1).Address & ":A65536") Loop While IsError(r) = False fin: Rng.ClearContents Set Rng = Nothing tf = Time MsgBox "effectué en : " & CDate(tf - td) End Sub '............................................................................. Sub RienQuePrévis2() ' si dans la plage A20:A6500 '10 blocs de 10 cellules sont à remplacer par "" : 2 secondes 'sub peu
' si toutes les valeurs de A20:A6500 'sauf 10 blocs de 10 cellules sont à remplacer par "" : 18 secondes 'sub beaucoup
td = Time Set Rng = Range("A3:A65536") For Each c In Rng If c <> "Prévis." Then c.ClearContents Next Set Rng = Nothing tf = Time MsgBox "effectué en : " & CDate(tf - td) End Sub '....................................................................... Sub RienQuePrévis3() ' si dans la plage A20:A6500 '10 blocs de 10 cellules sont à remplacer par "" : 8 secondes 'sub peu
' si toutes les valeurs de A20:A6500 'sauf 10 blocs de 10 cellules sont à remplacer par "" : 4 secondes 'sub beaucoup
Est-il possible d'utiliser une syntaxe similaire et surtout aussi rapide qui permettent de remplacer par "" tout ce qui est <> de "Prévis."
Merci Domi
Salut Domi,
remplacer par "" tout ce qui est <> de "Prévis."
J'ai testé 3 manières différentes (RienQuePrévis1-2-3),
à tester 1 fois après avoir exécuté Sub peu()
et 1 fois après avoir exécuté Sub beaucoup()
Qui dit mieux, en partant des 2 sub de préparations (Sub peu()
et Sub beaucoup() ?
'*********************************
Sub RienQuePrévis1()
' si dans la plage A20:A6500
'10 blocs de 10 cellules sont à remplacer par "" : 7 secondes
'sub peu
' si toutes les valeurs de A20:A6500
'sauf 10 blocs de 10 cellules sont à remplacer par "" : 1 secondes
'sub beaucoup
td = Time
Set Rng = Range("A3:A65536")
Do
début:
On Error GoTo fin
r = Application.Match("Prévis.", Rng, 0)
If r = 1 Then GoTo saute
If Rng(r - 1) = "Prévis." Then Set Rng = _
Range(Rng(r + 1).Address & ":A65536"): GoTo début
If IsError(r) = False Then Range(Rng(r - 1).Address _
& ":" & Rng(r - (r - 1)).Address).ClearContents
saute:
Set Rng = Range(Rng(r + 1).Address & ":A65536")
Loop While IsError(r) = False
fin:
Rng.ClearContents
Set Rng = Nothing
tf = Time
MsgBox "effectué en : " & CDate(tf - td)
End Sub
'.............................................................................
Sub RienQuePrévis2()
' si dans la plage A20:A6500
'10 blocs de 10 cellules sont à remplacer par "" : 2 secondes
'sub peu
' si toutes les valeurs de A20:A6500
'sauf 10 blocs de 10 cellules sont à remplacer par "" : 18 secondes
'sub beaucoup
td = Time
Set Rng = Range("A3:A65536")
For Each c In Rng
If c <> "Prévis." Then c.ClearContents
Next
Set Rng = Nothing
tf = Time
MsgBox "effectué en : " & CDate(tf - td)
End Sub
'.......................................................................
Sub RienQuePrévis3()
' si dans la plage A20:A6500
'10 blocs de 10 cellules sont à remplacer par "" : 8 secondes
'sub peu
' si toutes les valeurs de A20:A6500
'sauf 10 blocs de 10 cellules sont à remplacer par "" : 4 secondes
'sub beaucoup
J'ai testé 3 manières différentes (RienQuePrévis1-2-3), à tester 1 fois après avoir exécuté Sub peu() et 1 fois après avoir exécuté Sub beaucoup()
Qui dit mieux, en partant des 2 sub de préparations (Sub peu() et Sub beaucoup() ?
'********************************* Sub RienQuePrévis1() ' si dans la plage A20:A6500 '10 blocs de 10 cellules sont à remplacer par "" : 7 secondes 'sub peu
' si toutes les valeurs de A20:A6500 'sauf 10 blocs de 10 cellules sont à remplacer par "" : 1 secondes 'sub beaucoup
td = Time Set Rng = Range("A3:A65536") Do début: On Error GoTo fin r = Application.Match("Prévis.", Rng, 0) If r = 1 Then GoTo saute If Rng(r - 1) = "Prévis." Then Set Rng = _ Range(Rng(r + 1).Address & ":A65536"): GoTo début If IsError(r) = False Then Range(Rng(r - 1).Address _ & ":" & Rng(r - (r - 1)).Address).ClearContents saute: Set Rng = Range(Rng(r + 1).Address & ":A65536") Loop While IsError(r) = False fin: Rng.ClearContents Set Rng = Nothing tf = Time MsgBox "effectué en : " & CDate(tf - td) End Sub '............................................................................. Sub RienQuePrévis2() ' si dans la plage A20:A6500 '10 blocs de 10 cellules sont à remplacer par "" : 2 secondes 'sub peu
' si toutes les valeurs de A20:A6500 'sauf 10 blocs de 10 cellules sont à remplacer par "" : 18 secondes 'sub beaucoup
td = Time Set Rng = Range("A3:A65536") For Each c In Rng If c <> "Prévis." Then c.ClearContents Next Set Rng = Nothing tf = Time MsgBox "effectué en : " & CDate(tf - td) End Sub '....................................................................... Sub RienQuePrévis3() ' si dans la plage A20:A6500 '10 blocs de 10 cellules sont à remplacer par "" : 8 secondes 'sub peu
' si toutes les valeurs de A20:A6500 'sauf 10 blocs de 10 cellules sont à remplacer par "" : 4 secondes 'sub beaucoup
Sub zzzzz() Application.ScreenUpdating = False Range("A1", [A65536].End(3)).AutoFilter Field:=1, Criteria1:="<>*Prévis.*" Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible) = "" [A1].AutoFilter End Sub
J'ai pas fait de tests comparatifs mais ça devrait "pédaler" AV
Jean-François Aubert
Salut Alain,
Non seulement ça "pédale", mais ça "pédale dopé". (< 1 seconde dans tous les cas de figure)
Bonjour à tous,
Je suis très mal parti avec ma Sub RienQuePrévis3() qui utilise un filtre.En effet j'avais installé le filtre en ayant que A3 de sélectionné, une grave erreur qui m'a aiguillé sur une façon de faire longue, sinueuse et maladroite.
Mes 3 procs sont donc à classer dans les exemples à ne pas faire.
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"AV" a écrit dans le message de news:bo1t7l$q5u$
En adaptant la plage :
Sub zzzzz() Application.ScreenUpdating = False Range("A1", [A65536].End(3)).AutoFilter Field:=1, Criteria1:="<>*Prévis.*" Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible) = "" [A1].AutoFilter End Sub
J'ai pas fait de tests comparatifs mais ça devrait "pédaler" AV
Salut Alain,
Non seulement ça "pédale", mais ça "pédale dopé".
(< 1 seconde dans tous les cas de figure)
Bonjour à tous,
Je suis très mal parti avec ma Sub RienQuePrévis3()
qui utilise un filtre.En effet j'avais installé le filtre en ayant que
A3 de sélectionné, une grave erreur qui m'a aiguillé sur une façon
de faire longue, sinueuse et maladroite.
Mes 3 procs sont donc à classer dans les exemples à ne pas faire.
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de
news:bo1t7l$q5u$1@news-reader1.wanadoo.fr...
En adaptant la plage :
Sub zzzzz()
Application.ScreenUpdating = False
Range("A1", [A65536].End(3)).AutoFilter Field:=1, Criteria1:="<>*Prévis.*"
Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible) = ""
[A1].AutoFilter
End Sub
J'ai pas fait de tests comparatifs mais ça devrait "pédaler"
AV
Non seulement ça "pédale", mais ça "pédale dopé". (< 1 seconde dans tous les cas de figure)
Bonjour à tous,
Je suis très mal parti avec ma Sub RienQuePrévis3() qui utilise un filtre.En effet j'avais installé le filtre en ayant que A3 de sélectionné, une grave erreur qui m'a aiguillé sur une façon de faire longue, sinueuse et maladroite.
Mes 3 procs sont donc à classer dans les exemples à ne pas faire.
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"AV" a écrit dans le message de news:bo1t7l$q5u$
En adaptant la plage :
Sub zzzzz() Application.ScreenUpdating = False Range("A1", [A65536].End(3)).AutoFilter Field:=1, Criteria1:="<>*Prévis.*" Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible) = "" [A1].AutoFilter End Sub
J'ai pas fait de tests comparatifs mais ça devrait "pédaler" AV
Domi
Effectivement, ça pédale...mais ça pédale vite ! chez moi pour 18000 lignes c'est presque instantané.. Merci Domi
"AV" a écrit dans le message de news: bo1t7l$q5u$
En adaptant la plage :
Sub zzzzz() Application.ScreenUpdating = False Range("A1", [A65536].End(3)).AutoFilter Field:=1, Criteria1:="<>*Prévis.*" Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible) = "" [A1].AutoFilter End Sub
J'ai pas fait de tests comparatifs mais ça devrait "pédaler" AV
Effectivement, ça pédale...mais ça pédale vite ! chez moi pour 18000 lignes
c'est presque instantané..
Merci
Domi
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
bo1t7l$q5u$1@news-reader1.wanadoo.fr...
En adaptant la plage :
Sub zzzzz()
Application.ScreenUpdating = False
Range("A1", [A65536].End(3)).AutoFilter Field:=1, Criteria1:="<>*Prévis.*"
Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible) = ""
[A1].AutoFilter
End Sub
J'ai pas fait de tests comparatifs mais ça devrait "pédaler"
AV