Introduire une valiable dans le Range()

Fermé
akregor Messages postés 1 Date d'inscription dimanche 21 décembre 2014 Statut Membre Dernière intervention 21 décembre 2014 - Modifié par jordane45 le 22/12/2014 à 09:28
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 22 déc. 2014 à 09:53
voici mon code que je suis assez désespéré de faire marcher, comme vous pouvez le voire, j'essaye de colorier des cases d'une base de donnée en fonction de leur contenu. qqun peut me dire quel est le hic ? j'aimerais bien introduire une variable dans le range et ne sait pas comment le faire ...
Sub eval()
Dim x As Integer
Dim a, b, c As Range
a = Range(Cells("A", x))
e = Range(Cells("E", x))
f = Range(Cells("F", x))
For x = 2 To a.Value = Null
    Select Case e.Value
        Case 4
            Select Case f.Value
                Case "Petit"
                    a.Interior.ColorIndex = 39
                Case "Moyen"
                    a.Interior.ColorIndex = 39
                Case "Grand"
                    a.Interior.ColorIndex = 39
                    End Select
        Case 5
            Select Case f.Value
                Case "Petit"
                    a.Interior.ColorIndex = 39
                Case "Moyen"
                    a.Interior.ColorIndex = 39
                Case "Grand"
                    a.Interior.ColorIndex = 39
                    End Select
        Case 6
            Select Case f.Value
                Case "Petit"
                    a.Interior.ColorIndex = 39
                Case "Moyen"
                    a.Interior.ColorIndex = 39
                Case "Grand"
                    a.Interior.ColorIndex = 39
                    End Select
        Case 7
            Select Case f.Value
                Case "Petit"
                    a.Interior.ColorIndex = 39
                Case "Moyen"
                    a.Interior.ColorIndex = 39
                Case "Grand"
                    a.Interior.ColorIndex = 39
                    End Select
            End Select
    x = x + 1
Next x
End Sub

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
22 déc. 2014 à 09:37
Bonjour,


Tu créés tes RANGE .. en dehors de ta boucle...
Normal que X ne change pas...

For x=2 to......

a = Range(Cells("A", x))
e = Range(Cells("E", x))
f = Range(Cells("F", x))



Ensuite...
Pour définir une Variable comme une RANGE .. il faut utiliser le mot clé.. SET

dim a as range
dim b as range
dim c as range

SET a = Range(Cells("A", x))
SET  e = Range(Cells("E", x))
SET  f = Range(Cells("F", x))



Et enfin... tu écris :
For x = 2 To a.Value = Null

Cette syntaxe n'est pas bonne......
Si tu veux dire... jusqu'à ce que la cellule A soit vide... ce n'est pas un FOR qu'il faut utiliser mais un do loop until..

Dim valCelluleE
Dim X as Integer
      X=2
 Do Until IsEmpty(celluleActive)

valCelluleE = cells(X,"E").value
valCelluleF = cells(X,"F").value

Select Case valCelluleE 

Case 4
 Select Case valCelluleF 
       Case "Petit"
            a.Interior.ColorIndex = 39
       Case "Moyen"
            a.Interior.ColorIndex = 39
       Case "Grand"
           a.Interior.ColorIndex = 39
        End Select
Case 5
'....
End Select

X = X+1
Loop



0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
22 déc. 2014 à 09:53
Je pense aussi que réduire de nombre de Case par un "Case 4 To 7" réduirait le nombre de ligne de code tout comme faire :
Case "Petit", "Moyen", "Grand"
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
22 déc. 2014 à 09:38
Bonjour Akregor, bonjour le forum,

c'est quoi ton code. Du VB ou du VBA ?

Si c'est du VBA, je ne le comprends pas et je pense que tu devrais nous fournir un fichier exemple montrant ce tu as avant et ce que tu voudrais après le traitement par la macro...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
22 déc. 2014 à 09:47
C'est très certainement du VBA .... Il y parle de RANGE .....et vu la syntaxe et la structure du code.. c'est pour du EXCEL.

Maintenant il est clair que son code pourrait très très certainement être amélioré... car son système de boucle me laisse songeur....^^
0