Bonjour,

Je ne pense pas que l'intitulé de mon problème soit clair mais je vais essayer d'expliquer cela plus précisément. En effet, je souhaite contrôler des fonctions par des "PushButton" mais également les appeler à certaines conditions dans d'autre fonction de mon script. Bref le plus simple est de mettre une version simplifiée de mon script:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
function main
hFig=figure('units','normalized','outerposition',[0 0.05 1 0.95],'Name','TOTO','NumberTitle','off','toolbar','figure');
graph=axes('Units','normalized','position',[0.25 0.1 0.69 0.82],'Tag','Onglet_7');

quad1=uicontrol('Style', 'pushbutton', ... 
  'String', 'Quadrillage 1','Value',0, ... 
  'Units','normalized','Position',  [0.015 0.44 0.047 0.07], ... 
  'Callback', @quadrillage1);

couleur_defaut=get(quad1,'BackgroundColor');
quad2=uicontrol('Style', 'pushbutton', ... 
'String', 'Quadrillage 2','Value',0, ... 
'Units','normalized','Position',  [0.072 0.44 0.047 0.07], ... 
'Callback', @quadrillage2);

quad3=uicontrol('Style', 'pushbutton', ... 
'String', 'Quadrillage 3','Value',1,'BackgroundColor',[91/255 157/255 255/255], ... 
'Units','normalized','Position',  [0.129 0.44 0.047 0.07], ... 
'Callback', @quadrillage3);


tata=uicontrol('Style', 'pushbutton', ... 
'String', 'Surprise', ... 
'Units','normalized','Position',  [0.5 0.5 0.1 0.1], ... 
'Callback', @test);


function quadrillage1(src,evt)
    try
       set(quad2,'Value',0);
       set(quad3,'Value',0);
       set(quad1,'BackgroundColor',[91/255 157/255 255/255])
       set(quad2,'BackgroundColor',couleur_defaut)
       set(quad3,'BackgroundColor',couleur_defaut)
       disp(couleur_defaut)
       grid off
    catch
        msgbox('Erreur de code')
    end
end 
function quadrillage2(src,evt)
    try
       set(quad1,'Value',0);
       set(quad3,'Value',0);
       set(quad2,'BackgroundColor',[91/255 157/255 255/255])
       set(quad1,'BackgroundColor',couleur_defaut)
       set(quad3,'BackgroundColor',couleur_defaut)
       grid off
       grid on
    catch
        msgbox('Erreur de code')
    end
end

function quadrillage3(src,evt)
    try
       set(quad1,'Value',0);
       set(quad2,'Value',0);
       set(quad3,'BackgroundColor',[91/255 157/255 255/255])
       set(quad1,'BackgroundColor',couleur_defaut)
       set(quad2,'BackgroundColor',couleur_defaut)
       grid minor
    catch
        msgbox('Erreur de code')
    end
end


function test(src,evt)
    plot(magic(5));
    colorblue=[91/255 157/255 255/255];
    a=get(quad2,'BackgroundColor')-colorblue;
    if a==0
        disp('I''m in the loop')
        set(quad2,'Callback', @quadrillage2)
    end
end
end
Dans ce script je souhaite, lorsque le bouton "Quadrillage 2" est enclenché et que l'on appuie sur le bouton "Surprise" le graphique s'affiche avec le "Quadrillage 2" (partie du code en rouge). (C'est une version très simplifiée du programme principal).

Merci par avance de votre aide.

Florian