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 :

Génération d'une moyenne grâce à une boucle mais erreur 1004


Sujet :

Macros et VBA Excel

  1. #1
    Sey34
    Invité(e)
    Par défaut Génération d'une moyenne grâce à une boucle mais erreur 1004
    Bonjour à tous,

    Je suis étudiante en finance et donc malheureusement très peu à l'aise avec VBA. Mais je me dois de faire un programme sous excel alors j'ai essayé de programmer et en vain il ne fonctionne pas. Le but du programme est plus ou moins simple et part d'une base de données sur des catégories de voitures :


    -dans un premier temps une macro doit générer automatiquement dans chaque feuille du classeur chaque catégorie de voiture sauf que à l'exécution de ma macro je reçois le message "erreur 1004 vba erreur définie par l'application ou par l'objet" >> Je n'ai pas vu où est l'erreur est -ce que l'un d'entre vous pourrait m'indiquer quoi modifier?





    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
     
    Private Sub creation()
     
        Dim objsheet As Worksheet
     
        Set objsheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
        objsheet.Name = nom
     
     
    End Sub
     
     
    Private Sub ajoutcontenu()
     
        Dim n As Integer
        Dim m As Integer
        Dim p As Integer
        Dim objCell As Object
     
     
        m = 1
        p = K
        Do While p < (K + 5)
            n = 1
            Set objCell = Worksheets("Données").Cells(p, m)
            Do Until IsEmpty(objCell) And IsEmpty(objCell.Offset(p, m + 2))
                Worksheets(nom).Cells(n, m).Value = objCell.Value
                 m = m + 1
                Set objCell = Worksheets("Données").Cells(p, m)
            Loop
            p = p + 1
            m = m + 1
        Loop
     
     
    End Sub
     
    Private Sub SetupFile()
     
        Dim objCell As Object
        Dim n As Integer
     
        n = 1
        Set objCell = Worksheets("Données").Cells(n, 1)
        Do Until IsEmpty(objCell) And IsEmpty(objCell.Offset(1, 0))
            creation Worksheets("Données").Cells((n + 2), 1).Value
            ajoutcontenu Worksheets("Données").Cells((n + 2), 1).Value, n
            n = n + 5
            Set objCell = Worksheets("Données").Cells(n, 1)
        Loop
     
     
    End Sub
     
    Private Sub ouvrir()
        SetupFile
    End Sub

    - par la suite j'ai réussi à générer un tableau qui à partir de la base de données reclassent les indices des catégories de voiture selon l'année en ligne et les mois en colonne (à l'origine les données sont sur la même ligne quelque soit le mois et l'année) mais...il me manque un petit élément à rajouter à ma boucle il faudrait qu'après les douze mois de l'année (en ligne) il y ait une moyenne de ses chiffres pour l'année en question et cela pour chaque année.
    J'ai cru comprendre qu'il fallait faire une boucle imbriquée mais je ne sais vraiment pas comment m'y prendre. Auriez -vous une idée ?

    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
     
     
      Sub tableau1()
    Dim n, m As Integer
    n = 3
    m = 8
     
     
    année = 1
     
     
    Cells(7, 3).Value = "Janvier"
    Cells(7, 4).Value = "Février"
    Cells(7, 5).Value = "Mars"
    Cells(7, 6).Value = "Avril"
    Cells(7, 7).Value = "Mai"
    Cells(7, 8).Value = "Juin"
    Cells(7, 9).Value = "Juillet"
    Cells(7, 10).Value = "Août"
    Cells(7, 11).Value = "Septembre"
    Cells(7, 12).Value = "Octobre"
    Cells(7, 13).Value = "Novembre"
    Cells(7, 14).Value = "Décembre"
     
     
    Do While Cells(3, n).Value <> ""
        mois = 1
        Cells(m, 1).Value = Year(Cells(2, n).Value)
        Do While mois <= 12
            Cells(m, mois + 2).Value = Cells(3, n).Value
            n = n + 1
            mois = mois + 1
        Loop
        m = m + 1
    Loop
     
    End Sub
    Je vous ai donc joint la base de donnée où il y a les onglets de créer, et un word de ce à quoi les tableaux devrait ressembler à la fin !

    Je vous remercie mille fois pour votre aide et espère m'en sortir

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Voir le fichier modifié joint.

    -Vos procédures doivent être placées dans des modules standards.
    -ThisWorkbook ne devrait contenir que la procédure qui lance la création des feuilles ou qui oriente vers la feuille menu comme dans le fichier joint.
    -Vos procédures Création et Ajout_Contenu plantaient car vous précisiez pour leur lancement, un paramètre non défini entre les parenthèses dans Sub Creation() et Sub Ajout_Contenu().

    Pour la suite, je vous conseille de mettre Option Explicit en tête de vos modules, pour vous obliger à déclarer vos variables. Vous auriez vu tout de suite que le programme plantait au niveau de la variable "nom".

    Choisissez des noms de variable très explicites et pas des N, M..... pour vous repérer facilement si vous avez à maintenir le code par la suite.

    Je vous laisse le soin de faire le tableau 3... sur le modèle de Tableau1, je n'aurai pas le temps de vous aider.

    Bonne continuation.


    Cordialement.

  3. #3
    Sey34
    Invité(e)
    Par défaut Merci
    Bonjour,

    Je vous remercie infiniment pour votre aide. J'ai pris notes de vos conseils. Je n'ai pas encore pu ouvrir le fichier mais éventuellement si questions je me permettrais de vous relancer ! Merci encore

    Bien à vous

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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