Demande d'aide pour un programme VBA

papish_4732 -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour tout le monde,

J'ai une erreur de type 13: "incompatibilité de type" au niveau de la ligne 5 et 6:
"Cells(i, 40) = CDate(Right(Cells(i, 40), 2) & "/" & Mid(Cells(i, 40), 5, 2) & "/" & Left(Cells(i, 40), 4))"

Qui pourrait m'aider sur ca ?

Sub changement_date()
Dim i As Double
i = 2
Do While Cells(i, 1) <> ""
Cells(i, 40) = CDate(Right(Cells(i, 40), 2) & "/" & Mid(Cells(i, 40), 5, 2) & "/" & Left(Cells(i, 40), 4))
'Cells(i, 42) = CDate(Right(Cells(i, 42), 2) & "/" & Mid(Cells(i, 42), 5, 2) & "/" & Left(Cells(i, 42), 4))
i = i + 1
Loop
End Sub

7 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    tu n'expliques ni ce que contiennent les colonnes 40 et 42, ni ce que tu veux obtenir.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      essaie ceci, pour comprendre ce que fait ton programme:
      Cells(i, 40) = Right(Cells(i, 40), 2) & "/" & Mid(Cells(i, 40), 5, 2) & "/" & Left(Cells(i, 40), 4)
      0
    2. papish_4732
       
      Merci @yg_be !

      Au fait la cellule "cells(2,40)" contient un nombre dont le format est : "20170302" et je veux changer ça en format date: "02/03/2017" et le mettre dans la même cellule.

      Merci cordialement !
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > papish_4732
         
        utilise plutôt
        dim i as long

        quelles sont les valeurs précises en colonne 40 ou 42 sur la ligne où tu as l'erreur?
        0
  2. papish_4732
     
    ça vient toujours pas !

    J'ai essayé avec la fonction DateSerial(), ça marche dans la base mais ça me renvoie toujours une erreur de type 13: "Incompatibilité de type" au niveau de la ligne: "L_Annee = Left(Cells(i, 42), 4)"

    Sub changement_date()
    Dim i As Double
    Dim Le_mois As Integer, Le_jour As Integer, L_Annee As Integer
    i = 2
    Do While Cells(i, 1) <> ""
    L_Annee = Left(Cells(i, 42), 4)
    Le_mois = Mid(Cells(i, 42), 5, 2)
    Le_jour = Right(Cells(i, 42), 2)
    Cells(i, 42) = DateSerial(L_Annee, Le_mois, Le_jour)
    i = i + 1
    Loop
    End Sub

    Merci cordialement !
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      que contient Cells(i, 42)?
      0
  3. papish_4732
     
    Cells(i,42) contient les nombres du type : "20170302", que j'extraie pour le convertir en date.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu as des soucis à toutes les lignes?
      cela n'a jamais fonctionné nulle part?
      0
  4. papish_4732
     
    ça fonctionne mais ça renvoie une erreur de type 13 : "Incompatibilité de type"
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      veux-tu dire que cela fait une partie du travail, et que cela s'arrête ensuite avec un message d'erreur?
      quelle est la valeur de i au moment du message d'erreur?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. papish_4732
     
    dés la premiére valeur de i
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      pourquoi écris-tu alors que cela fonctionne?
      quel est le contenu exact de la cellule en deuxième ligne et 42ième colonne?
      0
  7. papish_4732
     
    le contenu est : 02/03/2017 mais c'est pas en format date de plus ça me renvoie cette erreur
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      normal alors que cela ne fonctionne pas.
      le code est conçu pour traiter des nombres du type : "20170302".
      si tu changes d'avis, il faut réécrire le code.
      0
  8. papish_4732
     
    bonjour,
    je parle après exécution au fait.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      cela devient petit à petit tout-à-fait incohérent.
      0