Partager via

[Excel VBA] Problème Date reste au format Texte

Anonyme
2021-06-02T10:33:24+00:00

Bonjour à tous,

Je viens solliciter votre aide pour un problème qui me prends la tête depuis des jours. Après avoir écumé en long en large et en travers des dizaines et des dizaines de sujets, mon problème n'est pas résolu.

Je ne peux malheureusement pas mettre de fichier en exemple de mon coté.

Le problème est le suivant : à l'aide d'une macro VBA, j'ouvre un classeur Excel, je copie une plage de données, et je la colle dans un autre classeur Excel. Simple comme bonjour.

Le problème est que dans ces données, j'ai des dates. Et pour une mystère inconnu, quelques dates restent en format "Texte" alors que les autres sont bien des dates (voir image ci-contre). Ce sont uniquement ces dates qui posent soucis

Le seul moyen que j'ai pour qu'elle soit au format "Date" et de double cliquer sur la cellule.
Or, a terme, avec le nombre de date qu'il y aura de présent, j'aimerai éviter ce genre de soucis, l'outil devant être automatisé.

Cela me bloque dans la mise en place d'un TCD, car je ne peux pas grouper par date.

J'ai essayé de mon coté, en VBA (car je souhaite résoudre ca uniquement en VBA, pour ne pas multiplier les actions inutiles sur le fichier) d'appliquer à nouveau le format, de copier coller le format, de faire un PasteSpecial avec la Multiplication...Rien n'y fait, ca ne veut pas fonctionner.

Auriez-vous une solution à m'apporter ?

Je suis sous Excel 2013 et W10.

Merci d'avance, et bonne journée !

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2021-06-04T08:22:46+00:00

Bonjour,

Désolé. Exécute la macro suivante :

Sub test1()
Dim C As Range
For Each C In [B:D].SpecialCells(xlCellTypeConstants)
If Not IsDate(C) And C <> "" Then
C = DateValue(Split(C, " ")(0)) + TimeValue(Split(C, " ")(1))
End If
Next C
End Sub

Daniel

Cette réponse a-t-elle été utile ?

2 personnes ont trouvé cette réponse utile.
0 commentaires Aucun commentaire

3 réponses supplémentaires

  1. Anonyme
    2021-06-14T09:58:00+00:00

    Bonjour Daniel,

    Désolé du délai de réponse, je n'étais pas à mon poste depuis une semaine ^^

    Je viens d'essayer ta solution, et en adaptant une ligne, cela fonctionne à merveille !

    Merci beaucoup pour ton aide !

    Au cas ou, pour information, le code met une erreur si dans la date, l'heure, les minutes et les secondes sont à 0

    Ex: 14/06/2021 00:00:00

    J'ai fait en sorte de remplacer tous mes 00:00:00 par des 00:00:01 pour contourner le problème.

    Si cela intéresse, voici la ligne de code utilisée pour ce remplacement

    If Hour([C]) + Minute([C]) + Second([C]) = 0 Then C = [C] + 1 / 86400

    Ligne qu'il suffit de mettre dans la boucle du code de Daniel

    Bonne journée !

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-06-04T07:34:00+00:00

    Bonjour Daniel,

    Merci pour votre réponse !

    En effet, j'avais vu cette solution que j'ai essayé en VBA de mon coté, mais qui n'a pas fonctionner non plus :/

    Sub ReformateData()

    'Je sélectionne ma cellule avec comme valeur 1 au format Date 
    
    Range("P2").Select 
    
    Selection.Copy 
    
    'Je sélectionne les colonnes ou je souhaites appliquer le PasteSpecial (mes colonnes avec mes dates) 
    
    Columns("B:D").Select 
    
    'J'effectue l'opération 
    
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, \_ 
    
        SkipBlanks:=False, Transpose:=False 
    

    End Sub

    Mais rien ne change. J'ai essayé avec un CalculationAutomatic False et True dans le doute, mais rien ne se produit non plus...

    Peut-être que la macro ci-dessus que j'ai faites avec l'enregistreur n'est pas adapté ?

    Merci d'avance pour votre réponse !

    Cordialement,

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2021-06-02T12:49:31+00:00

    Bonjour,

    S'il y a vraiment un espace entre la date et l'heure, fais par VBA un collage spécial multiplication par 1 et remets les cellules au format date.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire