Petite question bête de definition de cellule à partir d'une variable

Bonjour à tous,

je cherche a faire une petite macro qui colore les cellules de ma plage.

Elle est écrite comme suit :

Sub colorerTEST()
      Dim i As Variant
      Dim o As Variant
      Dim y As Variant
      Dim a As Variant

              y = 0
              o = 0
              i = 1
              a = 1
              For a = 1 To 89

              For i = 1 To 39
                        Range(a & i).Interior.Color = RGB(o, y, 0)
                        o = o + 6.7
              Next i
                        y = y + 2.85
              Next a
End Sub

Cependant la définition de ma Range(a&i) ne fonctionne pas. j'ai testé avec A&i pour colorer seulement la première colonne et ça fonctionne.

Je me demande donc comment définir par une variable un n° de colonne.

Merci d'avance !

Bonjour Loumatrix,

Pour définir une plage (range) dans Excel VBA, vous devez indiquer les coordonnées de la cellule comme "A1", "B2", etc. où "A", "B" sont les lettres des colonnes et "1", "2" sont les numéros de lignes. Cependant, dans votre code, vous utilisez deux variables numériques "a" et "i" pour tenter de définir une plage, ce qui n'est pas valide.

Si vous voulez utiliser une variable pour représenter le numéro de la colonne, vous devez la convertir en lettre de colonne. Voici une fonction qui peut convertir un numéro de colonne en lettre :

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

Vous pouvez ensuite l'utiliser dans votre code de cette façon :

Sub colorerTEST()
    Dim i As Long
    Dim o As Double
    Dim y As Double
    Dim a As Long

    y = 0
    o = 0

    For a = 1 To 89
        For i = 1 To 39
            Range(Col_Letter(a) & i).Interior.Color = RGB(o, y, 0)
            o = o + 6.7
        Next i
        y = y + 2.85
    Next a
End Sub

Le type de données de i, a, o, y a été changé pour correspondre aux valeurs assignées.
Cette solution suppose que vous n'allez pas au-delà de la colonne "Z". J'espère que cela vous aidera !

Bonjour Loumatrix,

Oula, ça ne s'écrit pas comme cà

De plus vous ne définissez pas correctement vos variables
https://www.excel-pratique.com/fr/vba/variables

Sub colorerTEST()
      Dim a As Long,  i As Long, o As Single, y As Single
       For a = 1 To 89
              For i = 1 To 39
                        Cells(a,i).Interior.Color = RGB(o, y, 0)
                        o = o + 6.7
              Next i
                        y = y + 2.85
              Next a
End Sub

A+

Edit : bonjour Abderrahmane

Merci beaucoup Abde (si je peu me permettre) pour le code transformant la valeur en lettre, ça vas beaucoup me servir !

Merci Bruno, j'ai appliqué votre code et en effet cela fonctionne mais ce n'est pas le résultat auquel je m'attendait. Il fait un dégradé par ligne (de haut en bas) sans que la couleur de change par colonne (de gauche a droite) sauf pour la première ligne.

Je m'attendait plutôt a un dégradé qui prennent en compte les 2 et donnerais une image avec les 2 couleurs opposée respectivement en haut a gauche et en bas a droite de la feuille.

la le résultat ressemble a ca :

image

Ok je devais juste refixer o=0 entre les 2 boucle et ca fait des zoli dégradés :D

image
Rechercher des sujets similaires à "petite question bete definition partir variable"