0
votes

Macro Rechercher et remplacer à Changer la chaîne à ce jour

J'ai utilisé la macro pour trouver et la fonction de remplacement pour modifier la chaîne à ce jour. Cela a bien fonctionné avec certaines des dates mais a mal tourné aussi. Le code que j'ai utilisé est: xxx

la chaîne d'origine est "11.01.2019" et la date doit être 11/01/2019 qui est 11 janvier 2019 .

mais quand j'ai utilisé la macro, il a été converti en 01/11/2019 , qui est 1 Novembre 2019 .

Le code a bien fonctionné si le jour est plus grand que 12.

par exemple "13.01.2019" sera converti en 13/01 / 2019 correctement.

Tout le monde peut aider avec le code pour le faire fonctionner correctement?

Merci beaucoup.


2 commentaires

Les chaînes originales sont-elles systématiquement formatées comme dd.mm.yyyy ou certains d'entre eux ont-ils des jours ou des mois à un chiffre?


Salut Jsheeran. Merci pour votre réponse. Oui les chaînes d'origine sont systématiquement formatées comme dd.mm.yyyyy


3 Réponses :


1
votes

Ceci arrive lorsque Windows code> Paramètres régionaux indique Excel code> que anglais code> Format de date d / m / y code> doit être utilisé.

Puis le délimiteur de date par défaut est / code> comme dans EN_US aussi, mais la séquence des pièces de date diffère de EN_US ( m / d / y code>). Lorsque VBA code> est exécuté, il fonctionne toujours dans les paramètres de paramètres régionaux EN_US et qu'il obtient donc 11/01/2019 code> pour être novembre 1. 2019 dans VBA code> déjà . Mais 13/01/2019 code> n'est pas une date dans EN_US. Donc vba code> ne le convertit pas en une date. Le Excel code> puis convertit la chaîne "13/01/2019" dans la date correcte en fonction des Settigs régionaux de Windows. P>

Solution de contournement: P>

Utiliser Gamme.TextTocolumns à la place. P>

Worksheets("Sheet 1").Columns("H:H").TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, FieldInfo:=Array(1, xlDMYFormat)


1 commentaires

Bonjour Axel Richter. Merci pour ton aide! Cela a bien fonctionné!



0
votes

Je me souviens que VBA assume automatiquement NOTE DE DATE AMERIAN . Essayez: XXX


0 commentaires

0
votes

Ce qui suit construira une date dans AAAAY-MM-DD au format CODE>, qui doit être acceptée, quelle que soit votre localité et renseigner la cellule en conséquence (mais formatée en fonction de vos paramètres système).

Dim r As Range, cell As Range
Set r = [H2:H999] ' or wherever your data is
For Each cell In r
  cell = Right(cell, 4) & "-" & Right(Left(cell, 5), 2) & "-" & Left(cell, 2)
Next cell


0 commentaires