XL 2019 Composition de date

Fipat

XLDnaute Occasionnel
Bonjour,

Je fais un travail sur une macro sur un classeur avec des dates.
Mon souci est que je n'arrive pas à extraire la date comme saisie dans mon tableau.
Le format n'est pas le même.
J'utilise la fonction DateSerial.
Format de recherche saisi dans mon tableau> J/M/A
Format de sortie de l'extraction > M/J/A
La variable est :
VB:
Dim DT As Date
DT = DateSerial(Year(Range("B6").Value), Month(Range("B6").Value), Day(Range("B6").Value))
Avez-vous une idée ? J'utilise pas la bonne fonction ?
L'extraction est bonne et coordonne mais l'affichage n'est pas le même.
Merci pour votre retour.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Fipat,

Votre question est plus qu'imprécise et vague.
Une expression apparaissant visuellement comme une date sur une feuille excel peut être un tas de choses :
  • une date avec un format
  • un texte repésentant une date
  • tantôt une date, tantôt un texte (surtout pour importation de dates de type J/M/A) et donc tantôt juste tantôt fausse.
  • voire autre chose
Le traitement des dates est loin d'être évident surtout quand on jongle entre date US et date FR.

Le plus simple est de fournir un fichier avec vos données de départ, vos résultats souhaités et, encore mieux, avec votre macro.
 

Fipat

XLDnaute Occasionnel
Bonsoir mapomme,,

Désolé une fois de plus une question sans fichier joint :confused:.
Bon par contre pour mon exemple ça merdouille !
Mais vous pourrait voir ce que je veux faire avec ces dates.
Merci.
 

Pièces jointes

  • Date.xlsm
    21.3 KB · Affichages: 17

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @Fipat,

Voici une macro censée faire ce que vous désirez pour ce que j'en ai compris. La macro est dans le module attachée à la feuille "export". Je n'ai pas su quoi faire de vos mentions de format de date :rolleyes:. Il faudra sans doute nous le préciser.

Je ne commente jamais mes codes :( sauf si on me le demande. Et dans ce cas, je le fais avec plaisir :).

Concernant votre propre macro (qui si j'ai bien lu est relativement claire. Juste peut-être un manque d'expérience dans l'écriture mais le principe est là et tout y est):
Utilisez en début de code l'option "Option Explicit" qui vous oblige à déclarer toute variable avant de l'utiliser. Cela permet de repérer les fautes de frappe concernant les noms des variables et de réfléchir à ce que doit contenir cette variable et donc quel type lui attribuer.

Une variable qui sert d'indice de boucle de numéro ligne ou numéro de colonne devrait être déclarée comme long. Le nombre de ligne au sein d'une feuille peut dépasser le million ! Avec nos machines actuelles, déclarer une variable d'indice en long ne gaspille pas de mémoire ;)

Si vous ne déclarez pas une variable comme tableau dynamique, vous ne pourrez pas la redimensionner avec "Redim Preserve" :
VB:
Sub testA()    'plante
Dim t
   ReDim Preserve t(1 To 2, 1 To 5)
End Sub

Sub testB()    'OK
Dim t()
   ReDim Preserve t(1 To 2, 1 To 5)
End Sub

Sub testC()    'plante
   ReDim Preserve t(1 To 2, 1 To 5)
End Sub

Attention! Si le résultat dépasse 16 684 colonnes, on ne pourra pas stocker le résultat dans le tableau final pour le transposer. Il faudra utiliser une autre méthode pour l'affichage.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonsoir
oulah @mapomme en a oublié la partie la plus importante
redim preserve ne peut redimensionner qu'une dimension
par conséquent
quand t = 0 item ca marche
par contre des que t contient 1 ou x items seule la dernière dimension peu être redimensionnée

conclusion par conséquent c'est la méthode elle même est une erreur de toute les manière
a bon entendeur
 

Fipat

XLDnaute Occasionnel
Bonjour,

je ne suis pas sur de comprendre.
Pour ma part je l'écrit ainsi
VB:
Dim tb() As Variant
Dim i As Integer
i= 1
ReDim Preserve tb(1 To 5, 1 To i)

Mon souci pour la date ce que DateSerial ne renvoi pas j/m/Année mais m/j/année.
Alors que cette fonction devrait renvoyer j/m/A
 

Fipat

XLDnaute Occasionnel
je ne comprends toujours pas. Quand je passe mes cellules de la recherche en format Anglais(états unis) cela affiche correctement la date soit le 02/01/19
Le souci est que je ne récupère pas l'année entière.
Merci pour vos idées.
 

Discussions similaires

Réponses
17
Affichages
864