erreur avec une macro

  • Initiateur de la discussion Initiateur de la discussion tom59
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tom59

Guest
Bonjour,
J'ai un petit probleme avec cette macro. Je pense que ça doit être tout bête mais je ne vois pas ou est l'erreur. Excel me renvois le message suivant :
Code:
Erreur de compilation Next sans For
et il surligne le
Code:
Next m
Si quelqu'un pouvait m'apporter ses lumiéres j'en serais ravi.

Voici le code :

Code:
Sub accord()
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim l As Integer
Dim m As Integer
Dim j As Integer
Dim k As Integer

' modifier l'étendue de l en fonction du nombre de sujets
For l = 5 To 57
b = 0
c = 0
d = 0
For m = 3 To 29
If Sheets("Valence").Cells(1, m).Value = "positive" Then
If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then
d = d + 1
End If
If Sheets("Valence").Cells(1, m).Value = "neutre" Then
If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then
c = c + 1
End If
If Sheets("Valence").Cells(1, m).Value = "négative" Then
If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then
b = b + 1
End If
Next m
Sheets("Valence").Cells(l, 32).Value = ((b + c + d) / 27) * 100
Sheets("Valence").Cells(l, 33).Value = (b / 9) * 100
Sheets("Valence").Cells(l, 34).Value = (c / 9) * 100
Sheets("Valence").Cells(l, 35).Value = (d / 9) * 100
Next l
End Sub

D'avance merci
 
Re : erreur avec une macro

Oui je viens de trouver,
le code correct est celui ci :

Code:
Sub accord()
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim l As Integer
Dim m As Integer
Dim j As Integer
Dim k As Integer

' modifier l'étendue de l en fonction du nombre de sujets
For l = 5 To 57
b = 0
c = 0
d = 0
For m = 3 To 29
If Sheets("Valence").Cells(1, m).Value = "positive" Then
If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then
d = d + 1
End If
End If

If Sheets("Valence").Cells(1, m).Value = "neutre" Then
If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then
c = c + 1
End If
End If

If Sheets("Valence").Cells(1, m).Value = "négative" Then
If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then
b = b + 1
End If
End If

Next m
Sheets("Valence").Cells(l, 32).Value = ((b + c + d) / 27) * 100
Sheets("Valence").Cells(l, 33).Value = (b / 9) * 100
Sheets("Valence").Cells(l, 34).Value = (c / 9) * 100
Sheets("Valence").Cells(l, 35).Value = (d / 9) * 100
Next l
End Sub


tes procédures if ne me semblent pas très catholiques...

Ce n'est pas correct de faire 2 IF quand on a besoin de vérifier 2 paramétres ?
 
Re : erreur avec une macro

Bonsoir Tom59 et le Forum,

Salut Spit😉

Comme Spit te le signale, tu as des rrers dans tes IF; En rouge ce qui ne va pas.



Code:
[COLOR=mediumturquoise]If Sheets("Valence").Cells(1, m).Value = "neutre" Then[/COLOR]
[COLOR=mediumturquoise] If Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then c = c + 1[/COLOR]
[COLOR=mediumturquoise]End If[/COLOR]

Ou une seule ligne avec "And" et sans End If

Code:
If Sheets("Valence").Cells(1, m).Value = "neutre" and  Sheets("Valence").Cells(l, m).Value = Sheets("Valence").Cells(1, m).Value Then c = c + 1


Bonnes corrections.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
910
Réponses
4
Affichages
733
Retour