ordre pour 3 formes supperposées

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

al1000

XLDnaute Impliqué
Bonsoir,

1)j'ai 3 formes A1,A2,A3 supperposeés
en fonction du résultat de la cellule a1, j'ai une forme qui se met au premier plan

2)j'ai 3 formes B1,B2,B3 supperposeés
en fonction du résultat de la cellule a2, j'ai une forme qui se met au premier plan

3)j'ai 3 formes C1,C2,C3 supperposeés
en fonction du résultat de la cellule a3, j'ai une forme qui se met au premier plan

Problemes
j'ai 3 formes D1,D2,D3 supperposeés
Comment ecrire une macro pour:
si la forme en premier plan est A1;B2 et C3 alors je met en premier plan la forme D1
si la forme en premier plan est A1;B1 et C1 OU A3;B3; C3 alors je met en premier plan la forme D2


a+
 
Re : ordre pour 3 formes supperposées

bonsoir,

proposition :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
    If Target.Row = 3 Then
        Select Case [A3]
            Case 1
            ActiveSheet.Shapes("AutoShape 7").ZOrder msoBringToFront
            Case 2
            ActiveSheet.Shapes("AutoShape 8").ZOrder msoBringToFront
            Case 2
            ActiveSheet.Shapes("AutoShape 9").ZOrder msoBringToFront
        End Select
    End If
    If Target.Row = 2 Then
        Select Case [A2]
            Case 1
            ActiveSheet.Shapes("AutoShape 4").ZOrder msoBringToFront
            Case 2
            ActiveSheet.Shapes("AutoShape 5").ZOrder msoBringToFront
            Case 2
            ActiveSheet.Shapes("AutoShape 6").ZOrder msoBringToFront
        End Select
    End If
    If Target.Row = 1 Then
        Select Case [A1]
            Case 1
            ActiveSheet.Shapes("AutoShape 1").ZOrder msoBringToFront
            Case 2
            ActiveSheet.Shapes("AutoShape 2").ZOrder msoBringToFront
            Case 2
            ActiveSheet.Shapes("AutoShape 3").ZOrder msoBringToFront
        End Select
    End If
    VformesD = [A1] * 100 + [A2] * 10 + [A3]
    If VformesD = 123 Then
        ActiveSheet.Shapes("AutoShape 10").ZOrder msoBringToFront
    Else
 If VformesD = 111 Or VformesD = 333 Then
            ActiveSheet.Shapes("AutoShape 11").ZOrder msoBringToFront
        Else
            ActiveSheet.Shapes("AutoShape 12").ZOrder msoBringToFront
        End If
    End If
End If
End Sub
j'ai mis 12 formes automatiques pour simplifier le code et j'ai choisi une codification simple pour A1, A2, A3.

cordialement
 
Re : ordre pour 3 formes supperposées

bonjour,

target est la variable que fournit la procédure évènementielle _change.
avec les target.column et .row, je limite le champ d'actionde la proc évènementielle aux cellules A1:A3
je n'ai pas pensé à t'envoyer le fichier.

c'est fait

A+

je viens de lire ton dernier message.
il faut donc remplacer A1, A2 et A4 par J6, H32 et D50 et dans ce cas tu pourras utiliser Target.Address="$J$6", etc pour tester les évènements sur tes 3 cellules
 

Pièces jointes

Dernière édition:
Re : ordre pour 3 formes supperposées

bonsoir

voici ma macro:

Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Row = 3 Then
Select Case [j6]
Case 1
ActiveSheet.Shapes("client vert").ZOrder msoBringToFront
Case 2
ActiveSheet.Shapes("client jaune").ZOrder msoBringToFront
Case 2
ActiveSheet.Shapes("client rouge").ZOrder msoBringToFront
End Select
End If
If Target.Row = 2 Then
Select Case [h32]
Case 1
ActiveSheet.Shapes("prod vert").ZOrder msoBringToFront
Case 2
ActiveSheet.Shapes("prod jaune").ZOrder msoBringToFront
Case 2
ActiveSheet.Shapes("prod rouge").ZOrder msoBringToFront
End Select
End If
If Target.Row = 1 Then
Select Case [d50]
Case 1
ActiveSheet.Shapes("securite vert").ZOrder msoBringToFront
Case 2
ActiveSheet.Shapes("securite rouge").ZOrder msoBringToFront
End Select
End If
VformesD = [A1] * 100 + [A2] * 10 + [A3]
If VformesD = 123 Then
ActiveSheet.Shapes("perf vert").ZOrder msoBringToFront
Else
If VformesD = 111 Or VformesD = 333 Then
ActiveSheet.Shapes("perf jaune").ZOrder msoBringToFront
Else
ActiveSheet.Shapes("perf rouge").ZOrder msoBringToFront
End If
End If
End If
End Sub


a+
 
Re : ordre pour 3 formes supperposées

Re

Perso pas de problème

J'ai la macro qui bug mais c'est normal vu que je n'ai pas tes shapes mais elle se lance

Par contre cette macro elle est faite pour se lancer toute seule au changement de ta feuille. Tu n'as pas besoin de la lancer par outils macro. Voilà pourquoi il y a private devant car c'est une macro evenementielle qui se déclenche sur ecenement ici sur une modification de ta feuille

Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
345
wDog66
W
Réponses
3
Affichages
470
Réponses
2
Affichages
244
Réponses
10
Affichages
411
Retour