Condition IF

Bonjour, j'ai un code mais il ne fonctionne pas. Si dans ma cellule A1 on y trouve soit lundi ou mardi alors je réalise la boucle sur la valeur présente mais si jamais dans cette cellule, il y a autre chose, je réaliser la boucle sur toutes mes valeurs. Est-ce que vous voyez d'où vient le problème ?

If Range("A1").Value = "Lundi" Or "Mardi" Then
    For Each ma_semaine In Array(Range("A1").Value)
Else
    For Each ma_semaine In Array("Lund", "Mardi")
End If

Merci

Bonjour,

tu ne peu pas séparer un For de son Next par une expression conditionnelle ... utilise une variable intermédiaire dans laquelle tu défini ta plage avec ton expression conditionnelle puis boucle dans les éléments de cette variable..

pierre.jy a écrit :

Bonjour,

tu ne peu pas séparer un For de son Next par une expression conditionnelle ... utilise une variable intermédiaire dans laquelle tu défini ta plage avec ton expression conditionnelle puis boucle dans les éléments de cette variable..

Merci pour ta réponse.

Par exemple je peux prendre une variable que j'appelle "test", je la déclare en tant que string ce qui me donne :

test = Range("A1").Value = "Lundi" Or "Mardi"

Cela me parait bizarre, est-ce que j'ai bien compris ?

Merci

Non je parlais d'une variable tableau ...

quoi je ne sais pas trop ce que te donne ton :

Array(Range("A1").Value)

et à qu'elle est l'utilité d'une boucle sur UNE valeur ? un seul tour de boucle ???

pierre.jy a écrit :

Non je parlais d'une variable tableau ...

quoi je ne sais pas trop ce que te donne ton :

Array(Range("A1").Value)

et à qu'elle est l'utilité d'une boucle sur UNE valeur ? un seul tour de boucle ???

Array(Range("A1").Value)

prend la valeur qu'il y a dans la cellule A1 donc soit lundi ou mardi et fait une boucle mais si jamais ce n'est pas une de ces deux valeurs alors je fais une boucle pour faire les 2 itérations. Et avec la première proposition, ça ne fonctionne pas.

PS : Oui si jamais la valeur se trouve dans la cellule alors il s'agit d'une boucle sur 1 tour seulement.

TeamG1 a écrit :

PS : Oui si jamais la valeur se trouve dans la cellule alors il s'agit d'une boucle sur 1 tour seulement.

et cela sert à quoi de faire une boucle d'un tour ?

Et avec la première proposition, ça ne fonctionne pas.

biens sur que cela fonctionne inspire toi de cela :

Sub BoucleDunTour()

    Dim sh As Worksheet
    Dim tb
    Dim c
    Set sh = ThisWorkbook.Sheets(1)

    If sh.Range("A1") = "Mercredi" Then
        tb = Array("Lundi", "Mardi")
        Else
        tb = Array(sh.Range("A1"))

    End If

    For Each c In tb
        Debug.Print c

    Next

End Sub
pierre.jy a écrit :
TeamG1 a écrit :

PS : Oui si jamais la valeur se trouve dans la cellule alors il s'agit d'une boucle sur 1 tour seulement.

et cela sert à quoi de faire une boucle d'un tour ?

Et avec la première proposition, ça ne fonctionne pas.

biens sur que cela fonctionne inspire toi de cela :

Sub BoucleDunTour()

    Dim sh As Worksheet
    Dim tb
    Dim c
    Set sh = ThisWorkbook.Sheets(1)

    If sh.Range("A1") = "Mercredi" Then
        tb = Array("Lundi", "Mardi")
        Else
        tb = Array(sh.Range("A1"))

    End If

    For Each c In tb
        Debug.Print c

    Next

End Sub

Ce code me génère une erreur, est-ce que cela vient de la variable c dans le for each ?

Comment sait-tu que ce code génère une erreur ? s'il s'agit d'un message il faut le lire ! ( et nous le rapporter pour que l'on t'aide..)

... le code fonctionne s'il est bien utilisé ... placé dans un module standard..

pierre.jy a écrit :

Comment sait-tu que ce code génère une erreur ? s'il s'agit d'un message il faut le lire ! ( et nous le rapporter pour que l'on t'aide..)

... le code fonctionne s'il est bien utilisé ... placé dans un module standard..

Le problème, c'est la variable c, tu dis for each c mais on ne connait pas la valeur de c ?

Ben c à chaque tour de boucle prend une des "valeurs" contenues dans le tableau tb

1° tour 1° valeur, 2° tour 2éme Valeur .....

pierre.jy a écrit :

Ben c à chaque tour de boucle prend une des "valeurs" contenues dans le tableau tb

1° tour 1° valeur, 2° tour 2éme Valeur .....

Je vais tester de nouveau et je reviens pour voir si cela a fonctionné ou non.

Merci

TeamG1 a écrit :
pierre.jy a écrit :

Ben c à chaque tour de boucle prend une des "valeurs" contenues dans le tableau tb

1° tour 1° valeur, 2° tour 2éme Valeur .....

Je vais tester de nouveau et je reviens pour voir si cela a fonctionné ou non.

Merci

Ça fonctionne, j'avais fais une petite erreur. Merci

Rechercher des sujets similaires à "condition"