killy99
Messages postés25Date d'inscriptionlundi 5 mars 2007StatutMembreDernière intervention 5 novembre 2008
-
7 mars 2007 à 08:40
killy99
Messages postés25Date d'inscriptionlundi 5 mars 2007StatutMembreDernière intervention 5 novembre 2008
-
7 mars 2007 à 11:57
Bonjours,
Mon application est exécutée sur un document .xls (ce document est une exportation de données).
La colomne F contient des dates, celle ci lors de la généréation du .xls ne sont pas au format date car elles ont l'année composé des deux dernier chiffre, j'es donc écrit dans ma macro le code suivant:
Do While (i <= cpt)
If Cells(i, 6) <> "" Then
Cells(i, 6) = Left(Cells(i, 6), 6) & "20" & Right(Cells(i, 6), 2)
Cells(i, 6).NumberFormat = "dd/mm/yy;@"
End If
i = i + 1
Loop
afin de mettre les date au format adéqua.
Par la suite je fiais éxécuter la fonction datediff() dans un if compris dans un traitement itératif:
i = 1
j = 5
Do While (Cells(i, j) = "") 'positionnement sur le premier resp
i = i + 1
Loop
Do While (i <= cpt)
unresp = Cells(i, j)
nbcandidatfin = 0
nbcandidatsansfin = 0
nbcandidatfinsup = 0
nbdiff = 0
Do While (Cells(i, j) = unresp)
If Cells(i, j + 1) = "" Then
nbcandidatsansfin = nbcandidatsansfin + 1
tot1 = tot1 + 1
Else
nbcandidatfin = nbcandidatfin + 1 'Right(Year(vsDate), 2)
tot2 = tot2 + 1
If (Cells(i, j + 1) < Date) Then 'datevalue(date)
nbcandidatfinsup = nbcandidatfinsup + 1
tot3 = tot3 + 1
Else
erreur => If (DateDiff("m", Date, Cells(i, j + 1)) <= "3") And (DateDiff("m", Date, Cells(i, j + 1)) >= "0") Then
nbdiff = nbdiff + 1
MsgBox i
End If
End If
End If
i = i + 1
Loop
//--affichage d'un tableau d'indicateur sur une autre page du classeur
Sheets("indicateurs").Select
ce traitement marche mais après un certain nombre de passage dans la boucle une erreur est détecté:
Plusieur lignes sont publiées sur la page indicateurs, mon code marche donc bien mais je ne sais aps pourquoi survient l'erreur. En théorie si il y avait une erreur de programation l'erreur devrai ce produire des le premier passage dans la boucle.
Erreur d'exécution '13' :
incompatibilité de type
Merci d'avance. killy99
A voir également:
Problème avec la fonction datediff(--,--,--[,--,--]) sous excel2003
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 7 mars 2007 à 11:46
Ami Killy,
voilà un geste de prudence (à ne jamais oublier quand on développe) :
nbcandidatfinsup = nbcandidatfinsup + 1
tot3 = tot3 + 1
Else
If not isdate(Cells(i, j + 1)) then
msgbox "STOPPEZ LA, NOM DE NOM car la cellule " & i & ":" & j + 1 & "a une date erronée"
exit sub
end if
erreur => If (DateDiff("m", Date, Cells(i, j + 1)) <= "3") And (DateDiff("m", Date, Cells(i, j + 1)) >= "0") Then
nbdiff = nbdiff + 1
MsgBox i
End If
killy99
Messages postés25Date d'inscriptionlundi 5 mars 2007StatutMembreDernière intervention 5 novembre 2008 7 mars 2007 à 09:03
En fait j'ai essayé pas mal de solutions, dont la comparaison avec une chaîne et une autre avec un numérique, mais l'erreur ce produit toujours.
If (DateDiff("m", Date, Cells(i, j + 1)) <= 3) And (DateDiff("m", Date, Cells(i, j + 1)) >= 0) Then
franchement je ne comprend pas, car sur environ 1000 occurances ,une trentaine entre dans la condition mais l'erreur ce produit après avoir testé environ 900 occurances.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 7 mars 2007 à 09:13
Salut,
Peu être devrais tu utiliser les propriétés explicitement... J'entends par là que actuellement tu passes à datediff en 3ème parametre un objet de type Range .d'accord il possède une propriété "par défaut" mais certaines fonctions préfèrent (sous peine de pas fonctionner) que l'on écrive tout soit par exemple Cells(i, j + 1).Value (Ou .Text)
Si ce n'est pas cela (et je pense que c'est pas ca), as tu verifié le contenu de Cells(i, j + 1). au moment où il te met l'erreur d'incompatiblité de type
killy99
Messages postés25Date d'inscriptionlundi 5 mars 2007StatutMembreDernière intervention 5 novembre 2008 7 mars 2007 à 09:37
je viens de tester en .value, j'ai également vérifié le contenu de la céllule en cours et de la suivante.
Le problème persiste toujours.
Par contre j'ai fait la génération de deux .xls, un avec les données relative à l'académie de Toulouse et un autre avec toute les données de france. Ma macro marche parfaitement sur le document de toulouse mais pas sur l'autre(qui contient plus de données, ce qui vas de soit).
killy99
Messages postés25Date d'inscriptionlundi 5 mars 2007StatutMembreDernière intervention 5 novembre 2008 7 mars 2007 à 11:28
Maissss ça pas possible ça!!!!!!!!!!!
pourquoi les gens qui insère des données dans une base font des erreurs , pourquoi ne pas mettre un calendar pour selectionner la date, je vais en causé deux mots aux responsable du site.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 7 mars 2007 à 11:33
Re,
C'est bien marrant... désolé je ne devrais pas rire mais. c'est plus fort que moi. ca doit être nerveux.
Comme quoi, quand on propose de vérifier les valeurs, c'est pas pour rien.