VBA Selection de plage entre dates...bis pour petite correction éventuelle
4 réponses
Domi
Bonjour à tous,
Bien que découlant de mon post précèdent "VBA Sélection de plage entre
dates", je préfère faire une nouvelle demande.
Alain Vallon m'a proposé hier ces deux codes pour sélectionner des plages
variables entre dates.
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en
B=Aujourdhui - 5
'Pour la feuille active
Range("B11:H" & Evaluate("Match(" & (Date * 1) - 5 & ", B11:B1000, 0)")
+10).Select
'Pour la plage Bzz:Bxx ou zz est la ligne dont la date en B=Aujourdhui - 25
et xx est celle dont la date en B=Aujourdhui - 10
'Pour la feuille active (sur une seule ligne de code) :
Range("B" & Evaluate("Match(" & (Date * 1) - 25 & ", B:B, 0)") & ":H" &
Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select
Je n'avais pas précisé que la colonne B ne contient pas tous les jours
calendaires mais uniquement les jours ouvrés
Après quelques tests je me suis aperçu que la macro plantait si la date
recherchée n'existait pas (si nous sommes jeudi : la date recherchée est un
dimanche : plantage...) Y aurait-il un moyen d'éviter cela en sélectionnant
non pas une date précise mais la date la plus proche ?
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
Philippe.R
Bonjour Domi, Peut être peux tu essayer en modifiant cette ligne : Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select de cette manière : Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 1)")).Select -- Amicales Salutations
Retirer A_S_ pour répondre. XL97 / XL2002
"Domi" a écrit dans le message de news:%
Bonjour à tous,
Bien que découlant de mon post précèdent "VBA Sélection de plage entre dates", je préfère faire une nouvelle demande. Alain Vallon m'a proposé hier ces deux codes pour sélectionner des plages variables entre dates.
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en B=Aujourdhui - 5 'Pour la feuille active Range("B11:H" & Evaluate("Match(" & (Date * 1) - 5 & ", B11:B1000, 0)") +10).Select
'Pour la plage Bzz:Bxx ou zz est la ligne dont la date en B=Aujourdhui - 25 et xx est celle dont la date en B=Aujourdhui - 10 'Pour la feuille active (sur une seule ligne de code) : Range("B" & Evaluate("Match(" & (Date * 1) - 25 & ", B:B, 0)") & ":H" & Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select
Je n'avais pas précisé que la colonne B ne contient pas tous les jours calendaires mais uniquement les jours ouvrés Après quelques tests je me suis aperçu que la macro plantait si la date recherchée n'existait pas (si nous sommes jeudi : la date recherchée est un dimanche : plantage...) Y aurait-il un moyen d'éviter cela en sélectionnant non pas une date précise mais la date la plus proche ?
Merci Domi
Bonjour Domi,
Peut être peux tu essayer en modifiant cette ligne :
Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select
de cette manière :
Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 1)")).Select
--
Amicales Salutations
A_S_rauphil@wanadoo.fr
Retirer A_S_ pour répondre.
XL97 / XL2002
"Domi" <scrat83@free.fr> a écrit dans le message de news:%23zs0TfLsDHA.2084@TK2MSFTNGP12.phx.gbl...
Bonjour à tous,
Bien que découlant de mon post précèdent "VBA Sélection de plage entre
dates", je préfère faire une nouvelle demande.
Alain Vallon m'a proposé hier ces deux codes pour sélectionner des plages
variables entre dates.
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en
B=Aujourdhui - 5
'Pour la feuille active
Range("B11:H" & Evaluate("Match(" & (Date * 1) - 5 & ", B11:B1000, 0)")
+10).Select
'Pour la plage Bzz:Bxx ou zz est la ligne dont la date en B=Aujourdhui - 25
et xx est celle dont la date en B=Aujourdhui - 10
'Pour la feuille active (sur une seule ligne de code) :
Range("B" & Evaluate("Match(" & (Date * 1) - 25 & ", B:B, 0)") & ":H" &
Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select
Je n'avais pas précisé que la colonne B ne contient pas tous les jours
calendaires mais uniquement les jours ouvrés
Après quelques tests je me suis aperçu que la macro plantait si la date
recherchée n'existait pas (si nous sommes jeudi : la date recherchée est un
dimanche : plantage...) Y aurait-il un moyen d'éviter cela en sélectionnant
non pas une date précise mais la date la plus proche ?
Bonjour Domi, Peut être peux tu essayer en modifiant cette ligne : Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select de cette manière : Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 1)")).Select -- Amicales Salutations
Retirer A_S_ pour répondre. XL97 / XL2002
"Domi" a écrit dans le message de news:%
Bonjour à tous,
Bien que découlant de mon post précèdent "VBA Sélection de plage entre dates", je préfère faire une nouvelle demande. Alain Vallon m'a proposé hier ces deux codes pour sélectionner des plages variables entre dates.
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en B=Aujourdhui - 5 'Pour la feuille active Range("B11:H" & Evaluate("Match(" & (Date * 1) - 5 & ", B11:B1000, 0)") +10).Select
'Pour la plage Bzz:Bxx ou zz est la ligne dont la date en B=Aujourdhui - 25 et xx est celle dont la date en B=Aujourdhui - 10 'Pour la feuille active (sur une seule ligne de code) : Range("B" & Evaluate("Match(" & (Date * 1) - 25 & ", B:B, 0)") & ":H" & Evaluate("Match(" & (Date * 1) - 10 & ", B:B, 0)")).Select
Je n'avais pas précisé que la colonne B ne contient pas tous les jours calendaires mais uniquement les jours ouvrés Après quelques tests je me suis aperçu que la macro plantait si la date recherchée n'existait pas (si nous sommes jeudi : la date recherchée est un dimanche : plantage...) Y aurait-il un moyen d'éviter cela en sélectionnant non pas une date précise mais la date la plus proche ?
Merci Domi
AV
Comme on est encore dans la période de garantie, dans le cadre du SAV :
La référence est la date du jour ou la plus proche au-dessous Comme tu n'as pas précisé "...la date la plus proche...", j'ai fais un choix ! Pour la date exacte ou la plus proche au-dessus, fais signe...
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en B=Aujourdhui - 5
'Pour la plage Bzz:Bxx ou zz est la ligne dont la date en B=Aujourdhui - 25 et xx est celle dont la date en B=Aujourdhui - 10
z = Evaluate("match(max(if(B11:B1000<=" & (Date * 1) - 25 & ",B11:B1000)),B11:B1000,0)") Range("B" & z & ":B" & z + 15).Select
AV
Comme on est encore dans la période de garantie, dans le cadre du SAV :
La référence est la date du jour ou la plus proche au-dessous
Comme tu n'as pas précisé "...la date la plus proche...", j'ai fais un choix !
Pour la date exacte ou la plus proche au-dessus, fais signe...
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en
B=Aujourdhui - 5
Comme on est encore dans la période de garantie, dans le cadre du SAV :
La référence est la date du jour ou la plus proche au-dessous Comme tu n'as pas précisé "...la date la plus proche...", j'ai fais un choix ! Pour la date exacte ou la plus proche au-dessus, fais signe...
'Sélectionner la plage B11:Hxx ou la ligne xx est celle dont la date en B=Aujourdhui - 5