OVH Cloud OVH Cloud

VBA passage en dur de dates renvoyées par une formule matricielle

6 réponses
Avatar
Domi
Bonjour à tous,
AV m'a proposé ce code pour faire un calcul sur plage avec une matricielle
de facon rapide.

Sub Date1()
derL = [A65536].End(3).Row
'pour accélérer !
Application.Calculation = xlCalculationManual
[J16].FormulaArray =
"=IF(ISERROR(SMALL(IF(RC1=ApprosArt,ApprosDate,""""),R14C[2])),"""",SMALL(IF
(RC1=ApprosArt,ApprosDate,""""),R14C[2]))"
[J16].AutoFill Destination:=Range("J16:J" & derL)
Application.Calculation = xlCalculationAutomatic
Range("J16:J" & derL) = Range("J16:J" & derL).Value
'Range("J16:J" & derL).NumberFormat = "dd/mm/yy" 'tentative pour essayer de
remedier au pb masi sans succes :o(

Dans ce cas précis la formule renvoie des dates
Hélas lorsue en fin de macro elles sont figées, elles deviennent
"américaines" !
17/09/03 devient 9/17/2003
29/09/03 devient 9/29/2003
09/10/03 devient 10/09/2003
etc

Y-a-il une explication logique à cela ?
Y-a-t'il un moyen simple de contourner cela ?
j'y arrive en faisant une copie/Collage des valeurs à la place de
Range("J16:J" & derL) = Range("J16:J" & derL).Value mais il y a peut-être
plus simple

Merci
Domi

6 réponses

Avatar
Frédéric Sigonneau
Bonjour,

Essaye d'utiliser la propriété (méconnue, trouv'je, mais très utile avec les
dates) Value2 :

Range("J16:J" & derL).Value2 = Range("J16:J" & derL).Value2
+ éventuellement
Range("J16:J" & derL).NumberFormat = "dd/mm/yy"

Dans le cas de dates, la propriété Value2 contient leur numéro de série (elle
est donc insensible à l'américanisation automatique des dates en VBA).

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,
AV m'a proposé ce code pour faire un calcul sur plage avec une matricielle
de facon rapide.

Sub Date1()
derL = [A65536].End(3).Row
'pour accélérer !
Application.Calculation = xlCalculationManual
[J16].FormulaArray > "=IF(ISERROR(SMALL(IF(RC1=ApprosArt,ApprosDate,""""),R14C[2])),"""",SMALL(IF
(RC1=ApprosArt,ApprosDate,""""),R14C[2]))"
[J16].AutoFill Destination:=Range("J16:J" & derL)
Application.Calculation = xlCalculationAutomatic
Range("J16:J" & derL) = Range("J16:J" & derL).Value
'Range("J16:J" & derL).NumberFormat = "dd/mm/yy" 'tentative pour essayer de
remedier au pb masi sans succes :o(

Dans ce cas précis la formule renvoie des dates
Hélas lorsue en fin de macro elles sont figées, elles deviennent
"américaines" !
17/09/03 devient 9/17/2003
29/09/03 devient 9/29/2003
09/10/03 devient 10/09/2003
etc

Y-a-il une explication logique à cela ?
Y-a-t'il un moyen simple de contourner cela ?
j'y arrive en faisant une copie/Collage des valeurs à la place de
Range("J16:J" & derL) = Range("J16:J" & derL).Value mais il y a peut-être
plus simple

Merci
Domi


Avatar
Domi
Y a du mieux, pas de plantage et mes dates restent bien de chez nous ! mais
y a du moins bien ! toute la plage prend la valeur de la première cellule de
la plage !!!

Ps : apprécie beaucoup ton site ;o).
Domi

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonjour,

Essaye d'utiliser la propriété (méconnue, trouv'je, mais très utile avec
les

dates) Value2 :

Range("J16:J" & derL).Value2 = Range("J16:J" & derL).Value2
+ éventuellement
Range("J16:J" & derL).NumberFormat = "dd/mm/yy"

Dans le cas de dates, la propriété Value2 contient leur numéro de série
(elle

est donc insensible à l'américanisation automatique des dates en VBA).

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,
AV m'a proposé ce code pour faire un calcul sur plage avec une
matricielle


de facon rapide.

Sub Date1()
derL = [A65536].End(3).Row
'pour accélérer !
Application.Calculation = xlCalculationManual
[J16].FormulaArray > >
"=IF(ISERROR(SMALL(IF(RC1=ApprosArt,ApprosDate,""""),R14C[2])),"""",SMALL(IF


(RC1=ApprosArt,ApprosDate,""""),R14C[2]))"
[J16].AutoFill Destination:=Range("J16:J" & derL)
Application.Calculation = xlCalculationAutomatic
Range("J16:J" & derL) = Range("J16:J" & derL).Value
'Range("J16:J" & derL).NumberFormat = "dd/mm/yy" 'tentative pour essayer
de


remedier au pb masi sans succes :o(

Dans ce cas précis la formule renvoie des dates
Hélas lorsue en fin de macro elles sont figées, elles deviennent
"américaines" !
17/09/03 devient 9/17/2003
29/09/03 devient 9/29/2003
09/10/03 devient 10/09/2003
etc

Y-a-il une explication logique à cela ?
Y-a-t'il un moyen simple de contourner cela ?
j'y arrive en faisant une copie/Collage des valeurs à la place de
Range("J16:J" & derL) = Range("J16:J" & derL).Value mais il y a
peut-être


plus simple

Merci
Domi





Avatar
Domi
J'ai trouvé ! enfin un peu...il faut virer le 1er 2...
Range("J16:J" & derL).Value = Range("J16:J" & derL).Value2

Merci
Domi

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonjour,

Essaye d'utiliser la propriété (méconnue, trouv'je, mais très utile avec
les

dates) Value2 :

Range("J16:J" & derL).Value2 = Range("J16:J" & derL).Value2
+ éventuellement
Range("J16:J" & derL).NumberFormat = "dd/mm/yy"

Dans le cas de dates, la propriété Value2 contient leur numéro de série
(elle

est donc insensible à l'américanisation automatique des dates en VBA).

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,
AV m'a proposé ce code pour faire un calcul sur plage avec une
matricielle


de facon rapide.

Sub Date1()
derL = [A65536].End(3).Row
'pour accélérer !
Application.Calculation = xlCalculationManual
[J16].FormulaArray > >
"=IF(ISERROR(SMALL(IF(RC1=ApprosArt,ApprosDate,""""),R14C[2])),"""",SMALL(IF


(RC1=ApprosArt,ApprosDate,""""),R14C[2]))"
[J16].AutoFill Destination:=Range("J16:J" & derL)
Application.Calculation = xlCalculationAutomatic
Range("J16:J" & derL) = Range("J16:J" & derL).Value
'Range("J16:J" & derL).NumberFormat = "dd/mm/yy" 'tentative pour essayer
de


remedier au pb masi sans succes :o(

Dans ce cas précis la formule renvoie des dates
Hélas lorsue en fin de macro elles sont figées, elles deviennent
"américaines" !
17/09/03 devient 9/17/2003
29/09/03 devient 9/29/2003
09/10/03 devient 10/09/2003
etc

Y-a-il une explication logique à cela ?
Y-a-t'il un moyen simple de contourner cela ?
j'y arrive en faisant une copie/Collage des valeurs à la place de
Range("J16:J" & derL) = Range("J16:J" & derL).Value mais il y a
peut-être


plus simple

Merci
Domi





Avatar
Domi
;o((( j'ai parlé trop vite, ça a marché une fois et le phénomène se
reproduit toutes les dates prennent la m^me valeur.
Désolé.
Domi

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonjour,

Essaye d'utiliser la propriété (méconnue, trouv'je, mais très utile avec
les

dates) Value2 :

Range("J16:J" & derL).Value2 = Range("J16:J" & derL).Value2
+ éventuellement
Range("J16:J" & derL).NumberFormat = "dd/mm/yy"

Dans le cas de dates, la propriété Value2 contient leur numéro de série
(elle

est donc insensible à l'américanisation automatique des dates en VBA).

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,
AV m'a proposé ce code pour faire un calcul sur plage avec une
matricielle


de facon rapide.

Sub Date1()
derL = [A65536].End(3).Row
'pour accélérer !
Application.Calculation = xlCalculationManual
[J16].FormulaArray > >
"=IF(ISERROR(SMALL(IF(RC1=ApprosArt,ApprosDate,""""),R14C[2])),"""",SMALL(IF


(RC1=ApprosArt,ApprosDate,""""),R14C[2]))"
[J16].AutoFill Destination:=Range("J16:J" & derL)
Application.Calculation = xlCalculationAutomatic
Range("J16:J" & derL) = Range("J16:J" & derL).Value
'Range("J16:J" & derL).NumberFormat = "dd/mm/yy" 'tentative pour essayer
de


remedier au pb masi sans succes :o(

Dans ce cas précis la formule renvoie des dates
Hélas lorsue en fin de macro elles sont figées, elles deviennent
"américaines" !
17/09/03 devient 9/17/2003
29/09/03 devient 9/29/2003
09/10/03 devient 10/09/2003
etc

Y-a-il une explication logique à cela ?
Y-a-t'il un moyen simple de contourner cela ?
j'y arrive en faisant une copie/Collage des valeurs à la place de
Range("J16:J" & derL) = Range("J16:J" & derL).Value mais il y a
peut-être


plus simple

Merci
Domi





Avatar
AV
;o((( j'ai parlé trop vite, ça a marché une fois et le phénomène se
reproduit toutes les dates prennent la m^me valeur.


Tu peux m'envoyer un extrait de ton truc ?

AV

Avatar
Domi
Merci à AV qui a rapidement vu que la cause de tous mes soucis provenais
d'un Calcul en manuel qui traînait...

bonne soirée à tous
Domi

"AV" a écrit dans le message de news:
bl6q3a$4as$
;o((( j'ai parlé trop vite, ça a marché une fois et le phénomène se
reproduit toutes les dates prennent la m^me valeur.


Tu peux m'envoyer un extrait de ton truc ?

AV