Erreur type 1004

Résolu
Prunett Messages postés 31 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
    2. Prunett Messages postés 31 Statut Membre
       
      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
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Prunett Messages postés 31 Statut Membre
       
      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
    4. Prunett Messages postés 31 Statut Membre
       
      Ah oui, merci je n'avais pas fait attention.
      Après modification, j'ai toujours cette erreur de type 1004
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Prunett Messages postés 31 Statut Membre
       
      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
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. Prunett Messages postés 31 Statut Membre
       
      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
    2. Prunett Messages postés 31 Statut Membre
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Prunett Messages postés 31 Statut Membre
         
        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