Coucou,
Mon site, comme vous pouvez le voir, est en pleine restructuration !
Ravalement de façade et un peu de lubrification dans la mécanique !
Ma dernière sauvegarde étant du mois de septembre, je remets à jour les derniers articles, mais rien n’est perdu...
En cas de besoin urgent : webmaster@patcatnats.fr
@ bientôt

PatCatNat’s
Faire de son négatif un positif !

Site personnel de Patrice MOREL.

Bogues code VBA
Article mis en ligne le 10 septembre 2009
dernière modification le 17 mars 2010

par Patrice MOREL

Il y a des trucs que je ne m’explique pas et pourtant après modif çà marche...

Mes images (feu tricolore) ne s’affichent pas dans l’odre voulu (premier plan) :

L’exemple suivant est :
 mettre en premier plan le feu rouge si les cellules "F6" et "K6" sont inférieures à 100%
 mettre en premier plan le feu orange si les cellules "F6" ou "K6" sont inférieures à 100%
 mettre en premier plan le feu vert si les cellules "F6" et "K6" sont supérieures à 100%

Le code qui ne fonctionne pas alors que tout semble correct :

Private Sub Workbook_Open()
If Range("F6") < 1 And Range("K6") < 1 Then
  ActiveSheet.Shapes("Picture 9").ZOrder msoBringToFront 'Rouge
ElseIf Range("F6") < 1 And Range("K6") >= 1 Then
  ActiveSheet.Shapes("Picture 10").ZOrder msoBringToFront 'Orange
ElseIf Range("F6") >= 1 And Range("K6") < 1 Then
  ActiveSheet.Shapes("Picture 10").ZOrder msoBringToFront 'Orange
ElseIf Range("F6") >= 1 And Range("K6") >= 1 Then
  ActiveSheet.Shapes("Picture 6").ZOrder msoBringToFront 'Vert
End If
End Sub

Il faut simplement sauter une ligne en début de code et une en fin de code :

Private Sub Workbook_Open()

If Range("F6") < 1 And Range("K6") < 1 Then
  ActiveSheet.Shapes("Picture 9").ZOrder msoBringToFront 'Rouge
ElseIf Range("F6") < 1 And Range("K6") >= 1 Then
  ActiveSheet.Shapes("Picture 10").ZOrder msoBringToFront 'Orange
ElseIf Range("F6") >= 1 And Range("K6") < 1 Then
  ActiveSheet.Shapes("Picture 10").ZOrder msoBringToFront 'Orange
ElseIf Range("F6") >= 1 And Range("K6") >= 1 Then
  ActiveSheet.Shapes("Picture 6").ZOrder msoBringToFront 'Vert
End If

End Sub

Pour moi cela restera un bogue tant que je n’aurais pas d’explication logique !...