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 VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de maelstrom
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 108
    Points : 120
    Points
    120
    Par défaut Erreur 1004 VBA
    Bonjour,

    Tout d'abord désolé de l'intitulé imprécis du post mais je ne savais pas trop comment nommé cela autrement (J'ai bien conscience que l'erreur 1004 peut se déclencher pour plein de choses).

    Je ne suis pas un spécialiste du VBA, mais j'ai fait ce petit code, évidemment l'erreur 1004 "Erreur définie par l'application ou par l'objet" apparaît, cependant je ne comprend pas trop pourquoi. Voici le code si quelqu'un peut m'éclairer sur mon erreur merci d'avance:

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    Option Explicit
    Sub Main()
        Dim borderline(50) As Integer
        Dim criminel(50) As Integer
        Dim justicier(50) As Integer
        Dim habitant(50) As Integer
     
        Dim countBor As Integer
        Dim countCri As Integer
        Dim countJus As Integer
        Dim countHab As Integer
     
        Dim i, j As Integer
     
        countBor = 0
        countCri = 0
        countJus = 0
        countHab = 0
     
        For i = 3 To 300 Step 1
            If Feuil1.Cells(2, i) = "Borderline" Then
                borderline(countBor) = i
                countBor = countBor + 1
            ElseIf Feuil1.Cells(2, i) = "Criminel" Then
                criminel(countCri) = i
                countCri = countCri + 1
            ElseIf Feuil1.Cells(2, i) = "Justicier" Then
                justicier(countJus) = i
                countJus = countJus + 1
            ElseIf Feuil1.Cells(2, i) = "Habitant" Then
                habitant(countHab) = i
                countHab = countHab + 1
            End If
        Next
     
     
     
        Dim topBor As Integer
        Dim topBorLine As Integer
     
        Dim topCri As Integer
        Dim topCriLine As Integer
     
        Dim topJus As Integer
        Dim topJusLine As Integer
     
        Dim topHab As Integer
        Dim topHabLine As Integer
     
        topBor = 0
        topCri = 0
        topJus = 0
        topHab = 0
     
        For i = 3 To 34 Step 1
            For j = 1 To Range("AK12").Value
                If Feuil1.Cells(i, borderline(j)) > topBor Then
                    topBor = Feuil1.Cells(i, j)
                    topBorLine = j
                End If
            Next
            Feuil1.Cells(i, topBorLine).Font.FontStyle = "Gras"
            Feuil1.Cells(i, topBorLine).Font.Color = RGB(87, 102, 84)
     
            For j = 1 To Range("AK13").Value
                If Feuil1.Cells(i, criminel(j)) > topCri Then
                    topCri = Feuil1.Cells(i, j)
                    topCriLine = j
                End If
            Next
            Feuil1.Cells(i, topCriLine).Font.FontStyle = "Gras"
            Feuil1.Cells(i, topCriLine).Font.Color = RGB(133, 8, 8)
     
            For j = 1 To Range("AK15").Value
                If Feuil1.Cells(i, justicier(j)) > topJus Then
                    topJus = Feuil1.Cells(i, j)
                    topJusLine = j
                End If
            Next
            Feuil1.Cells(i, topJusLine).Font.FontStyle = "Gras"
            Feuil1.Cells(i, topJusLine).Font.Color = RGB(126, 166, 154)
     
            For j = 1 To Range("AK14").Value
                If Feuil1.Cells(i, habitant(j)) > topHab Then
                    topHab = Feuil1.Cells(i, j)
                    topHabLine = j
                End If
            Next
            Feuil1.Cells(i, topHabLine).Font.FontStyle = "Gras"
            Feuil1.Cells(i, topHabLine).Font.Color = RGB(47, 91, 120)
     
            topBor = 0
            topCri = 0
            topJus = 0
            topHab = 0
        Next
     
     
     
        Dim totalBor As Integer
        Dim topTotalBor As Integer
        Dim topTotalBorLine As Integer
     
        Dim totalCri As Integer
        Dim topTotalCri As Integer
        Dim topTotalCriLine As Integer
     
        Dim totalJus As Integer
        Dim topTotalJus As Integer
        Dim topTotalJusLine As Integer
     
        Dim totalHab As Integer
        Dim topTotalHab As Integer
        Dim topTotalHabLine As Integer
     
        topTotalBor = 0
        topTotalCri = 0
        topTotalJus = 0
        topTotalHab = 0
     
        For j = 1 To Range("AK12").Value
            If Feuil1.Cells(34, borderline(j)) > topTotalBor Then
                topTotalBor = Feuil1.Cells(34, j)
                topTotalBorLine = j
            End If
            totalBor = totalBor + Feuil1.Cells(34, j)
        Next
        Feuil1.Cells(37, 5) = totalBor
        Feuil1.Cells(38, 5) = Feuil1.Cells(1, topTotalBorLine)
     
        For j = 1 To Range("AK13").Value
            If Feuil1.Cells(34, criminel(j)) > topTotalCri Then
                topTotalCri = Feuil1.Cells(34, j)
                topTotalCriLine = j
            End If
            totalCri = totalCri + Feuil1.Cells(34, j)
        Next
        Feuil1.Cells(37, 6) = totalCri
        Feuil1.Cells(38, 6) = Feuil1.Cells(1, topTotalCriLine)
     
        For j = 1 To Range("AK15").Value
            If Feuil1.Cells(34, justicier(j)) > topTotalJus Then
                topTotalJus = Feuil1.Cells(34, j)
                topTotalJusLine = j
            End If
            totalJus = totalJus + Feuil1.Cells(34, j)
        Next
        Feuil1.Cells(37, 8) = totalJus
        Feuil1.Cells(38, 8) = Feuil1.Cells(1, topTotalJusLine)
     
        For j = 1 To Range("AK14").Value
            If Feuil1.Cells(34, habitant(j)) > topTotalHab Then
                topTotalHab = Feuil1.Cells(34, j)
                topTotalHabLine = j
            End If
            totalHab = totalHab + Feuil1.Cells(34, j)
        Next
        Feuil1.Cells(37, 7) = totalHab
        Feuil1.Cells(38, 7) = Feuil1.Cells(1, topTotalHabLine)
    End Sub
    PS: Je crois que c'est à cause de Feuil1.Cells(), mais je ne suis sûr de rien et même si c'est le cas je ne sais pas comment le changer (j'ai essayé avec Range, mais je n'ai pas eu plus de résultat).
    Madness ? THIS IS JAVA !!!
    SPARTAN ! What is your programming language ? JAVA ! JAVA ! JAVA !
    Code well, code readable, code in Allman style !

    N'oubliez pas de cliquer sur si ce commentaire vous a été utile et aussi sur si cela a... résolu ton problème !

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je dirai que tu as des variables à 0 qui sont utilisées pour des localisation de lignes ou de colonnes dans ce type de lignes de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Cells(i, topBorLine).Font.Color = RGB(87, 102, 84)
    bien sûr, ça peut être n'importe laquelle de tes variables integer ... tu dois lancer ta procédure en mode pas à pas et contrôler la valeur de tes variables au fur et à mesure

    en pas à pas, tu verras la ligne qui fait planter ta procédure d'ailleurs

  3. #3
    Invité
    Invité(e)
    Par défaut
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    Sub Main()
        Dim borderline(50) As Integer
        Dim criminel(50) As Integer
        Dim justicier(50) As Integer
        Dim habitant(50) As Integer
     
        Dim countBor As Integer
        Dim countCri As Integer
        Dim countJus As Integer
        Dim countHab As Integer
     
        Dim i, j As Integer
    Dim topBor As Integer
        Dim topBorLine As Integer
     
        Dim topCri As Integer
        Dim topCriLine As Integer
     
        Dim topJus As Integer
        Dim topJusLine As Integer
     
        Dim topHab As Integer
        Dim topHabLine As Integer
     
        topBor = 0
        topCri = 0
        topJus = 0
     
     
        countBor = 0
        countCri = 0
        countJus = 0
        countHab = 0
     With sheets("Feuil1")
     
        For i = 3 To 300 
    Select case .Cells(2, i)
              case "Borderline"
                borderline(countBor) = i
                countBor = countBor + 1
              case  "Criminel" 
                criminel(countCri) = i
                countCri = countCri + 1
                case "Justicier" 
                justicier(countJus) = i
                countJus = countJus + 1
               case "Habitant"
                habitant(countHab) = i
                countHab = countHab + 1
            End select
    Next
     
    For i = 3 To 34 Step 1
            For j = 1 To Range("AK12").Value
                If .Cells(i, borderline(j)) > topBor Then
                    topBor = .Cells(i, j)
                    topBorLine = j
                End If
            Next
            .Cells(i, topBorLine).Font.FontStyle = "Gras"
            .Cells(i, topBorLine).Font.Color = RGB(87, 102, 84)
     
    'et ainsi de suite jusqu'aux dernière 
    totalHab = totalHab + Feuil1.Cells(34, j)
        Next
        .Cells(37, 7) = totalHab
        .Cells(38, 7) = .Cells(1, topTotalHabLine)
     
     
    End with
    Dernière modification par Invité ; 10/02/2016 à 18h00.

  4. #4
    Membre régulier Avatar de maelstrom
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 108
    Points : 120
    Points
    120
    Par défaut
    Je vous remercie tous les deux, il y avait plusieurs petites erreurs, mais là plus grosse était que j'avais inversé les lignes et les colonne dans Cells(). D'ailleurs ce n'est pas vraiment faire de manière logique on rentre Cells(ligne, colonne) soit Cells(ordonné, abscisse) alors que la logique voudrais que ce soit l'inverse, enfin bref ceci est un autre débat. Je vous remercie encore pour votre aide à tous les deux
    Madness ? THIS IS JAVA !!!
    SPARTAN ! What is your programming language ? JAVA ! JAVA ! JAVA !
    Code well, code readable, code in Allman style !

    N'oubliez pas de cliquer sur si ce commentaire vous a été utile et aussi sur si cela a... résolu ton problème !

  5. #5
    Invité
    Invité(e)
    Par défaut
    La prochaine fois essais de données des noms de variable plus significatif, i veux tous dire et rien à la fois!

    Ca nous aurait permis de te mettre sur la voie!
    .cells(L,C)="toto"

  6. #6
    Membre régulier Avatar de maelstrom
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 108
    Points : 120
    Points
    120
    Par défaut
    Oui c'est tout à fait vrai, je mets i, j dans mes for() par pur réflexe, n'ayant pas l'habitude qu'ils représentent une ligne ou une colonne ^^'
    Madness ? THIS IS JAVA !!!
    SPARTAN ! What is your programming language ? JAVA ! JAVA ! JAVA !
    Code well, code readable, code in Allman style !

    N'oubliez pas de cliquer sur si ce commentaire vous a été utile et aussi sur si cela a... résolu ton problème !

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

Discussions similaires

  1. [XL-2010] erreur '1004' vba Excel
    Par chewi90 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/03/2015, 10h22
  2. Erreur 1004, VBA et Tableau Croisé Dynamique
    Par manu.68 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/02/2012, 08h59
  3. Débutant - Erreur 1004 VBA
    Par ilyaundebutatou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2010, 11h08
  4. [E-07] erreur '1004' vba Excel (suite)
    Par mrah1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2009, 17h48
  5. erreur '1004' vba Excel
    Par mrah1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2009, 16h56

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