[AIDE] Problème Macro Commande De Date [Résolu]

Signaler
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour à tous

J'ai fabriqué une macro commande de date sous excel mais j'ai un petit problème

Voici 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

Celle ci me permet de convertir un chiffre en date. Par exemple 60201 deviendra 01/02/2006
208 deviendra 08/02/2000
1123 deviendra 23/11/2000   ect.

Mais j'ai un petit problème, elle marche bien pour la colonne 2 mais lorsque je change la colonne ça ne marche pas. Même si je change aussi la colonne dans la macro.
Je ne comprends pas pourquoi

Lors du débogage ça me surligne en jaune cette ligne :
Cells(ligne, colonne).Value = CDate(NouvelleDate)

Et lorsque je passe sur CDate ça m'écrit incompatibilité de type
Auriez vous une idée s'il vous plait je ne trouve pas
Merci à tous

13 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

c'est peut-être parce que la valeur est plus grande que la taille de la cellule.
Essaie avec un AutoFit de ta colonne

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
Que vaut NouvelleDate lors de l'erreur?

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009

Lors de l'erreur NouvelleDate vaut "la date en quelques sortes

De plus ce que je ne comprends pas c'est que le MsgBox NouvelleDate affiche la bonne date. C'est curieux
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
SAlut,
Justement j'aimerais avoir la valeur de cette date...

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009

ba ça prend la date de la colonne de mon fichier excel
en l'occurence dans ma cellule j'ai 50100 donc 00/01/2005
ça marche dans la box mais ne l'affiche pas
peut étre le 00??
Si oui comment y remedier??
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
Bah 00 en jour ne sera jamais une date valide et ne pourra donc pas être convertit en date par CDate voila tout.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009

Ok alors comment faire pour enlever le 00 et afficher le mois et l'année lorsqu'il y a 00 dans le jour??
Et sinon comment afficher le 00 avec un autre moyen que CDate??
Merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
Vu que tu crée toi même ta date, tu n'as peu être pas la peine de passer par un Cdate, Mets directement le résultat dans la cellule Excel.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009

Je suis novice
Comment mettre directemenr le resultat dans la cellule excel??
Si tu peux me mettre la ligne de code ça serait cool
Merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Re,
Je ne sais pas si cela pourra répondre à tes besoins mais essaies simplemnt

Cells(ligne, colonne).Value = NouvelleDate

OU BIEN ENCORE

Cells(ligne, colonne).Text = NouvelleDate

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009

Ok merci c'est cool ça marche ....quasiment lol

Pour certaines cellules pas toutes ça me met des ####### partout par exemple lorsqu'il y a 102 dans la case
Comment puis je résoudre ce problème
J'ai modifié ma macro pour ne pas afficher es jours et/ou les mois si ceux ci sont égaux a 0 Je ne sais pas si c'est bon.

Sub ChangeDate2()
Ligne = 2
Colonne = 8
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
If Jour = "0" Then
    If Mois = "0" Then
        NouvelleDate = Annee
    Else
        NouvelleDate = Mois & "/" & Annee
    End If
Else
    NouvelleDate = Jour & "/" & Mois & "/" & Annee
End If



'MsgBox NouvelleDate
Cells(Ligne, Colonne).Value = NouvelleDate
Ligne = Ligne + 1
Loop
End Sub
Messages postés
17
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
27 mars 2009

Problème résolu
Je vous remerci pour ceux qui m'ont aidé aussi rapidement

Je posterias un nouveau message si j'ai un autre problème car il va y en avoir je suis en stage BTS et je fais du VBA sous excel alors que je n'ai jamais fait ça
alors je me forme
merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
53
Salut,
Si ton problème est résolu il faut appuyer sur réponse acceptée sur le ou les posts qui t'on aider à le résoudre.

@+: Ju£i€n
Pensez: Réponse acceptée