![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour,
j'ai une feuille de calcul, sur la collonne F j'ai des notes pr chaque note j'aimerai asscosier une valeur 4 collonnes plus loin, j'ai crée une macro mais ca ne marche pas, la voila: Sub Chiffre1() fin = Range("F2").End(xlDown).Row For i = 2 To fin If Cells(i, 7).Value = "Etat" Then Cells(i, 11).Value = 1 If Cells(i, 7).Value = "NR" Then Cells(i, 11).Value = 23 If Cells(i, 7).Value = "AAA" Then Cells(i, 11).Value = 2 If Cells(i, 7).Value = "AA+" Then Cells(i, 11).Value = 3 If Cells(i, 7).Value = "AA" Then Cells(i, 11).Value = 4 If Cells(i, 7).Value = "AA-" Then Cells(i, 11).Value = 5 If Cells(i, 7).Value = "A+" Then Cells(i, 11).Value = 6 If Cells(i, 7).Value = "A" Then Cells(i, 11).Value = 7 If Cells(i, 7).Value = "A-" Then Cells(i, 11).Value = 8 If Cells(i, 7).Value = "BBB+" Then Cells(i, 11).Value = 9 If Cells(i, 7).Value = "BBB" Then Cells(i, 11).Value = 10 If Cells(i, 7).Value = "BBB-" Then Cells(i, 11).Value = 11 If Cells(i, 7).Value = "BB+" Then Cells(i, 11).Value = 12 If Cells(i, 7).Value = "BB" Then Cells(i, 11).Value = 13 If Cells(i, 7).Value = "BB-" Then Cells(i, 11).Value = 14 If Cells(i, 7).Value = "B+" Then Cells(i, 11).Value = 17 If Cells(i, 7).Value = "B" Then Cells(i, 11).Value = 18 If Cells(i, 7).Value = "B-" Then Cells(i, 11).Value = 19 If Cells(i, 7).Value = "CCC" Then Cells(i, 11).Value = 20 If Cells(i, 7).Value = "CC" Then Cells(i, 11).Value = 21 If Cells(i, 7).Value = "D" Then Cells(i, 11).Value = 22 Next i End Sub Si qqun voit l'erreur, ce serait sympa de m 'aider. Merci. Reeaz |
| ANNONCES | |||
|
|
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
bonjour,
Il semble que la valeur fin est 65535 c'est à dire toute la colonne ce qui est très long. Voir : Sub Chiffre1() i = 2 While Cells(i, 7) <> "" If Cells(i, 7).Value = "Etat" Then Cells(i, 11).Value = 1 If Cells(i, 7).Value = "NR" Then Cells(i, 11).Value = 23 ...... If Cells(i, 7).Value = "CC" Then Cells(i, 11).Value = 21 If Cells(i, 7).Value = "D" Then Cells(i, 11).Value = 22 i = i + 1 Wend End Sub Rn espérant que tu n'as pas de cellule vide au milieu |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
La dernière fois (peut être)
J'ai du temps alors je me suis permis voici un code qui va être plus rapide en exécution : Sub Chiffre1() Dim valeur2 As Range i = 2 While Cells(i, 7) <> "" Set valeur2 = Cells(i, 11) Select Case Cells(i, 7) Case "Etat": valeur2 = 1 Case "NR": valeur2 = 23 Case "AAA": valeur2 = 2 Case "AA+": valeur2 = 3 Case "AA": valeur2 = 4 Case "AA-": valeur2 = 5 Case "A+": valeur2 = 6 Case "A": valeur2 = 7 Case "A-": valeur2 = 8 Case "BBB+": valeur2 = 9 Case "BBB": valeur2 = 10 Case "BBB-": valeur2 = 11 Case "BB+": valeur2 = 12 Case "BB": valeur2 = 13 Case "BB-": valeur2 = 14 Case "B+": valeur2 = 17 Case "B": valeur2 = 18 Case "B-": valeur2 = 19 Case "CCC": valeur2 = 20 Case "CC": valeur2 = 21 Case "D": valeur2 = 22 End Select i = i + 1 Wend End Sub Car pour chaque cellule tu fais tous les tests même le premier est le bon. avec select cas dès qu'il a trouve le case il ne fait plus les autres. Pour améliorer encore, si tu peux savoir si classer l'ordre des case du plus utilisé au moins . Bon sourrage |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
Merci de ton aide pyrof, mais en fait j'ai réussi à faire marcher ma macro.
Pourtant, j'ai toujours un pb car dans ma collonne 7, j'ai des erreurs que je dois gérer (du type #N/A, div par 0), mais que je n'arrive pas à gérer! Voici ce que j'ai essayé: Sub Chiffre1() fin = Range("F2").End(xlDown).Row For i = 2 To fin 'Cells(i, 7).Select 'On Error Resume Next On Error GoTo Errorhandler If Cells(i, 7).Value = "Etat" Then Cells(i, 11).Value = 1 ElseIf Cells(i, 7).Value = "NR" Then Cells(i, 11).Value = 23 ElseIf Cells(i, 7).Value = "AAA" Then Cells(i, 11).Value = 2 ElseIf Cells(i, 7).Value = "AA+" Then Cells(i, 11).Value = 3 ElseIf Cells(i, 7).Value = "AA" Then Cells(i, 11).Value = 4 ElseIf Cells(i, 7).Value = "AA-" Then Cells(i, 11).Value = 5 ElseIf Cells(i, 7).Value = "A+" Then Cells(i, 11).Value = 6 ElseIf Cells(i, 7).Value = "A" Then Cells(i, 11).Value = 7 ElseIf Cells(i, 7).Value = "A-" Then Cells(i, 11).Value = 8 ElseIf Cells(i, 7).Value = "BBB+" Then Cells(i, 11).Value = 9 ElseIf Cells(i, 7).Value = "BBB" Then Cells(i, 11).Value = 10 ElseIf Cells(i, 7).Value = "BBB-" Then Cells(i, 11).Value = 11 ElseIf Cells(i, 7).Value = "BB+" Then Cells(i, 11).Value = 12 ElseIf Cells(i, 7).Value = "BB" Then Cells(i, 11).Value = 13 ElseIf Cells(i, 7).Value = "BB-" Then Cells(i, 11).Value = 14 ElseIf Cells(i, 7).Value = "B+" Then Cells(i, 11).Value = 17 ElseIf Cells(i, 7).Value = "B" Then Cells(i, 11).Value = 18 ElseIf Cells(i, 7).Value = "B-" Then Cells(i, 11).Value = 19 ElseIf Cells(i, 7).Value = "CCC" Then Cells(i, 11).Value = 20 ElseIf Cells(i, 7).Value = "CC" Then Cells(i, 11).Value = 21 ElseIf Cells(i, 7).Value = "D" Then Cells(i, 11).Value = 22 'ElseIf IsNumeric(Cells(i, 7).Value) Then Cells(i, 11).Value = "" End If Next i Exit Sub Errorhandler: 'fin = Range("F2").End(xlDown).Row 'For i = 2 To fin If IsError(Cells(i, 7).Value) = True Then Cells(i, 11).Value = "" 'ActiveCell.Offset(0, 4).Value = "toto" 'Next i Resume Next End Sub Je voudrai en fait que chaque fois qu'il y une erreur de ce type, que la macro n'en tienne pas compte et renvoie rien ds la collonne 11. QQun sait comment faire? |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
voila avec gestion d'erreur Sub Chiffre1() Dim valeur2 As Range i = 2 While IsError(Cells(i, 7)) Cells(i, 11) = "" i = i + 1 Wend While Cells(i, 7) <> "" Set valeur2 = Cells(i, 11) If IsError(Cells(i, 7)) = False Then Select Case Cells(i, 7) Case "Etat": valeur2 = 1 Case "NR": valeur2 = 23 Case "AAA": valeur2 = 2 Case "AA+": valeur2 = 3 Case "AA": valeur2 = 4 Case "AA-": valeur2 = 5 Case "A+": valeur2 = 6 Case "A": valeur2 = 7 Case "A-": valeur2 = 8 Case "BBB+": valeur2 = 9 Case "BBB": valeur2 = 10 Case "BBB-": valeur2 = 11 Case "BB+": valeur2 = 12 Case "BB": valeur2 = 13 Case "BB-": valeur2 = 14 Case "B+": valeur2 = 17 Case "B": valeur2 = 18 Case "B-": valeur2 = 19 Case "CCC": valeur2 = 20 Case "CC": valeur2 = 21 Case "D": valeur2 = 22 Case Else: valeur2 = "" End Select End If i = i + 1 While IsError(Cells(i, 7)) Cells(i, 11) = "" i = i + 1 Wend Wend End Sub |
| Liens sociaux |
| Outils de la discussion | |
|
|