Fonction qui ne s'execute qu'en 2009...

Résolu
mbelzou Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 30 septembre 2009 - 28 sept. 2009 à 10:51
mbelzou Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 30 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.

Si vous avez des idées, je suis preneur.

Merci d'avance

3 réponses

mbelzou Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 30 septembre 2009
30 sept. 2009 à 09:48
Bon j'ai galéré, et j'ai tout repris depuis un fichier vierge, et la ca marche...peu importe l'année.

Donc comme tu l'as soulevé Jack, ca devait venir du référencement de mes cellules.

Merci pour l'aide.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
mbelzou Messages postés 4 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 30 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...

En tous cas merci du coup de main.
0
Rejoignez-nous