Macro Coloriage qui plante

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 !

alain.raphael

XLDnaute Occasionnel
Bonjour à Tous,

J'ai une erreur du type : Run-time error '-2147024809 (80070057)': The specific value is out of range

Peut-être une erreur de noms de propriété...ou autre....

Impossible de trouver cette erreur....

Si quelqu'un a une idée ?

Sub coloriage()
Dim couleur As Long, c As Range, ca As Range, p As Long
For Each c In Range("R6:R231").Cells
If c <> "" Then
Set ca = c.Offset(, 1)
p = Application.Match(ca, [legende], 1)
couleur = Range("legende").Cells(p, 1).Interior.Color
ActiveSheet.Shapes(c).Fill.ForeColor.RGB = couleur
End If
Next c
End Sub

Merci !
 
Dernière édition:
Bonjour,

Sur quelle Ligne ???

En tous cas je vois une erreur sur les lignes:
VB:
Set ca = c.Offset(, 1)
p = Application.Match(ca, [legende], 1)
La valeur de la variable range ca est de type String
Et vous cherchez cette valeur dans un tableau de valeurs numériques.
Application.Match (équivalent de Equiv) retournera #/NA ou en vba xlCvError.xlErrNA

Quand vous utilisez des fonctions excel en vba, mieux vaut déclarer leur variable de retour en type Variant et faire ensuite un test de retour.:

Dim p as variant
p = Application.Match.....
If IsError(p) then
'je traite l'erreur
Else
' continue.
End If

Bonne soirée
 
Bonjour Alain,
Ceci doit le faire.
Bruno
VB:
Sub coloriage()
Dim couleur As Long, c As Range, ca As Range, p As Long
  For Each c In Range("Q6:Q231").Cells
   If c.Value <> "" Then
     p = Application.Match(Val(c.Offset(, 1)), [legende], 0)
     couleur = Range("legende").Cells(p, 1).Interior.Color
     ActiveSheet.Shapes(c.Value).Fill.ForeColor.RGB = couleur
   End If
  Next c
End Sub
 
Yes,
Les chiffres indiqués en col R sont en text car dans la formule il aurait fallu enlever certain """"
toi =SI(S22="Moyen";"3";.... va renvoyer 3 en text et non en chiffre
il aurait été mieux =SI(S22="Moyen";3;SI(S22="Faible";1
Donc je n'ai rien changé mais en macro je converti en chiffre avec val(le chiffres en text)
j'ai modifié Range("Q6:Q231") je crois c'était R6:R231
application.match mis 0 au lieu de 1
0 est valeur exact et 1 valeur la plus proche
Ben voila
Bon Week-end
Bruno
 
- 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

Discussions similaires

Réponses
0
Affichages
471
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
696
Réponses
8
Affichages
1 K
Réponses
11
Affichages
667
Retour