IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

erreur 1004 Erreur définie par l'application ou par l'objet [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut erreur 1004 Erreur définie par l'application ou par l'objet
    Bonjour à tous,

    Je viens juste de me mettre au VBA pour faire du traitement de données sur Excel, et je suis confronté à l'erreur 1004 "Erreur définie par l'application ou par l'objet".

    La problématique est la suivante :

    J'ai des colonnes de données, et je veux faire des moyennes d'une partie de ces données. Par exemple je fais la moyenne des cellules (42,i) et (44,i) et j'envois le résultat dans la cellule (6, i) (cf code ci-dessous).

    Le problème est que le premier code marche très bien (le "Janvierlissagesemaine"), alors que le deuxième code ("Janvierlissagedimanche"), qui est un copié collé du premier avec seulement des modifications au niveau des colonnes sélectionnées, ne marche que partiellement : j'obtiens bien mes moyennes dans les cellules (31, i+1) mais dans toutes les autres cellules de (31+1, i+1) à (31+4, i+1) les moyennes affichées sont nulles!

    Pourtant j'ai vérifié les cellules appellées ne sont pas vides, elles contiennent bien des nombres; et j'ai essayé d'ouvrir un nouveau tableau excel, je l'ai rempli avec des nombres aléatoires (pour voir si l'erreur ne venait pas de mes données sélectionnées), j'ai ouvert VBA et fait un copié collé des codes utilisés précédemment, et j'ai obtenu le même résultat, à savoir le "Janvierlissagesemaine" qui marche très bien, et le "Janvierlissagedimanche" que partiellement.

    Le code erreur apparaît dans le CODE 2 au niveau de cette ligne : Set Cellules1 = Union(Cells(150, i), Cells(152, i), Cells(154, i)).

    Merci beaucoup d'avance pour votre aide, je suis en stage et coincé depuis hier dessus...

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Sub JanvierLissagesemaine()
    'CODE1
    'Lissage semaine Janvier
    'i est le numéro de la colonne du tableau
     
    For i = 3 To 25
     
                    Dim Cellules1 As Range
                    Dim Cellules2 As Range
                    Dim Cellules3 As Range
                    Dim Cellules4 As Range
                    Dim Cellules5 As Range
                    Dim Cellules6 As Range
                    Dim Cellules7 As Range
     
                    Set Cellules1 = Union(Cells(42, i), Cells(44, i))
                    Set Cellules2 = Union(Cells(46, i), Cells(48, i), Cells(50, i), Cells(52, i))
                    Set Cellules3 = Union(Cells(54, i), Cells(56, i))
                    Set Cellules4 = Union(Cells(58, i), Cells(60, i), Cells(62, i), Cells(64, i), Cells(66, i))
                    Set Cellules5 = Union(Cells(68, i), Cells(70, i), Cells(72, i), Cells(74, i))
                    Set Cellules6 = Union(Cells(76, i), Cells(78, i), Cells(80, i), Cells(82, i))
                    Set Cellules7 = Union(Cells(84, i), Cells(86, i), Cells(88, i))
     
                    Cells(6, i + 1).Value = WorksheetFunction.Average(Cellules1)
                    Cells(6 + 1, i + 1).Value = WorksheetFunction.Average(Cellules2)
                    Cells(6 + 2, i + 1).Value = WorksheetFunction.Average(Cellules3)
                    Cells(6 + 3, i + 1).Value = WorksheetFunction.Average(Cellules4)
                    Cells(6 + 4, i + 1).Value = WorksheetFunction.Average(Cellules5)
                    Cells(6 + 5, i + 1).Value = WorksheetFunction.Average(Cellules6)
                    Cells(6 + 6, i + 1).Value = WorksheetFunction.Average(Cellules7)
     
    Next
     
    End Sub
    Sub JanvierLissagedimanche()
    'Lissage dimanche
    'CODE 2
     
    For i = 3 To 6
     
                    Dim Cellules1 As Range
                    Dim Cellules2 As Range
                    Dim Cellules3 As Range
                    Dim Cellules4 As Range
                    Dim Cellules5 As Range
     
                    Set Cellules1 = Union(Cells(150, i), Cells(152, i), Cells(154, i))
                    Set Cellules2 = Union(Cells(156, i), Cells(160, i), Cells(162, i), Cells(164, i), Cells(166, i), Cells(168, i))
                    Set Cellules3 = Union(Cells(170, i), Cells(172, i), Cells(174, i), Cells(176, i), Cells(178, i), Cells(180, i), Cells(182, i), Cells(184, i))
                    Set Cellules4 = Union(Cells(184, i), Cells(186, i), Cells(188, i), Cells(190, i), Cells(192, i))
                    Set Cellules5 = Union(Cells(194, i), Cells(196, i))
     
     
                    Cells(31, i + 1).Value = WorksheetFunction.Average(Cellules1)
                    Cells(31 + 1, i + 1).Value = WorksheetFunction.Average(Cellule2)
                    Cells(31 + 2, i + 1).Value = WorksheetFunction.Average(Cellule3)
                    Cells(31 + 3, i + 1).Value = WorksheetFunction.Average(Cellule4)
                    Cells(31 + 4, i + 1).Value = WorksheetFunction.Average(Cellule5)
     
    Next
     
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la seule erreur que je rencontre, c'est quand l'ensemble de ta plage ne contient pas de chiffre

    tes "nombres" ne seraient-ils pas au format texte ?

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut
    Merci beaucoup pour votre réponse... malheureusement cela ne résout pas le problème j'ai bien vérifié ils sont tous au format "nombre"

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ta procédure utilise les cellules de la feuille active

    si tu lances ton code depuis la feuille "Toto" ... ça va faire les calculs dans la feuille "Toto"

    ça ne viendrait pas non plus de là ? Tu penses réaliser le calcul sur la feuille "Tata" qui n'est pas la feuille active ?

    Il est toujours conseillé de rattacher les Cells à la feuille à laquelle ils appartiennent

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    les valeurs dans ta cellule, sont centé à droite ou à gauche (Vue Comme des nombre ou du texte)?

    tu peux lire 1,2 ou 1.2 ?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Par défaut
    Tu peux caser un

    avant l'instruction qui coince ?

    Sinon, tu peux tester toutes tes cellules qui contiennent du chiffre avec la formule
    A2 tant ici une case a tester

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut
    Merci à tous,

    Joe.levrai : comment je peux affecter une cellule à une feuille?

    Djohn92 : J'ai testé avec estnum les cellules contiennet bien des nombres, j'ai inclus le "msgbox i" avant la ligne qui coince, cela m'a renvoyé successivement 3, 4, 5 et 6.... je ne comprends pas bien à quoi cela sert

  8. #8
    Invité
    Invité(e)
    Par défaut
    quelle différence que ton msgbox t'affiche 3 ou "3" ?

    ce qui compte c'est Excel! l'alignement est à droit ou à gauche dans tes cellules?

    Val("3") = 3

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Par défaut
    alignement à droite rdurupt

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    si tu reçois bien les messages 3 jusque 6, ça veut dire que ta boucle fonctionne

    le programme a ensuite planté après avoir affiché 6 ?

    au passage, tu peux mettre tout tes "Dim Cellule ..." avant ta boucle For i = 3 to 6 ... ça sera déjà plus propre


    EDIT : on est trois à lui répondre en même temps, on va l'embrouiller ! Je me retire et vous laisse la main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Erreur d'éxécution 1004 Erreur définie par l'application ou par l'objet
    Par tokis dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/06/2012, 14h18
  2. Erreur d'exécution 1004. Erreur définie par l'application ou par l'object
    Par Quentin15 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/06/2011, 20h59
  3. ERREUR 1004-erreur défini par l'application ou par l'objet
    Par zineb87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2010, 16h40
  4. Erreur 1004 définie par l'application ou par l'objet
    Par GreatDeveloperOnizuka dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/12/2007, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo