• Initiateur de la discussion Initiateur de la discussion Reeaz
  • 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 !

R

Reeaz

Guest
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
 
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
 
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
 
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?
 
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
 
- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Réponses
10
Affichages
369
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Retour