Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2012, 16h37   #1
Invité de passage
 
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 0
Points : 0
Par défaut Problème avec fonction VBA

Bonjour à tous !

J'ai débuté VBA hier (je pars absolument de 0 !) et je bloque déjà sur un petit exercice. Pourriez-vous m'aider à comprendre pourquoi ça ne marche pas s'il vous plait ?


Les données :

Je dispose d'une plage X de notes, il a 2 lignes et 2 colonnes.

J'ai une plage N de coefficients, 2 lignes 2 colonnes aussi

Et je dois créer une fonction sous VBA me calculant la moyenne arithmétique avec ces deux tableaux.

Il nous a été demandé d'inclure dans la fonction un test pour vérifier que le nombre de lignes et de colonnes sont compatibles.

Voici mon programme (c'est la dernière des 35 versions que j'ai testées )

Le message d'erreur qui apparait me dit : "Référence de variable de contrôle incorrecte dans Next"

Code :
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
Function moyarit(X As Range, N As Range) As Double
 
Dim c As Integer
Dim l As Integer
Dim i As Integer
Dim j As Integer
Dim moy As Double
Dim k As Integer
Dim coeff As Integer
 
c = X.Columns.Count
l = X.Rows.Count
moy = 0
coeff = 0
 
Select Case True
    Case (X.Rows.Count = N.Rows.Count And X.Columns.Count = N.Columns.Count)
        For i = 1 To l
        For j = 1 To c
            moy = (moy + X.Cells(i, j) * N.Cells(i, j))
        Next i
        Next j
    End Select
 
For i = 1 To l
For j = 1 To c
 
    coeff = coeff + N.Cells(i, j)
 
Next i
Next j
 
 
moyarit = moy / coeff
 
 
End Function

Ca serait très gentil si quelqu'un pouvait m'aider, je galère depuis des heures...
BarryLyndon57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 16h49   #2
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonjour

Les boucles NEXT associé aux FOR imbriquées doivent être dépiler dans l'ordre.
=> inverse les lignes 21<=>22 et ligne 30<=>31

Code :
1
2
3
4
5
        For i = 1 To l
             For j = 1 To c
                moy = (moy + X.Cells(i, j) * N.Cells(i, j))
             Next j
        Next i
P.S : stp pense à utiliser l'icône <#> après avoir sélectionner ton code, afin d'insérer ton code.
Merci à Philippe JOCHMANS pour la correction de mise en forme.
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 17h05   #3
Invité de passage
 
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 0
Points : 0
Merci beaucoup !

Dire que j'ai perdu tant d'heures sur une erreur si bête

Bonne journée !
BarryLyndon57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 17h23   #4
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
De rien.
Content que voir que tout soit rentré dans l'ordre pour toi

Bonne journée également.

PS. Merci de penser à noter le sujet résolu (bouton <Résolu>)
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h14.


 
 
 
 
Partenaires

Hébergement Web