lire des cellules en boucles

  • Initiateur de la discussion matt
  • Date de début
M

matt

Guest
Je suis débutant et j'aimerais créer un programme colorant une image en fonction des données rentrées dans une autre colonne, sans boucle j'y arrive mais avec une boucle pas moyen, surement car je ne maitrise pas encore bien l'instruction for...to...next.
Voilà ce que j'ai essayé:

En utilisant Bi, j'aimerais que le programme comprenne B1 puis B2 -> B14

Private Sub CommandButton1_Click()
Dim i As Integer

For i = 1 To 14
If Range("Bi") = 1 Then
Image14.BackColor = &HFF&
ElseIf Range("Bi") = 2 Then
Image14.BackColor = &H80FF&
ElseIf Range("Bi") = 3 Then
Image14.BackColor = &HFFFF&
ElseIf Range("Bi") = 4 Then
Image14.BackColor = &HFFFF00
ElseIf Range("Bi") = 5 Then
Image14.BackColor = &HFF8080
ElseIf Range("Bi") = 6 Then
Image14.BackColor = &HFF0000
End If
Next i
End Sub

Si vous pouviez m'aider, d'avance merci
 
M

mDF

Guest
Bonsoir Matt,


Remplace tes :

If Range("Bi") =...

par

If Range("B" & i) = ...


En effet, si tu inclues le i dans les guillemets, il ne peut plus être considéré comme une variable. VBA essaie dans ce cas d'interpréter la chaine de caractère "Bi" qui ne veut rien dire...

Cordialement.
Didier
 
M

matt

Guest
Merci de votre réponse, maintenant, sans vouloir abuser de votre savoir, cela va sans dire, pourriez vous m'indiquer, dans le même style, comment faire varier :
image14.backcolor en imagej.backcolor avec j variant de 1 à 14
c'est le même probleme, je ne sais pas taper la bonne ligne de commande et ici, 'image & j.backcolor' ne semble pas marcher.

Merci de votre aide
 
M

mDF

Guest
Bonjour Matt,

Dans ton exemple, "image14" est le nom d'un objet. Dans ce cas, "14" n'est pas considéré comme un index mais comme partie intégrante du nom de l'objet (tu ne peux donc faire varier cet élément). Malheureusement, VBA ne sait pas gérer les groupes de controles indexés comme Image(1), Image(2), etc...

Une solution consiste à stocker au préalable l'ensemble des objets 'image' dans un tableau de variables (de type 'objet'). Tu peux ensuite manipuler ces objets par l'intermédiaire de ce tableau.

Tu trouveras ci-joint un exemple.

C'est, à mon avis, la solution la plus simple.
Une autre solution consiste à utiliser un module de classe, mais ça.... c'est une autre histoire...

Cordialement.
Didier
 

Pièces jointes

  • Pour_matt.zip
    12.1 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
312 571
Messages
2 089 797
Membres
104 275
dernier inscrit
Manu974