Petite Aide Pour Macro Date

Bonjour a tous

Voila j'ai un petit probléme j'ai fait une macro qui me convertit les chiffres en date

par exemple elle me convertit 60201 en 01/02/2006

ou encore 208 en 08/02/2000

Le debut de cette macro est ligne 2 colonne 2 et elle balaye toute la colonne que j'ai appelée Date Saisie

Je voudrais utiliser ma macro en ligne 2 colonne 8 mais celle ci ne marche pas

Je vous mets ma macro :

Sub ChangeDate()
ligne = 2
colonne = 2
Do While Not (IsEmpty(Cells(ligne, colonne)))
If Cells(ligne, colonne).Value > 200000 Then
    Difference = 1900
Else
    Difference = 2000
End If

annee = Difference + Int(Cells(ligne, colonne).Value / 10000)
mois = Int((Cells(ligne, colonne).Value - (annee - Difference) * 10000) / 100)
Jour = Cells(ligne, colonne).Value - (annee - Difference) * 10000 - 100 * mois
If mois < 10 Then mois = "0" & mois
If Jour < 10 Then Jour = "0" & Jour
    NouvelleDate = Jour & "/" & mois & "/" & annee

MsgBox NouvelleDate
Cells(ligne, colonne).Value = CDate(NouvelleDate)
ligne = ligne + 1
Loop
End Sub

Donc voila a la troisiéme ligne de code je remplace colonne = 2 par colonne = 8 mais ça ne marche toujours pas.

Lors du débogage il me surligne cette ligne en jaune :

Cells(ligne, colonne).Value = CDate(NouvelleDate)

Auriez vous une idée pour que celle ci marche ??

Merci de votre aide

Bonjour,

A priori sur un premier coup d'oeil les variables "mois" et "Jour" dépasseraient les limites (maximum 12 et 31 respectivement ). Vérifient bien s'ils ramènent des valeurs correctes. C'est à cause de ces erreurs ça bug. Je ne vois pas d'autres raisons particulières.

Mais ce que je ne comprends pas c'est que ça marche sur la (ligne 2 colonne2) et aprés ça parcours tous le tableau en incrémetant d'une ligne ça sa marche je vais vous faire un apercu de mon tableau

Cote Date Saisie Initiales Saisies Titres Auteur Date Edition

1 60201 RL ... ... 40600

Voila c a peu prés ça donc ça me convertit bien 60201 en 01/02/2006 mais ça ne convertit pas le 40600 en 00/06/2004 même si je change la valeur de colonne

Je ne comprends pas pourquoi

help me pleaaaase

Re,

Il serait bien utile de nous envoyer ton fichier pour pouvoir t'aider efficacement.

comment envoyer un fichier??

Re,

Regarde sur le lien suivant :

Lien

Et surtout donne-nous lien qui émane de cet envoi.

Salut le forum

ribery_7_91 a écrit :

Voila c a peu prés ça donc ça me convertit bien 60201 en 01/02/2006 mais ça ne convertit pas le

40600 en 00/06/2004 même si je change la valeur de colonne.

Je ne comprends pas pourquoi

As-tu déjà vu un mois avec le jour 0 ( zéro ), pas moi ?

Mytå

Bonjour a tous

On m'a demandé d'upload mon fichier afin que l'on puisse m'aider

Voici l'adresse de mon fichier :

https://www.excel-pratique.com/~files/doc/aide.xlsm

Je vous rappelle mon problème :

J'ai crée cette macro :

Sub ChangeDate()
ligne = 2
colonne = 2
Do While Not (IsEmpty(Cells(ligne, colonne)))
If Cells(ligne, colonne).Value > 200000 Then
    Difference = 1900
Else    Difference = 2000
End If

annee = Difference + Int(Cells(ligne, colonne).Value / 10000)
mois = Int((Cells(ligne, colonne).Value - (annee - Difference) * 10000) / 100)
Jour = Cells(ligne, colonne).Value - (annee - Difference) * 10000 - 100 * mois
If mois < 10 Then mois = "0" & mois
If Jour < 10 Then Jour = "0" & Jour
    NouvelleDate = Jour & "/" & mois & "/" & annee

MsgBox NouvelleDate
Cells(ligne, colonne).Value = CDate(NouvelleDate)
ligne = ligne + 1
Loop
End Sub

Celle ci me permet de convertir la colonne Date Saisie en vrai format date

Par exemple elle commence à la ligne 2 colonne 2 elle prend 60201 et le transforme en 01/02/2006

Et balaye la colonne Date Saisie jusqu'à la fin

Mais j'ai un petit problème, je voudrais également convertir la colonne Date Edition avec la même macro alors j'ai modifié la valeur de la colonne j'ai mis 8 au lieu de 2 mais la quand je veux executer la macro ça me met erreur et m'ouvre VBA editor pour que je debug

Et ça me surligne cette ligne en jaune

Cells(ligne, colonne).Value = CDate(NouvelleDate)

Merci de votre aide

Bonsoir

Dans ta macro tu ne définis pas tes variables, ce qui n'est pas très rigoureux au niveau de la programmation.

Ca marche parce que Excel, dans ce cas, déclare les variables en Variant.

Exemple "mois" est une fois du type Integer et une fois du type String

mois = Int(......)

mois = "0" & mois

Dans la colonne 8 :

  • il y a des cases vides donc ta macro s'arrête sans aller jusqu'au bout du tableau.
  • certaines dates saisies ont un numéro de jour à 0, ce qui génère ton erreur

Je te propose le code suivant, qui fournit le résultat en colonne 10 pour vérification:

If IsDate(Val1) Then Cells(Ligne, 10).Value = CDate(Val1)

pour une version définitive, modifier la ligne de cette façon

If IsDate(Val1) Then Cells(Ligne, Colonne).Value = CDate(Val1)

Cordialement

Sub ChangeDate()
Dim Difference As Integer
Dim Annee As Integer
Dim Mois As Byte
Dim Jour As Byte
Dim Ligne As Integer
Dim Colonne As Byte
Dim Val1 As String
Dim Max1 As Integer

Colonne = 2
Max1 = Cells(1, 1).CurrentRegion.Rows.Count
For Ligne = 2 To Max1
    Val1 = Cells(Ligne, Colonne)
    If Not Val1 = "" Then
        Val1 = Right("000" & Val1, 6)
        Annee = CInt(Left(Val1, 2))
        If Annee > Year(Date) - 2000 Then
            Annee = 1900 + Annee
        Else
            Annee = 2000 + Annee
        End If
        Mois = CByte(Mid(Val1, 3, 2))
        Jour = CByte(Right(Val1, 2))
        Val1 = Jour & "/" & Mois & "/" & Annee
        If IsDate(Val1) Then Cells(Ligne, 10).Value = CDate(Val1)
    End If
Next
End Sub

Après le cordialement c'est la nouvelle macro a utiliser??

Je la testerais

Merci

Salut

Lorsque j'execute ta macro ça me met qu'il y une erreur

Il me dit Incompatibilité de type et me surligne cette ligne en jaune

 Annee = CInt(Left(Val1, 8))

Je l'execute en ligne 2 colonne 8 mais je ne sais pas si c'est bon

merci

Je ne comprends pas très bien ta macro par contre

help me please!!!

7recherche-vba.xlsx (10.70 Ko)
Rechercher des sujets similaires à "petite aide macro date"