Boucle sur valeur non vide

Bonjour à tous,

J'ai créé un tableau scores de 6 "cellules" et 6 variables value1....value6

Je cherche à donner à chaque variables la valeur de la cellule non vide :value1-->valeur de la 1ere cellule non vide,value2-->valeur de la 2eme cellule non vide, ainsi de suite, pour l'instant j'ai réussi à détecté la 1ere cellule non vide mais a l'envers et pour les autres ....je me suis perdue.

Sub test()       
        Dim Scores(5) As String
        Dim value1, value2, value3, value4, value5, value6 As String

        Scores(0) = ""
        Scores(1) = "B"
        Scores(2) = ""
        Scores(3) = "D"
        Scores(4) = ""
        Scores(5) = "F"

             For i = 0 To 5
            If Scores(i) <> "" Then value1 = Scores(i)

        Next i
        MsgBox (value1)
        MsgBox (value2)
End Sub

en gros je sais pas trop quoi faire, une idée???

merci de votre aide

Greg

Bonjour greg954,

ATTENTION : ne PAS utiliser le nom "value" pour une variable

ou un autre "objet" car c'est un mot-clé réservé de VBA !!!

C'est pourquoi j'ai utilisé valX() à la place.


Je te propose ce code VBA :

Option Explicit

Sub test()

  Dim Score(5) As String, valX(5) As String, k As Byte, i As Byte

  Score(0) = ""
  Score(1) = "B"
  Score(2) = ""
  Score(3) = "D"
  Score(4) = ""
  Score(5) = "F"

  For i = 0 To 5
    If Score(i) <> "" Then valX(k) = Score(i): k = k + 1
  Next i

  For i = 0 To 5
    If valX(i) <> "" Then MsgBox valX(i)
  Next i

End Sub

Note : j'ai mis la 2ème boucle For pour laisser comme tu avais fait,

mais il va de soi qu'elles peuvent être unies en une seule boucle :

  For i = 0 To 5
    If Score(i) <> "" Then valX(k) = Score(i): MsgBox valX(k): k = k + 1
  Next i

Merci de me dire si ça te convient.

Cordialement

Merci pour t'on aide,

Dans la msgbox çà fonctionne très bien,mais j'aimerai bien si on peut que valx(1) = B,valx(2)=D,valx(3)=F,,valx(4)=""...

Dans le code présent si je test valx(1), cela me retourne la valeur D??.Le but est d’utiliser les valeurs des valx pour "travailler" avec.

Greg

ps: j’avais pas fait attention pour value, merci

Tu as utilisé ton tableau Scores() à partir de l'indice 0 puisque tu avais mis : Scores(0) = "" ;

mis à part que j'ai renommé ce tableau en Score(), j'ai utilisé le tableau valX() à partir de 0

aussi, c'est pourquoi : valX(0) = "B" ; valX(1) = "D" ; valX(2) = "F"


Si tu préfères utiliser valX() à partir de l'indice 1, alors dans le Dim, mets : valX(6)

et mets k = k + 1 avant l'affectation :

If Score(i) <> "" Then k = k + 1: valX(k) = Score(i): MsgBox valX(k)

(ceci pour la boucle unique)


Pour 2 boucles : valX(6) aussi, et voici le code complet :

Option Explicit

Sub test()

  Dim Score(5) As String, valX(6) As String, k As Byte, i As Byte

  Score(0) = ""
  Score(1) = "B"
  Score(2) = ""
  Score(3) = "D"
  Score(4) = ""
  Score(5) = "F"

  For i = 0 To 5
    If Score(i) <> "" Then k = k + 1: valX(k) = Score(i)
  Next i

  For i = 1 To 6
    If valX(i) <> "" Then MsgBox valX(i)
  Next i

End Sub

Si ça te va, merci de passer le sujet en résolu.

Merci à toi, ça fonctionne super bien, exactement ce que je voulais faire.

bonne journée

Greg

encore meerci

Rechercher des sujets similaires à "boucle valeur vide"