For Each qui ne joue pas

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

Hulk

XLDnaute Barbatruc
Hello,

J'ai réussi à faire un bout de code, mais je n'arrive pas le finir... Voyez plutôt
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i 
Dim MaCell As Variant

i = "Irlande"

For Each MaCell In Range("C5:C10")
    If MaCell.Value = i Then
     MaCell.Interior.ColorIndex = 40
     Cells.Offset(i, 4).Interior.ColorIndex = 40
     Cells.Offset(i, 5).Interior.ColorIndex = 40
    End If
Next

End Sub
Il me dit "Icompatibilité de type"
Code:
Cells.Offset(i, 4).Interior.ColorIndex = 40
Cells.Offset(i, 5).Interior.ColorIndex = 40
J'avoue ne pas comprendre.

Au fait donc, si "Irlande" en C7 -> D7 et E7 = Interior.ColorIndex = 40

Merci pour votre aide, Hulk.
 
Re : For Each qui ne joue pas

Yop,

Ouais y a pas à dire vous êtes des Chefs !!

Je reviendrais à la charge car un autre petite question se dessine à l'horizon.

J'mets ça en place, je teste, re-teste, sur-teste et dé-teste 😀 et vous tiens au courant si je n'y arrive pas.

Merci encore pour votre aide... à tous !

@+, Hulk.
 
Re : For Each qui ne joue pas

Re,

Au fait c'est bon, ma question aurait été : Est-ce qu'on peut faire plus court que ça
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaCell As Variant

For Each MaCell In Range("C5:C10")
 If MaCell.Value = "Irlande" Then MaCell.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = 40
 If MaCell.Value = "Italie" Then MaCell.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = 44
 If MaCell.Value = "France" Then MaCell.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = 36
 If MaCell.Value = "Allemagne" Then MaCell.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = 43
 If MaCell.Value = "Angleterre" Then MaCell.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = 37
 If MaCell.Value = "Espagne" Then MaCell.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = 35
Next

End Sub
Avec les différents noms, mais je pense que c'est bien assez court comme ça, à moins que mieux !

Merci encore Messieurs, Dames !

A plus, Hulk.
 
Re : For Each qui ne joue pas

Re,

entre autres solutions :

Sub Test()
Dim MaCell As Variant
For Each X In Range("C5:C10")
MaVar = Switch(X = "Irlande", 40, X = "Italie", 44, X = "France", 36, X = "Allemagne", 43, X = "Angleterre", 37, X = "Espagne", 35)
If X <> "" Then X.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = Val(MaVar)
Next
End Sub


On peut aussi passer par un Application.Match ....

Sub Test2()
For Each X In Range("C5:C10")
Pays = Array("Irlande", "Italie", "France", "Allemagne", "Angleterre", "Espagne")
MesVal = Array(40, 44, 36, 43, 37, 35)
If X <> "" Then X.Offset(0, -1).Resize(1, 11).Interior.ColorIndex = MesVal(Application.Match(X, Pays, 0) - 1)
Next
End Sub
 
Dernière édition:
Re : For Each qui ne joue pas

Hello,

Monstre ! Bravo ! Merci !

Quoi dire d'autre, à part que je joins tout de même un fichier pour que les gens se rendent compte du beau boulot que vs avez fait.

Merci encore infiniment à vous tous !

A tout bientôt, Hulk.
 

Pièces jointes

- 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
Réponses
2
Affichages
663
R
Réponses
0
Affichages
661
Retour