Nofxha
Messages postés2Date d'inscriptionlundi 4 avril 2011StatutMembreDernière intervention 4 avril 2011
-
4 avril 2011 à 20:57
Nofxha
Messages postés2Date d'inscriptionlundi 4 avril 2011StatutMembreDernière intervention 4 avril 2011
-
4 avril 2011 à 22:51
Voici un programme que j'ai fait pour affecter un coefficient en fonction d'un rang (données sur une feuille excel).
Le problème est que j'ai une erreur : Else sans If alors qu'il me semble avoir mis suffisamment de blocs end if. De plus je sais pas si j'ai correctement programmé le tout.
Merci pour votre aide
' calcul du coefficient
Periode = TextPeriode
For j = 3 To 5003
If ThisWorkbook.Worksheets("AppelOffre").Cells(j, 1).Value 1 Periode Then
rangentreprise = ThisWorkbook.Worksheets("AppelOffre").Cells(j, 6).Value
If rangentreprise 1 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(4, 3).Value
Else
If rangentreprise 2 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(5, 3).Value
Else
If rangentreprise 3 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(6, 3).Value
End If
End If
End If
If ThisWorkbook.Worksheets("AppelOffre").Cells(j, 1).Value Periode 2 _
Then
rangentreprise = ThisWorkbook.Worksheets("AppelOffre").Cells(j, 6).Value
If rangentreprise 1 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(4, 6).Value
Else
If rangentreprise 2 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(5, 6).Value
Else
If rangentreprise 3 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(6, 6).Value
Else
If rangentreprise 4 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(7, 6).Value
End If
End If
End If
End If
End If
ThisWorkbook.Sheets("AppelOffre").Cells(j, 7).Value = coefficient
Else
If ThisWorkbook.Worksheets("AppelOffre").Cells(j, 1).Value >= Periode >= 3 _
Then
rangentreprise = ThisWorkbook.Worksheets("AppelOffre").Cells(j, 6).Value
If rangentreprise 1 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(4, 9).Value
Else
If rangentreprise 2 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(5, 9).Value
Else
If rangentreprise 3 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(6, 9).Value
Else
If rangentreprise 4 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(7, 9).Value
Else
If rangentreprise 5 Then coefficient ThisWorkbook.Worksheets("RangCoefficient").Cells(8, 9).Value
foliv57
Messages postés420Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention15 juillet 20149 4 avril 2011 à 21:52
Bonjour,
Commençons par les bases. Si vous voulez que les gens vous donne un coup de main sur le forum, ne jetez pas votre code avec un simple copier-coller. Utilisez les balises codes, elles sont faite pour ca, et mettez le un peut en forme car dans votre cas, cela vous aurez peut être même permis de trouver vous même l'erreur.
En VB les if se font comme ceci
If Condition Then Action
ou
If Condition Then
Action
End If
ou
If Condition Then
Action
Else
AutreAction
End If
ou
If Condition Then
Action
ElseIf AutreCondition Then
AutreAction
End If
Donc pour votre code ca donne ceci
Dim AppelOffre As Worksheet
Dim RangCoefficient As Worksheet
Set AppelOffre = ThisWorkbook.Worksheets("AppelOffre")
Set RangCoefficient = ThisWorkbook.Worksheets("RangCoefficient")
Periode = TextPeriode
For j = 3 To 5003
rangentreprise = AppelOffre.Cells(j, 6).Value
If (AppelOffre.Cells(j, 1).Value Periode) And (Periode 1) Then
Select Case rangentreprise
Case 1
coefficient = RangCoefficient.Cells(4, 3).Value
Case 2
coefficient = RangCoefficient.Cells(5, 3).Value
Case 3
coefficient = RangCoefficient.Cells(6, 3).Value
End Select
ElseIf (AppelOffre.Cells(j, 1).Value Periode) And (Periode 2) Then
Select Case rangentreprise
Case 1
coefficient = RangCoefficient.Cells(4, 6).Value
Case 2
coefficient = RangCoefficient.Cells(5, 6).Value
Case 3
coefficient = RangCoefficient.Cells(6, 6).Value
Case 4
coefficient = RangCoefficient.Cells(7, 6).Value
End Select
ElseIf (AppelOffre.Cells(j, 1).Value >= Periode) And (Periode >= 3) Then
Select Case rangentreprise
Case 1
coefficient = RangCoefficient.Cells(4, 9).Value
Case 2
coefficient = RangCoefficient.Cells(5, 9).Value
Case 3
coefficient = RangCoefficient.Cells(6, 9).Value
Case 4
coefficient = RangCoefficient.Cells(7, 9).Value
Case 5
coefficient = RangCoefficient.Cells(8, 9).Value
End Select
End If
AppelOffre.Cells(j, 7).Value = coefficient
Next
Et si vos cellules dans l'onglet "RangCoefficient" ne sont pas amenées à trop changer, vous pouvez même faire simplement ceci
Dim AppelOffre As Worksheet
Dim RangCoefficient As Worksheet
Dim colonne As Long
Set AppelOffre = ThisWorkbook.Worksheets("AppelOffre")
Set RangCoefficient = ThisWorkbook.Worksheets("RangCoefficient")
Periode = TextPeriode
For j = 3 To 5003
rangentreprise = AppelOffre.Cells(j, 6).Value
If (AppelOffre.Cells(j, 1).Value Periode) And (Periode 1) Then
colonne = 3
ElseIf (AppelOffre.Cells(j, 1).Value Periode) And (Periode 2) Then
colonne = 6
ElseIf (AppelOffre.Cells(j, 1).Value >= Periode) And (Periode >= 3) Then
colonne = 9
End If
coefficient = RangCoefficient.Cells(rangentreprise + 3, colonne).Value
AppelOffre.Cells(j, 7).Value = coefficient
Next
Nofxha
Messages postés2Date d'inscriptionlundi 4 avril 2011StatutMembreDernière intervention 4 avril 2011 4 avril 2011 à 22:51
Bonsoir,
Merci pour le code et je m'excuse d'avoir posté le message un peu sauvagement (je pensais assez naïvement que la mise en page resterait la même). En tout cas merci pour la réactivité, je vais essayer d'applique tout ça.