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 :

VBA-Problème d'imbrication de boucles For (?)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut VBA-Problème d'imbrication de boucles For (?)
    Bonjour à tous et à toutes,

    L'Euro 2016 de football Hommes approche, et à cette occasion quelques amis m'ont demandé de réaliser une petite macro sympa. Sur une feuille Excel "Poules", on dispose à gauche de la feuille des différents tableaux de rencontres entre équipes pour les groupes A à F, dans lesquels on remplit les résultats des matchs. La macro est censée réaliser divers calculs afin de remplir les tableaux à droite de la feuille (nombre de points, nombre de matchs gagnés/perdus/nuls, nombre de buts pris ou encaissés, différence...). Elle trie enfin chaque tableau à droite selon le nombre de points puis selon la différence de buts.
    Je crée donc deux listes (cf code ci-dessous) contenant la liste des 24 équipes pour le premier et un compteur de point pour chacune pour le second. Ceux-ci me permettent, lorsque je parcours chaque poule, de repérer de quelle équipe je parle et donc d'entrer correctement les divers résultats dans les tableaux situés à droite de la feuille. J'utilise, au fur et à mesure de ma macro, 3 boucles For :
    -For pasligne : elle va de 11 en 11 et me permet de passer d'un groupe à l'autre
    -For ligne1 : elle parcourt les tableaux à gauche de la feuille (tableaux des rencontres)
    -For ligne2 : elle parcourt les tableaux à droite de la feuille (tableaux des résultats)
    J'ai aussi une boucle For i qui parcourt mes 2 listes


    Voici mon 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
    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
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
     
    Sub Classement()
     
    'Cette macro calcule, à partir des pronostics établis, le classement par groupe des équipes
    'Ensuite elle insère dans une autre feuille les pronostics en question pour les comparer ensuite aux résultats réels
    'pasligne va de 11 en 11, et permet de faire les calculs pour les groupes A à F
    'ligne1 parcourt le tableau de gauche
    'ligne2 parcourt le tableau de droite
    'les deux tableaux sont des listes, dans lesquelles on va aller chercher les noms de pays et leur nombre de points
    'les autres variables calculent les points, les buts marqués ou encaissés, etc etc...
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''' INITIALISATION DES VARIABLES '''''''''''''''''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
    'Liste des pays
    'On peut ainsi parcourir la liste de tous les pays pour y entrer les différents points via le compteur plus loin
    Dim GroupS(24) As String
    GroupS(0) = "France"
    GroupS(1) = "Albanie"
    GroupS(2) = "Roumanie"
    GroupS(3) = "Suisse"
    GroupS(4) = "Angleterre"
    GroupS(5) = "Pays de Galles"
    GroupS(6) = "Russie"
    GroupS(7) = "Slovaquie"
    GroupS(8) = "Allemagne"
    GroupS(9) = "Pologne"
    GroupS(10) = "Ukraine"
    GroupS(11) = "Irlande du Nord"
    GroupS(12) = "Espagne"
    GroupS(13) = "Turquie"
    GroupS(14) = "Rép. Tchèque"
    GroupS(15) = "Croatie"
    GroupS(16) = "Belgique"
    GroupS(17) = "Irlande"
    GroupS(18) = "Italie"
    GroupS(19) = "Suède"
    GroupS(20) = "Portugal"
    GroupS(21) = "Autriche"
    GroupS(22) = "Islande"
    GroupS(23) = "Hongrie"
     
    'Liste des compteurs de points par pays
    Dim GroupC(24) As Integer
    GroupC(0) = 0
    GroupC(1) = 0
    GroupC(2) = 0
    GroupC(3) = 0
    GroupC(4) = 0
    GroupC(5) = 0
    GroupC(6) = 0
    GroupC(7) = 0
    GroupC(8) = 0
    GroupC(9) = 0
    GroupC(10) = 0
    GroupC(11) = 0
    GroupC(12) = 0
    GroupC(13) = 0
    GroupC(14) = 0
    GroupC(15) = 0
    GroupC(16) = 0
    GroupC(17) = 0
    GroupC(18) = 0
    GroupC(19) = 0
    GroupC(20) = 0
    GroupC(21) = 0
    GroupC(22) = 0
    GroupC(23) = 0
     
    'Pour les boucles
    Dim i As Integer
    Dim ligne1 As Integer
    Dim ligne2 As Integer
    Dim pasligne As Integer
     
    'Pour les intitulés des colonnes
    Dim Paysgauche As Integer
    Paysgauche = 2
    Dim Paysdroite As Integer
    Paysdroite = 8
    Dim PTS As Integer
    PTS = 9
    Dim G As Integer
    G = 11
    Dim N As Integer
    N = 12
    Dim P As Integer
    P = 13
    Dim Bplus As Integer
    Bplus = 14
    Dim Bmoins As Integer
    Bmoins = 15
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''' Avant de faire quoi que ce soit, on remet les cellules à 0 ''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    For pasligne = 9 To 64 Step 11
     
        With Sheets("Poules")
     
                'Nombre de points
            Cells(pasligne + 1, PTS).Value = 0
            Cells(pasligne + 2, PTS).Value = 0
            Cells(pasligne + 3, PTS).Value = 0
            Cells(pasligne + 4, PTS).Value = 0
     
            'Nombre de matchs gagnés, nuls ou perdus
            Cells(pasligne + 1, G).Value = 0
            Cells(pasligne + 2, G).Value = 0
            Cells(pasligne + 3, G).Value = 0
            Cells(pasligne + 4, G).Value = 0
            Cells(pasligne + 1, N).Value = 0
            Cells(pasligne + 2, N).Value = 0
            Cells(pasligne + 3, N).Value = 0
            Cells(pasligne + 4, N).Value = 0
            Cells(pasligne + 1, P).Value = 0
            Cells(pasligne + 2, P).Value = 0
            Cells(pasligne + 3, P).Value = 0
            Cells(pasligne + 4, P).Value = 0
     
            'Nombre de buts marqués et de buts encaissés
            Cells(pasligne + 1, Bplus).Value = 0
            Cells(pasligne + 2, Bplus).Value = 0
            Cells(pasligne + 3, Bplus).Value = 0
            Cells(pasligne + 4, Bplus).Value = 0
            Cells(pasligne + 1, Bmoins).Value = 0
            Cells(pasligne + 2, Bmoins).Value = 0
            Cells(pasligne + 3, Bmoins).Value = 0
            Cells(pasligne + 4, Bmoins).Value = 0
     
            'Pour pays à gauche
            For ligne1 = pasligne To pasligne + 5
                For i = 0 To 23
                    If Cells(ligne1, Paysgauche).Value = GroupS(i) And Cells(ligne1, Paysgauche + 1).Value > Cells(ligne1, Paysgauche + 2).Value Then
                        GroupC(i) = GroupC(i) + 3
                    End If
                    If Cells(ligne1, Paysgauche).Value = GroupS(i) And Cells(ligne1, Paysgauche + 1).Value = Cells(ligne1, Paysgauche + 2).Value Then
                        GroupC(i) = GroupC(i) + 1
                    End If
                    If Cells(ligne1, Paysgauche).Value = GroupS(i) And Cells(ligne1, Paysgauche + 1).Value < Cells(ligne1, Paysgauche + 2).Value Then
                        GroupC(i) = GroupC(i) + 0
                    End If
                Next i
            Next ligne1
     
            'Pour pays à droite
            For ligne1 = pasligne To pasligne + 5
                For i = 0 To 23
                    If Cells(ligne1, Paysgauche + 3).Value = GroupS(i) And Cells(ligne1, Paysgauche + 1).Value < Cells(ligne1, Paysgauche + 2).Value Then
                        GroupC(i) = GroupC(i) + 3
                    End If
                    If Cells(ligne1, Paysgauche + 3).Value = GroupS(i) And Cells(ligne1, Paysgauche + 1).Value = Cells(ligne1, Paysgauche + 2).Value Then
                        GroupC(i) = GroupC(i) + 1
                    End If
                    If Cells(ligne1, Paysgauche + 3).Value = GroupS(i) And Cells(ligne1, Paysgauche + 1).Value > Cells(ligne1, Paysgauche + 2).Value Then
                        GroupC(i) = GroupC(i) + 0
                    End If
                Next i
            Next ligne1
     
            'On entre le nombre de points dans le tableau
            For ligne2 = pasligne + 1 To pasligne + 4
                For i = 0 To 23
                    If Cells(ligne2, Paysdroite).Value = GroupS(i) Then
                        Cells(ligne2, PTS).Value = GroupC(i)
                    End If
                Next i
            Next ligne2
     
            'Nombre de matchs gagnés, nuls ou perdus
            For ligne1 = pasligne To pasligne + 5
                For ligne2 = pasligne + 1 To pasligne + 4
                    'Gagné pour colonne de gauche
                    If Cells(ligne1, Paysgauche).Value = Cells(ligne2, Paysdroite).Value And Cells(ligne1, Paysgauche + 1).Value > Cells(ligne1, Paysgauche + 2).Value Then
                        Cells(ligne2, G).Value = Cells(ligne2, G).Value + 1
                    End If
                    'Nul pour colonne de gauche
                    If Cells(ligne1, Paysgauche).Value = Cells(ligne2, Paysdroite).Value And Cells(ligne1, Paysgauche + 1).Value = Cells(ligne1, Paysgauche + 2).Value Then
                        Cells(ligne2, N).Value = Cells(ligne2, N).Value + 1
                    End If
                    'Perdu pour colonne de gauche
                    If Cells(ligne1, Paysgauche).Value = Cells(ligne2, Paysdroite).Value And Cells(ligne1, Paysgauche + 1).Value < Cells(ligne1, Paysgauche + 2).Value Then
                        Cells(ligne2, P).Value = Cells(ligne2, P).Value + 1
                    End If
     
                    'Gagné pour colonne de droite
                    If Cells(ligne1, Paysgauche + 3).Value = Cells(ligne2, Paysdroite).Value And Cells(ligne1, Paysgauche + 1).Value < Cells(ligne1, Paysgauche + 2).Value Then
                        Cells(ligne2, G).Value = Cells(ligne2, G).Value + 1
                    End If
                    'Nul pour colonne de droite
                    If Cells(ligne1, Paysgauche + 3).Value = Cells(ligne2, Paysdroite).Value And Cells(ligne1, Paysgauche + 1).Value = Cells(ligne1, Paysgauche + 2).Value Then
                        Cells(ligne2, N).Value = Cells(ligne2, N).Value + 1
                    End If
                    'Perdu pour colonne de droite
                    If Cells(ligne1, Paysgauche + 3).Value = Cells(ligne2, Paysdroite).Value And Cells(ligne1, Paysgauche + 1).Value > Cells(ligne1, Paysgauche + 2).Value Then
                        Cells(ligne2, P).Value = Cells(ligne2, P).Value + 1
                    End If
     
                Next ligne2
            Next ligne1
     
            'Nombre de buts marqués et de buts encaissés
            For ligne1 = pasligne To pasligne + 5
                For ligne2 = pasligne + 1 To pasligne + 4
                    If Cells(ligne1, Paysgauche).Value = Cells(ligne2, Paysdroite).Value Then
                        Cells(ligne2, Bplus).Value = Cells(ligne2, Bplus).Value + Cells(ligne1, Paysgauche + 1).Value
                        Cells(ligne2, Bmoins).Value = Cells(ligne2, Bmoins).Value + Cells(ligne1, Paysgauche + 2).Value
                    End If
                    If Cells(ligne1, Paysgauche + 3).Value = Cells(ligne2, Paysdroite).Value Then
                        Cells(ligne2, Bplus).Value = Cells(ligne2, Bplus).Value + Cells(ligne1, Paysgauche + 2).Value
                        Cells(ligne2, Bmoins).Value = Cells(ligne2, Bmoins).Value + Cells(ligne1, Paysgauche + 1).Value
                    End If
                Next ligne2
            Next ligne1
     
            'On trie ensuite chaque tableau du 1er au dernier du groupe
            Dim MaPlage As Object
            Set MaPlage = Range("H" & pasligne & ":P" & pasligne + 4)
            Dim MaPlage2 As Object
            Set MaPlage2 = Range("I" & pasligne)
            Dim MaPlage3 As Object
            Set MaPlage3 = Range("P" & pasligne)
            With Sheets("Feuil3")
     
            MaPlage.Select
            Selection.Sort Key1:=MaPlage2, Order1:=xlDescending, Key2:=MaPlage3 _
            , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
            False, Orientation:=xlTopToBottom
     
        End With
     
    Next pasligne
     
    End Sub


    Mon problème est le suivant : lorsque j'exécute ma macro, l'erreur "Next sans For" apparaît.

    En supposant que mes yeux sont encore à peu près corrects, j'ai bien fermé chaque If et chaque boucle For (pour plus de sûreté j'ai rajouté la variable concernée après le Next, sans résultat). En outre, j'avais au préalable essayé la macro uniquement pour le groupe A (en utilisant uniquement les boucles For ligne1, For ligne2 et For i) et ça marchait très bien. Il semble que l'erreur concerne le Next pasligne. Bien que j'aie conscience que ma question a déjà été posée ailleurs, les solutions proposées alors n'ont pas semblé correspondre à mon problème.
    Aussi, j'en appelle à vous : auriez-vous une idée pour me sortir de là s'il vous plaît?
    Merci et bonne journée.


    P.S : j'ai indenté et commenté mon code autant que possible, cela étant il peut sembler un peu dense, ou peut-être pas très ergonomique. Je vous prie de ne pas vous attarder sur ce bémol autant que faire se peut...

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    c'est une lacune de la compilation VBA lorsqu'une instruction est manquante l'erreur se déclenche sur une autre …

    En fait il manque un End With ! (ou un With est de trop …)


    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Bonjour,

    Merci pour cette information, je la range dans un coin de ma tête.
    Cela étant, où se trouve le End With manquant? J'utilise bien un With Sheets("Poules") (ligne 104) mais, sauf erreur de ma part, je la ferme ensuite avec un End With (ligne 235)...A
    Autant que faire se peut j'aimerais conserver le With Sheets("Poules"), une maladresse d'un ami ne maitrisant pas VBA est si vite arrivée...


    (Ajout 31/05/2016-12:20) Juste pour être sûr, j'ai tout de même enlevé le With Sheets("Poules") et le End With, mais l'erreur reste là...

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour
    sauf erreur, il y a deux with l104 et l228 et seulement un end with l235

    De plus tes with ne servent a rien ici, il faut mettre des "." devant tes instructions pour que le with soit pris en compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with machin
     .Cells(pasligne + 1, PTS).Value = 0
    end with

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Bonjour,

    Ce With m'avait échappé, et en effet ça marche!
    Merci pour vos réponses à tous les deux et bonne journée.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    sans vouloir analyser le code, je trouve que cette partie ne sert à rien
    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
    .....
    GroupC(0) = 0
    GroupC(1) = 0
    GroupC(2) = 0
    GroupC(3) = 0
    GroupC(4) = 0
    GroupC(5) = 0
    GroupC(6) = 0
    GroupC(7) = 0
    GroupC(8) = 0
    GroupC(9) = 0
    GroupC(10) = 0
    GroupC(11) = 0
    GroupC(12) = 0
    GroupC(13) = 0
    GroupC(14) = 0
    GroupC(15) = 0
    GroupC(16) = 0
    GroupC(17) = 0
    GroupC(18) = 0
    GroupC(19) = 0
    GroupC(20) = 0
    GroupC(21) = 0
    GroupC(22) = 0
    GroupC(23) = 0
    .....
    étant donné que GroupC vient d'être déclaré, d'ailleurs, je fait partie des gens qui préfère déclarer toutes les variables spécifiques à la procédure, juste après "Sub..()

    ensuite, cette partie
    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
     
            Cells(pasligne + 2, PTS).Value = 0
            Cells(pasligne + 2, PTS).Value = 0
            Cells(pasligne + 3, PTS).Value = 0
            Cells(pasligne + 4, PTS).Value = 0
     
            'Nombre de matchs gagnés, nuls ou perdus
            Cells(pasligne + 1, G).Value = 0
            Cells(pasligne + 2, G).Value = 0
            Cells(pasligne + 3, G).Value = 0
            Cells(pasligne + 4, G).Value = 0
            Cells(pasligne + 1, N).Value = 0
            Cells(pasligne + 2, N).Value = 0
            Cells(pasligne + 3, N).Value = 0
            Cells(pasligne + 4, N).Value = 0
            Cells(pasligne + 1, P).Value = 0
            Cells(pasligne + 2, P).Value = 0
            Cells(pasligne + 3, P).Value = 0
            Cells(pasligne + 4, P).Value = 0
     
            'Nombre de buts marqués et de buts encaissés
            Cells(pasligne + 1, Bplus).Value = 0
            Cells(pasligne + 2, Bplus).Value = 0
            Cells(pasligne + 3, Bplus).Value = 0
            Cells(pasligne + 4, Bplus).Value = 0
            Cells(pasligne + 1, Bmoins).Value = 0
            Cells(pasligne + 2, Bmoins).Value = 0
            Cells(pasligne + 3, Bmoins).Value = 0
            Cells(pasligne + 4, Bmoins).Value = 0
    peut être remplacée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     With Sheets("Poules")
             'Nombre de points
            .Range(.Cells(10, PTS), .Cells(13, PTS)).Value = 0
            'Nombre de matchs gagnés, nuls ou perdus
            .Range(.Cells(10, G), .Cells(13, G)).Value = 0
            .Range(.Cells(10, N), .Cells(13, N)).Value = 0
            .Range(.Cells(10, P), .Cells(13, P)).Value = 0
            'Nombre de buts marqués et de buts encaissés
            .Range(.Cells(10, Bplus), .Cells(13, Bplus)).Value = 0
            .Range(.Cells(10, Bmoins), .Cells(13, Bmoins)).Value = 0
            '.................
    End With
    je n'ai pas regardé le reste
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Bonjour,

    La raison pour laquelle j'écris au début GroupC(i)=0 (0<=i<=23) est que ça permet, à mon sens, de remettre tous ces compteurs à 0 dès qu'un utilisateur relance la macro (s'il a changé ses pronostics par exemple). Ainsi, si la France avait 4 points lors de la 1ère exécution de la macro, et que l'on veut qu'elle ait 5 points (parce qu'on a revu nos pronostics) lors d'une 2ème exécution de la macro, remettre ces compteurs à 0 évite, selon moi, que l'on se retrouve avec une France comptabilisant un total de 9 points...
    Pour les autres remarques c'est exactement ce que je voulais dire en parlant de mon manque d'ergonomie de mon code, donc merci beaucoup!

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    et bien fais l'essai
    tu verras que j'ai raison, si tu lances la macro tes éléments du tableau ne seront même pas à 0 mais vide, ce qui revient au même, d'autant que cette variable est déclarée dans la procédure

    Edit : pour le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '....
    Dim GroupC(24)
    For i = 0 To UBound(GroupC) - 1
      MsgBox GroupC(i)
    Next i
     
    '...
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. [XL-2003] VBA problème avec la une boucle for range.end(xlup).row après suppression de lignes
    Par JohnNC115 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 25/01/2011, 10h21
  2. Encore problème d'imbrication de boucles
    Par flora806 dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2008, 15h25
  3. [FLASH 8] Problème nom variable et boucle for
    Par jbidou88 dans le forum Flash
    Réponses: 10
    Dernier message: 23/03/2007, 11h36
  4. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 15h47
  5. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36

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