mbelzou
Messages postés4Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention30 septembre 2009
-
28 sept. 2009 à 10:51
mbelzou
Messages postés4Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention30 septembre 2009
-
30 sept. 2009 à 09:48
Bonjour,
Je viens poster un morceau de mon code parce que la je suis un peu perdu, je ne comprends pas pourquoi cela ne marche que pour les dates de l'année 2009 !
Sinon il me met "Run-time error '1004' --: Application-defined or object-defined error
Voici mon bout de code, et ce qui m'embête c'est que pour 2009 ca marche super bien. (Je vous épargne la suite)
'general functions
Sub import_A2()
Application.StatusBar = ""
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim date_base As Date
'demander effacer données existantes
If MsgBox("Are you sure you want to import these data? This action will erease previous data..." & vbCrLf & " WARNING: you should have looked at the N/A in the database", 4, "Refresh Actuals") = vbYes Then
sheetname_report = "REPORT"
sheetname_synthese = "SYNTHESE"
sheetname_dtb = "A2"
site_report = "D"
Title_report = "G"
site_dtb = "AM"
vol_dtb = "AL"
date_dtb = "AK"
site_synth = "A"
Title_synth = "B"
nbre_col = 24 'sur 2 ans
datastartline_report = 2
datastartline_dtb = 2
datastartline_synth = 2
Set report = ActiveWorkbook
date_base = InputBox("Please inform the date", "Date", "01/MM/YYYY")
Cells(30, 4) = date_base
Cells(30, 5) = datastartline_report
lastl_report = thelastline
'//////////////////////////////SOMMMER LES INFOS DE REPORT DANS SYNTHESE///////////////////////////////////:
Sheets(sheetname_report).Select
lastl_report = thelastline
'trouver derniere ligne avant totaux et definir comme ligne de fin report
trouve = 0
For k = datastartline_report To lastl_report
If trouve = 0 Then
If Range(site_report & k) = "TOTAL" Then
line_end = k - 1
trouve = 1
End If
End If
Next
lastl_report = line_end
'définir la colonne de REPORT du début en fonction de la date renseignée
For h = 1 To 1000
'C'est la que ca plante, avec mon date_base
If Cells(datastartline_report - 1, h) = date_base Then
col_month = h
Exit For
End If
Next
J'ai essayé plein de trucs mais rien n'y fait...je soupçonne une erreur avec mon date_base mais je ne sais pas quoi.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 29 sept. 2009 à 00:29
Salut
Quand ça plante sur
If Cells(datastartline_report - 1, h) = date_base Then
que valent tes variables "datastartline_report" et "h" ??
Ces variables sont-elles dimensionnées ? où ? comment ?
Si le contenu des tes variables sont cohérentes (pas de 0 par exemple), qu'y a t-il dans la cellule désignée ?
Ta feuille est-elle toujours sélectionnée quand cette instruction s'adresse à Cells ?
"object-defined" semble vouloir dire que le programme ne sait pas à qui appartient la cellule
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
mbelzou
Messages postés4Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention30 septembre 2009 29 sept. 2009 à 09:30
Alors quand ca plante j'ai :
datastartline_report=2
h = 257
(Peu importe la date que je rentre si ce n'est pas en 2009 ca plante quand h vaut 257...)
Les contenus sont cohérents par exemple date_base vaut bien 01/01/2010.
Mes variables ne sont pas dimensionnées... ni datastartline_report, ni h.
Non ma feuille n'est pas forcement sélectionnée, ca s'exécute à partir d'une autre feuille, mais bon ca marche pour 2009 :-/.
En testant je viens de voir qu'il à un problème pour allez au delà de la 257 colonne...je dirais même qu'il me plante si je veux mettre un contenu dans une colonne 257 ou plus !
Donc dans la case ou il plante est vide. Enfin dans ces cases tu auras compris il y a la date pour comparer avec ma date_base mais si il va en 257ème colonne c'est qu'il n'a pas trouvé, donc que mon test n'a pas marché !
Je penche pour un raté pour l'identification comme tu le fais remarquer...il ne faut pas que je précise à chaque fois sur quelle feuille je travaille ?
Parce que j'avoue je jongle un peu entre les feuilles...ca peut venir de la ?
Enfin le truc qui me tue c'est que ca marche pour 2009 et pas le reste...
Si tu veux je peux envoyer mes fichiers pour voir le truc complet, ca peut peut-être aider...