Erreur type 1004

Résolu/Fermé
Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015 - 28 avril 2015 à 14:11
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 28 avril 2015 à 16:06
Bonjour,

Je souhaite calculer la température moyenne pour 24h et ça sur toute l'année. J'ai réalisé le programme suivante sur Excel

Sub temp_ext_moy_24h()

Dim Derlig As Integer, Nbre_jours As Integer
Dim Lig As Integer, Jour As Integer, T_jour, T_temp, tab_temp_moy_ext

'Température extérieure moyenne sur 24h

'initialisations

Application.ScreenUpdating = False
'nettoyage tableau résultats
Worksheets("Données inter PMV et DR").Range("AN2:AN8760").ClearContents
Derlig = Worksheets("Données inter PMV et DR").Columns("A").Find("*", , , , , xlPrevious).Row
Nbre_jours = (Derlig - 1) / 24 ' prendre en compte année bissectiles
ReDim tab_temp_moy_ext(Nbre_jours, 3) 'champ2=jour, 1=mois 3:maxi,4: mini

'------Mémorisation de la température moyenne extérieure

For Lig = 2 To Derlig Step 24
Jour = Jour + 1
T_jour = Worksheets("Données inter PMV et DR").Range(Cells(Lig, "A"), Cells(Lig, "B"))
T_temp = Worksheets("Données inter PMV et DR").Range(Cells(Lig, "D"), Cells(Lig + 23, "D"))
tab_temp_moy_ext(Jour, 1) = T_jour(1, 1)
tab_temp_moy_ext(Jour, 2) = T_jour(1, 2)
tab_temp_moy_ext(Jour, 3) = Application.Average(T_temp)


Next

'-----Restitutions des mesures
Worksheets("Données inter PMV et DR").Range("AN2").Resize(UBound(tab_temp_moy_ext), 3) = tab_temp_moy_ext

End Sub


Le problème c'est que sur la ligne de code
 T_jour = Worksheets("Données inter PMV et DR").Range(Cells(Lig, "A"), Cells(Lig, "B"))
,
j'ai une erreur de type 1004, "Erreur définie par l'application ou l'objet"

Je n'arrive pas à résoudre ce problème.

En vous remerciant d'avance,

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
28 avril 2015 à 14:17
Bonjour,

Selon toi, que doit contenir la variab le T_jour ?
Si c'est le contenu d'une cellule ou bien correspondre à un RANGE ?

Si c'est un range il faut écrire :

Dim T_jour  as Range

SET T_jour = Worksheets("Données inter PMV et DR").Range(Cells(Lig, "A"), Cells(Lig, "B"))

 
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
28 avril 2015 à 14:19
Au passage ....
Pour éviter de devoir réécrire le nom de ta Feuille à chaque fois... tu ferais mieux de la déclarer tu début de ton code de cette façon :

Dim oSh as WorkSheet
Set oSh =  Worksheets("Données inter PMV et DR")

et ensuite pour l'utiliser dans ton code :
oSh.Range("AN2:AN8760").ClearContents

'...
SET T_jour = oSh.Range(Cells(Lig, "A"), Cells(Lig, "B"))
0
Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 14:30
Merci pour le conseil.

Je ne sais pas bien si ça doit être une cellule ou bien correspondre à un RANGE. Pour moi ce serait un range, car je veux déclarer les variables de mon tableau.

Cependant si je suis ta méthode, lorsque je déclare
Dim T_jour as Range
, il m'indique que j'ai une erreur de compilation : déclaration existante dans la portée en cours.

Je débute en VBA, et certaines choses (un certain nombre) m'échappent encore.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 14:33
oui ... tu as déjà déclaré cette variable au début de ton code...
il faut juste la remplacer par la mienne (même si ne pas spécifier le RANGE devrait fonctionner.. mais c'est moins propre...)
0
Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 14:35
Ah oui, merci je n'avais pas fait attention.
Après modification, j'ai toujours cette erreur de type 1004
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 14:44
Tu es sûr que c'est sur la même ligne ?
Ne serait-ce pas sur l'autre : T_temp ??
(pour laquelle il faut appliquer la même chose ! )

Si le souci persiste.. reviens nous montrer ton code corrigé ...
NB : Merci d'ajouter le LANGAGE dans les balises de code (à savoir : basic )
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
28 avril 2015 à 15:22
Je viens de tester ... aucun souci chez moi :
Sub temp_moy_24h()

Dim Derlig As Integer, Nbre_jours As Integer
Dim Lig As Integer, Jour As Integer, tab_temp_moy_ext
Dim T_jour As Range
Dim T_temp As Range

Dim oSh As Worksheet
Set oSh = Worksheets("Données inter PMV et DR")


'Température extérieure moyenne sur 24h

'initialisations

    Application.ScreenUpdating = False
    'nettoyage tableau résultats
    oSh.Range("AN2:AN8760").ClearContents
    Derlig = oSh.Columns("A").Find("*", , , , , xlPrevious).Row
    Nbre_jours = (Derlig - 1) / 24
    ReDim tab_temp_moy_ext(Nbre_jours, 3)
    
'------Mémorisation des températures maxi/mini par jour/mois

    For Lig = 2 To Derlig Step 24
        Jour = Jour + 1
        Set T_jour = oSh.Range(Cells(Lig, "A"), Cells(Lig, "B"))
        Set T_temp = oSh.Range(Cells(Lig, "D"), Cells(Lig + 23, "D"))
        tab_temp_moy_ext(Jour, 1) = T_jour(1, 1)
        tab_temp_moy_ext(Jour, 2) = T_jour(1, 2)
        tab_temp_moy_ext(Jour, 3) = Application.Average(T_temp)

        
    Next
    
'-----Restitutions des mesures
    oSh.Range("AN2").Resize(UBound(tab_temp_moy_ext), 3) = tab_temp_moy_ext
        
End Sub


Si ça bloque encore chez toi ... postes nous un fichier Excel d'exemple contenant ta macro (sur un site comme cijoint.com par exemple) et donnes nous le lien pour le récupérer.

0
Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 15:45
Comme tu m'as dit que ça ne posait pas de problème chez toi, j'ai essayé sur un autre fichier excel. Et en effet ça fonctionne.
Je ne comprends pas pourquoi sur mon fichier de départ cela ne fonctionne pas.
0
Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 15:47
Par contre, je n'arrive pas à calculer la moyenne des températures pour chaque jour.
Du coup, je ne suis pas sure que mon code de départ
tab_temp_moy_ext(Jour, 3) = Application.Average(T_temp)
soit juste
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Prunett Messages postés 30 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 12 mai 2015
28 avril 2015 à 16:06
Qui dit "Nouveau problème" ou "nouvelle question" dit : Ouverture d'une Nouvelle Discussion (propre à cette question).
Cela permettra à d'autres internautes de pouvoir plus facilement retrouver la réponse si ils rencontrent le même souci que toi.
0