✅ Convertir un nombre 10012017 en 10/01/2017


#1

Bonjour tous le monde, je fais la saisie d’une façon ripetitive des dates dans une colonne je cherche a me facilité la tache en trouvant un code vba qui peut convertir un nombre comme 10012017 sous la forme 10/01/2017. Merci pour l’aide


#2

Bonsoir elhechmi_Elad,

Sélectionner l’ensemble de la colonne concernée, puis clique droit, dans le menu choisir “Format de cellule”, puis dans la fenêtre cliquer sur “Personnalisée” à droite en dessous de Type : remplacer Standard par 00"/“00”/"0000

Voilà, c’est tout :slight_smile: point besoin de VBA pour si peu, enfin je pense !

Cordialement.


#3

Bonjour;
Reconnaissant pour votre contribution,mais en utilisant cette forme bien qu’elle a la forme d’une date on ne peut pas la traiter en tant que telle, ajouter un nombre de jours ou faire un tris chronologique. exemple 01/01/2017+3j on aura 04/01/2017 sur excel. par contre si on opte pour la solution si-dessus on aura un résultat erroné. une autre fois merci pour votre patience de m’aider a trouver la solution.


#4

Bonsoir elhechmi_Elad,

Effectivement avec la solution que j’ai proposé et dans les conditions d’exploitations que vous décrivez, on ne peut pas traiter cette forme.
J’ai donc cherché une solution par VBA, mais je me retrouve avec une usine à gaz, qui ne fonctionne pas.
Je pense que “DocteurExcel” a suivi cette demande et que si il passe par là, il pourra peut-être trouver une solution.

Cordialement.

PS: pouvez-vous joindre un fichier (sans données confidentielles), cela pourrait aider a trouver une solution.


#5

Bonjour mdo
je vous joindre un fichier type, Merci pour le suivi
Cordialement Elad


#6

Bonjour Elad,

Ou est le fichier ?

Pour joindre un fichier, veuillez suivre cette procédure.

@+


#7

bonjour
vous trouvez ci-joint fichier typeeladeb.xlsx (10,6 Ko)


#8

Bonsoir Elad,

Est-ce que cela poserait un problème si l’on ajoutait une colonne ?
En colonne “A” la saisie se ferait 01012017 et en colonne “B” elle serait au format date numérique 01/01/2017, ce qui permettrait donc son exploitation.
Ci-joint un image de ce que je propose, car j’ai cherché a faire autrement, mais je n’y parviens pas.
Ce qui me pose problème ce sont les date commençant par 01, 02…08, 09.
Donc voyez si ajouter une colonne ne pose pas de problème et dîtes-moi, j’aurai alors une solution.

Cordialement


#9

Bonjour Mdo100;
j’ai compris votre idée je peux vous présenter la formule suivante qui peut résoudre le problème de votre manière mais j’ai penser qu’on peut traduire cette formule excel en une formule vba qui automatise la transformation. sur ça que je travail.
voila la formule qui converti un nombre 01012017 en 01/01/2017
=DATE(DROITE(A1;4);STXT(A1;NBCAR(A1)-5;2);STXT(A1;1;NBCAR(A1)-6)).
je tient bien sur votre coopération votre ami Eladeb.
cordialement
E.eladeb


#10

Bonjour eladeb,

Oui, c’est ce à quoi je pensais, mais avec une fonction personnalisée (VBA), ce qui revient un peu au même que la formule, mais en plus court.
Ce qui implique bien sûr que la formule colonne “E” (bordereau n°) soit modifier en fonction de la colonne “B” (Date convertie) =SI(B2="";"";NO.SEMAINE(B2;2))
Donc pas de problème pour ajouter une colonne ? C’est une question !
Et dans ce cas pouvez-vous me dire quelle est la longueur de la plage colonne “A” exemple “A2:A50” ou plus , ou évolutive ?

@+


#11

bonjour;
c’est évolutif ami est pas de problème pour l’ajout.


#12

Re,

Bon, je voulais appliquer ma fonction personnalisée (VBA), mais ça ne fonctionne pas comme je veux :rage:
Du coup, j’ai fais du bricolage, mais ça a le mérite de fonctionner :grinning:.
Le code VBA se trouve dans la “Feuil1”, il applique la formule que vous avez fournie automatiquement lors de la saisie dans la colonne “A”.
Pour voir le code faire “alt + F11”.
Précision: le code fonctionne jusqu’à la dernière ligne de la feuille, y’a de quoi faire.

J’aurai bien aimer réussir avec un code sans ajouter une colonne, mais mon problème persiste avec les dates commençant par 0.
Si je réussi plus tard, je vous en ferai part.

Le fichier ci-joint eladeb V1.xlsm (19,5 Ko)

Cordialement.


#13

Salut
Merci pour l’effort et l’aide précieuse nous continuerons à améliorer.
cordialement
E.Eladeb


#14

Bonjour
Le code suivant répond-t-il a tes attentes?
Il prend la date brute dans la colonne A et la réecrit sous forme de date dans la colonne B
On peut bien sur le modifier pour réécrire par dessus la même cellule

Sub calcul_date()
Range("B:B").NumberFormat = "dd/mm/yyyy" 'format des dates
For Each cell In Range("A1:A4")
    my_year = Right(cell.Value, 4) '4 derniers caractères
    my_month = Right(Replace(cell.Value, my_year, ""), 2)
    'on supprime l annee puis on prend les 2 derniers caracteres
    my_day = Replace(Replace(cell.Value, my_year, ""), my_month, "")
    'on supprime le mois et l annee
    mydate = DateSerial(my_year, my_month, my_day)
    'ecriture de la date
    cell.Offset(0, 1).Value = mydate
Next cell
End Sub

#15

j’ai pas trouver le format personaliser 00"/“00”/"0000


#16

Tout d’abord Bonjour @MOHAMED,

“La politesse est comme le zéro, qui, sans avoir de valeurs en soi, en ajoute à toutes choses.”

Ce format comme son nom l’indique est “personnalisé”, cela veut dire que l’on peut y mettre ce que l’on veux.
Tout d’abord aller dans “Format de cellule”, puis “Personnalisée” voir image ci-dessous.

Ensuite sélectionner “Standard” et supprimer, voir image ci-dessous.

Enfin écrire à la place le format personnalisé souhaité, dans ce cas mettre 00"/“00”/"0000

Cliquer sur ok pour valider le nouveau format.

On peut le faire pour une cellule où pour une sélection d’une plage de cellules.

Est-ce que cela répond à la question ?

Cordialement.


#17

merci beaucoup mdo100