completer une Macro evenementielle

CelluleVide

XLDnaute Occasionnel
Bonjour a tous,

J'ai une macro evenementielle qui quand l'utilisateur selectionne
le type de plan, la macro affiche la plage concernée de l'onglet "Type plans".

Je voudrais que cette macro fonctionne aussi après modif d'autres cellules;

Exemple ici: "plan droit" en C5 et "Oui" en B11 ==> affiche la plage nommée "Plan_1ARR_AvG"

Voir le fichier joint pour illustration.

Merci.
 

Pièces jointes

  • Edition BT.xls.zip
    35.5 KB · Affichages: 22

ROGER2327

XLDnaute Barbatruc
Re : completer une Macro evenementielle

Bonjour CelluleVie
Pas sûr d'avoir bien compris. À tout hasard, essayez en remplaçant
Code:
    If Target.Address <> Range("C5").Address Then Exit Sub
par
Code:
    If Intersect(Target, Range("C5,B10:D13,B15:D16")) Is Nothing Then Exit Sub
ROGER2327
#5198


Mardi 10 Clinamen 138 (Rémission des Poissons, SQ)
12 Germinal An CCXIX
2011-W13-5T09:58:58Z
 

CelluleVide

XLDnaute Occasionnel
Re : completer une Macro evenementielle

Bonjour Roger2327,

Ce n'est pas facile a expliquer, en fait, on peut avoir le cas d'un plan Droit (renseigner en C5) avec des particularités qui sont elles renseignées en B11 ou B12 Etc...

Ce que je voudrais, c'est quelque chose du genre SI C5 = "PLAN DROIT" et B11 = "OUI" THEN .....

J'espere avoir été plus clair...

Merci pour votre temps.
 

Gorfael

XLDnaute Barbatruc
Re : completer une Macro evenementielle

Salut CelluleVide et le forum
une idée d'une solution :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo FIN_CHANGE
Dim i As Integer, c As Range, Cadre As Range
Dim S As Shape

'Validité ============================================
If Intersect(Target, Range("C5, B10:B13, B15:B16")) Is Nothing Then Exit Sub
'MEI =================================================
Application.EnableEvents = False
'RAZ -------------------------------------------------
Range([A10], Range("A1").SpecialCells(xlCellTypeLastCell)).Delete xlShiftUp

For Each S In ActiveSheet.Shapes
    If Left(S.Name, 7) = "Picture" Then S.Delete
Next S
'Traitements =========================================
Select Case Range("C5")
    Case "PLAN DROIT"
        If [B11] = "OUI" Then
            Set Cadre = Sheets("Type Plans").Range("Plan_1ARR_AvG")
        Else
            Set Cadre = Sheets("Type Plans").Range("Plan_Droit1")
        End If
    
    Case "PLATEAU DE TABLE RECTANGULAIRE / SNACK"
        Set Cadre = Sheets("Type Plans").Range("Plan_Droit1")

    Case "PLATEAU DE TABLE RONDE"
        Set Cadre = Sheets("Type Plans").Range("Table_Ronde")
        
    Case "PLAN AVANCE"
        Set Cadre = Sheets("Type Plans").Range("Plan_Avancé")
        
    Case "PLAN SIFFLET"
        Set Cadre = Sheets("Type Plans").Range("Plan_Sifflet")

End Select
Cadre.Copy Range("A10")
End If

FIN_CHANGE:
If Err.Number <> 0 Then MsgBox Err.Description, vbCritical, "Erreur n°" & Err.Number
Application.EnableEvents = True
End Sub
Mais, comme d'habitude, ne connaissant pas du tout l'utilisation du fichier...

La problématique que j'y vois :
Soit, comme c'est le cas, on remplace toute la feuille à partir de la cellule A10.
Soit on ajoute des détails, en fonction des cellules B10:B13 et B15:B16

Dans le premier cas, il faut savoir si les infos de chacun des peuvent être couplées, ou s'excluent mutuellement (un seul oui par groupe).
Dans le second cas, il faut calculer où copier les détails => pour ça, je suggèrerais de finir chaque plan par la phrase "ATTENTION SCHEMA NON CONTRACTUEL !!!!!!!! (NB Tasseaux inter a controler)" et de la rechercher pour connaître la dernière ligne inscrite.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 440
Messages
2 088 460
Membres
103 858
dernier inscrit
Rockaway