Afficher image dans un if

Bonjour,

Je rencontre un soucis avec mon code. Je m'explique, un personne coche ou ne coche pas des cases dans un usf et je veux que si les cases sont cochées ou non, une image ou l'autre s'affiche.

Etant donné que j'ai beaucoup de lignes, j'aimerais faire ca avec un for i=1 to ... mais je pense que j'écris mal mon code avec le i.

Ci joint mon problème sur le fichier.

Je vous remercie par avance.

Oliblast

Débutant en VBA

Bonjour, il faut faire attention à l'utilisation de la valeur de i

Le nom de vos checkbox c'est essai_1 ou essai_2 et pas essai_i

Par ailleurs Me.essai_ ...... pas necessaire :

If essai_1.Value = True Then
For i = 1 To 2
If Me.essai_i.Value = True Then
ActiveSheet.Shapes(i & "-OK").Visible = True

Déjà merci pour ta réponse rapide.

Donc il n'y a pas moyen d'incrémenter le i à la place du 1,2... ?

Il faut que j'écrive cela comme ça du coup ? Pas moyen d'écrire moins de lignes ?

If essai_1.Value = True Then
ActiveSheet.Shapes(1-OK).Visible = True
Else
essai_1.Value = False
ActiveSheet.Shapes(1-NOK).Visible = True
End If
If essai_2.Value = True Then
ActiveSheet.Shapes(2-OK).Visible = True
Else
essai_2.Value = False
ActiveSheet.Shapes(2-NOK).Visible = True
End If

Si votre checkbox utilise la même variable alors c'est plutôt :

Private Sub CommandButton1_Click()
For i = 1 To 2
If Me.Controls("essai_" & i).Value = True Then
ActiveSheet.Shapes(i & "-OK").Visible = True
End If
If Me.Controls("essai_" & i).Value = False Then
ActiveSheet.Shapes(i & "-NOK").Visible = True
End If
Next i
End Sub

Super c'est exactement cela que je cherchais !

Donc je dois utiliser controls. Je te remercie !

Super c'est exactement cela que je cherchais !

Donc je dois utiliser controls. Je te remercie !

Oui car pour Excel dans : essai_i il ne voit pas de variable il lit le tout.

En passant par me.controls() celà permet de séparer de début du nom de la checkbox de la variable i

Nota si le but était de réduire le nombre de ligne alors dans ce cas tu peux enlever le deuxième if pour tester la checkbox false.

En effet après le premier test si ta checkbox n'est pas en mode "True" alors c'est quelle est en mode "False" (2 possibilités).

Par contre je vois à l'instant un problème en cas de modification ! la macro ne va pas remettre la shapes en mode invisible en cas de changement ?

Private Sub CommandButton1_Click()
For i = 1 To 2
If Me.Controls("essai_" & i).Value = True Then
ActiveSheet.Shapes(i & "-OK").Visible = True
ActiveSheet.Shapes(i & "-NOK").Visible = False
Else
ActiveSheet.Shapes(i & "-NOK").Visible = True
ActiveSheet.Shapes(i & "-OK").Visible = False
End If
Next i
End Sub
Rechercher des sujets similaires à "afficher image"