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

Format Data suite à une macro

9 réponses
Avatar
Olivier77
Bonjour à tous,

j'ai créé une macro de mise en forme pour une extraction SAP.
Tout se passe bien sauf que le champ dates est de format jj.mm.aaaa
je fait un "remplacer . par /" dans ma macro, et j'applique un format date
jj/mm/aaaa.
Le problème, c'est que Excel considère le résultat comme du texte, je ne
peux pas faire de formule sur ce champ.
Si j'édite la cellule et que je valide, il reconnait la date, et tout se
passe bien.
Je peux aussi faire un "collage spécial valeur "0" addition" sur toute la
colonne, et ça fonctionne. Mais si je met cette opération dans la macro, ça
ne fonctionne pas non plus.
Bref, comment modifier ma macro pour que mon champ date soit reconnu comme
tel, et non comme du texte?

Merci de votre aide

Cordialement

9 réponses

Avatar
FFO
Salut Olivier

Pourquoi ne mettrais tu pas cette ligne de code :

Selection.NumberFormat = "mm/dd/yyyy"

Celà devrait faire

Dis moi !!!!
Avatar
Olivier77
Salut

c'est déjà ce que je fais quand je dis que j'applique un format date.
mais apparement, il ne comprend pas que c'est une date, mais du texte...car
si j'édite la cellule et que je valide, ça fonctionne...

cordialement

"FFO" a écrit :

Salut Olivier

Pourquoi ne mettrais tu pas cette ligne de code :

Selection.NumberFormat = "mm/dd/yyyy"

Celà devrait faire

Dis moi !!!!



Avatar
Ellimac
Bonjour,

A priori les dates restent à gauche mais sont tout de même considérées comme
dates, les calculs fonctionnent.
Tu peux éventuellement pour faire plus propre rajouter ceci après une
sélection de ta plage dates :

For Each c In Selection
SendKeys "{f2}~", True
Next

Camille

"Olivier77" a écrit dans le message de
news:
Bonjour à tous,

j'ai créé une macro de mise en forme pour une extraction SAP.
Tout se passe bien sauf que le champ dates est de format jj.mm.aaaa
je fait un "remplacer . par /" dans ma macro, et j'applique un format date
jj/mm/aaaa.
Le problème, c'est que Excel considère le résultat comme du texte, je ne
peux pas faire de formule sur ce champ.
Si j'édite la cellule et que je valide, il reconnait la date, et tout se
passe bien.
Je peux aussi faire un "collage spécial valeur "0" addition" sur toute la
colonne, et ça fonctionne. Mais si je met cette opération dans la macro,
ça
ne fonctionne pas non plus.
Bref, comment modifier ma macro pour que mon champ date soit reconnu comme
tel, et non comme du texte?

Merci de votre aide

Cordialement





Avatar
Olivier77
Bonjour,

les dates restent à gauche, et bien sûr, les formules ne fonctionnent pas,
sinon ça ne poserait pas de pb.

Sinon ton astuce fonctionne bien, le seul problème, c'est que j'ai 10 000
lignes à mon fichier, donc ça prend 5min pour que la macro fasse "F2" dans
toute les colonnes.

Si tu as une solution plus rapide.

Merci encore de ton aide.

Olivier

"Ellimac" a écrit :

Bonjour,

A priori les dates restent à gauche mais sont tout de même considérées comme
dates, les calculs fonctionnent.
Tu peux éventuellement pour faire plus propre rajouter ceci après une
sélection de ta plage dates :

For Each c In Selection
SendKeys "{f2}~", True
Next

Camille


Avatar
Ellimac
Re,

Par formule, en supposant qu'une nouvelle colonne est insérée à droite de
tes dates :

der = Range("a65000").End(xlUp).Row
ActiveCell = _
"ÚTE(RIGHT(RC[-1],4),MID(RC[-1],4,2),LEFT(RC[-1],2))"
ActiveCell.AutoFill Destination:=Range("B2:B" & der)
Prévoir ensuite un Copier Collage spécial valeur de cette nouvelle colonne
et suppression de l'ancienne colonne dates.

Camille

"Olivier77" a écrit dans le message de
news:
Bonjour,

les dates restent à gauche, et bien sûr, les formules ne fonctionnent pas,
sinon ça ne poserait pas de pb.

Sinon ton astuce fonctionne bien, le seul problème, c'est que j'ai 10 000
lignes à mon fichier, donc ça prend 5min pour que la macro fasse "F2" dans
toute les colonnes.

Si tu as une solution plus rapide.

Merci encore de ton aide.

Olivier

"Ellimac" a écrit :

Bonjour,

A priori les dates restent à gauche mais sont tout de même considérées
comme
dates, les calculs fonctionnent.
Tu peux éventuellement pour faire plus propre rajouter ceci après une
sélection de ta plage dates :

For Each c In Selection
SendKeys "{f2}~", True
Next

Camille





Avatar
michdenis
As-tu essayé quelque chose comme :

Tu adaptes le nom de la feuille et de la plage de cellules
'------------------------------
Sub test()
Dim Rg As Range
With Feuil1
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns
.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByColumns
.NumberFormat = "dd/MM/YYYY" 'Ou autre format
End With
End With
End Sub
'------------------------------



"Olivier77" a écrit dans le message de groupe de
discussion :
Bonjour à tous,

j'ai créé une macro de mise en forme pour une extraction SAP.
Tout se passe bien sauf que le champ dates est de format jj.mm.aaaa
je fait un "remplacer . par /" dans ma macro, et j'applique un format date
jj/mm/aaaa.
Le problème, c'est que Excel considère le résultat comme du texte, je ne
peux pas faire de formule sur ce champ.
Si j'édite la cellule et que je valide, il reconnait la date, et tout se
passe bien.
Je peux aussi faire un "collage spécial valeur "0" addition" sur toute la
colonne, et ça fonctionne. Mais si je met cette opération dans la macro, ça
ne fonctionne pas non plus.
Bref, comment modifier ma macro pour que mon champ date soit reconnu comme
tel, et non comme du texte?

Merci de votre aide

Cordialement
Avatar
Olivier77
Bonjour,

j'ai essayé, et ça me pose exactement le même problème de date centré à
gauche, et non reconnue comme date par les formules...

merci quand même...

Olivier



"michdenis" a écrit :

As-tu essayé quelque chose comme :

Tu adaptes le nom de la feuille et de la plage de cellules
'------------------------------
Sub test()
Dim Rg As Range
With Feuil1
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns
.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByColumns
.NumberFormat = "dd/MM/YYYY" 'Ou autre format
End With
End With
End Sub
'------------------------------


Avatar
Olivier77
Merci, j'avais essayé comme ça, et ça fonctionne bien.
il faut juste passer par la création et la suppression d'une colonne supp.
Juste, je ne comprend pas pourquoi je n'arrive pas à mettre directement au
bon format ma colonne...

Merci.

"Ellimac" a écrit :

Re,

Par formule, en supposant qu'une nouvelle colonne est insérée à droite de
tes dates :

der = Range("a65000").End(xlUp).Row
ActiveCell = _
"ÚTE(RIGHT(RC[-1],4),MID(RC[-1],4,2),LEFT(RC[-1],2))"
ActiveCell.AutoFill Destination:=Range("B2:B" & der)
Prévoir ensuite un Copier Collage spécial valeur de cette nouvelle colonne
et suppression de l'ancienne colonne dates.

Camille


Avatar
michdenis
Si c'est possible, publie juste une petite quantité de data
de tes dates sur cjoint.com et donne-nous ici l'adresse
où se trouve ton fichier.