Somme cellules couleurs conditionnelles

Résolu
brownie0169 Messages postés 9 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2008 - 10 janv. 2008 à 16:58
brownie0169 Messages postés 9 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2008 - 14 janv. 2008 à 18:34
Bonjour
Sous Excel, quelqu'un pourrait il m'indiquer s'il est possible d'additionner les nombres dans des cellules mises en forme conditionnelle avec une formule? Lorsque la mfc est basée sur une valeur, pas de pb (ex: la valeur de la cellule est: =2008). Lorsque cette mfc se fait sur une formule, ça ne fonctionne pas (ex: La formule est: =$C$20). Existe t il une solution?
Je n'ai rien trouvé sur les forums...
D'avance merci.

4 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 janv. 2008 à 11:28
Je ne suis pas certain de comprendre ta question, ...
As-tu essayé SOMME.SI ?

Si ça ne fonctionne pas, donne plus de détails avec peut-être une idée de la composition de tes données.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011
10 janv. 2008 à 18:11
Bonjour ;-)

voilà un exemple tt fait pour gèrer Excel à partir de Delphi

unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,ComObj, ExtCtrls;


type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    Edit1: TEdit;
    parcourir: TButton;
    Label1: TLabel;
    Ouvrir: TButton;
    Panel2: TPanel;
    Invisible: TButton;
    Visible: TButton;
    Panel3: TPanel;
    NouveauDocument: TButton;
    Panel4: TPanel;
    InsererTexte: TButton;
    Edit2: TEdit;
    Panel5: TPanel;
    FermerWord: TButton;
    Gras: TButton;
    Itallic: TButton;
    Souligne: TButton;
    ButtonOuvrirExcel: TButton;
    ButtonSauverSous: TButton;
    Panel6: TPanel;
    ButtonSelection: TButton;
    Panel7: TPanel;
    ButtonMettreValeur: TButton;
    EditFormule: TEdit;
    Label2: TLabel;
    Label4: TLabel;
    Editcellule: TEdit;
    Editcellule2: TEdit;
    fermerDocument: TButton;
    Panel8: TPanel;
    ButtonLireCellule: TButton;
    EditContenu: TEdit;
    Editcellule3: TEdit;
    Label3: TLabel;
    Label5: TLabel;
    Panel9: TPanel;
    EditFormule2: TEdit;
    ButtonInsererFormuleDansSelection: TButton;
    Panel10: TPanel;
    Button1: TButton;
    Label6: TLabel;
    Label7: TLabel;
    EditFormula: TEdit;
    Panel11: TPanel;
    Button2: TButton;
    EditSelectOnglet: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure InsererTexteClick(Sender: TObject);
    procedure parcourirClick(Sender: TObject);
    procedure OuvrirClick(Sender: TObject);
    procedure InvisibleClick(Sender: TObject);
    procedure VisibleClick(Sender: TObject);
    procedure NouveauDocumentClick(Sender: TObject);
    procedure fermerDocumentClick(Sender: TObject);
    procedure FermerWordClick(Sender: TObject);
    procedure GrasClick(Sender: TObject);
    procedure ItallicClick(Sender: TObject);
    procedure SouligneClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ButtonOuvrirExcelClick(Sender: TObject);
    procedure ButtonSelectionClick(Sender: TObject);
    procedure ButtonSauverSousClick(Sender: TObject);
    procedure ButtonMettreValeurClick(Sender: TObject);
    procedure ButtonLireCelluleClick(Sender: TObject);
    procedure ButtonInsererFormuleDansSelectionClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;


implementation
{$R *.DFM}
var
  OleApplication :variant;
  OleWorkBook    :variant;


procedure TForm1.FormCreate(Sender: TObject);
begin
   OleApplication := CreateOleObject('Excel.Application');// création du lien OLE pour la classe référencé par Excel dans la base de registre "Excel.Application"
   OleApplication.visible:=True; // pour rendre Excel visible
   OleWorkBook:=OleApplication.Workbooks.Add; // pour créer un  nouveau document
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  try OleApplication.Quit;
  except end;
end;


procedure TForm1.InsererTexteClick(Sender: TObject);
begin
  OleApplication.ActiveCell.Formula := Edit2.Text;
end;


procedure TForm1.ButtonInsererFormuleDansSelectionClick(Sender: TObject);
begin
  OleApplication.Selection.Formula:=EditFormule2.Text;
end;


procedure TForm1.parcourirClick(Sender: TObject);
begin
  if OpenDialog1.Execute then Edit1.Text:=OpenDialog1.FileName;
end;


procedure TForm1.OuvrirClick(Sender: TObject);
begin
  OleWorkBook:=OleApplication.Workbooks.open(Edit1.Text); // pour créer un  nouveau document
end;


procedure TForm1.InvisibleClick(Sender: TObject);
begin
  OleApplication.visible:=False; // pour rendre invisible word (on peut alors continuer à travailler dedans en aveugle
end;


procedure TForm1.VisibleClick(Sender: TObject);
begin
   OleApplication.visible:=True; // pour visualiser
end;


procedure TForm1.NouveauDocumentClick(Sender: TObject);
begin
  OleWorkBook:=OleApplication.Workbooks.Add; // pour créer un  nouveau document
end;


procedure TForm1.fermerDocumentClick(Sender: TObject);
begin
  OleApplication.Workbooks.Close;
end;


procedure TForm1.FermerWordClick(Sender: TObject);
begin
  OleApplication.Quit;
  OleApplication:=Unassigned;//La constante Unassigned est utilisée pour indiquer qu'une variable Variant n'a pas encore été affectée d'une valeur.
end;


procedure TForm1.GrasClick(Sender: TObject);
begin
  OleApplication.Selection.Font.Bold := not(OleApplication.Selection.Font.Bold);
end;


procedure TForm1.ItallicClick(Sender: TObject);
begin
  OleApplication.Selection.Font.Italic:=not(OleApplication.Selection.Font.Italic);
end;


procedure TForm1.SouligneClick(Sender: TObject);
Const
  xlUnderlineStyleSingle=2;
  xlUnderlineStyleNone=-4142;
begin
 if OleApplication.Selection.Font.UnderLine=xlUnderlineStyleNone then
   OleApplication.Selection.Font.UnderLine:=xlUnderlineStyleSingle
   else OleApplication.Selection.Font.UnderLine:=xlUnderlineStyleNone;
end;




procedure TForm1.ButtonOuvrirExcelClick(Sender: TObject);
begin
   OleApplication := CreateOleObject('Excel.Application');// création du lien OLE
   OleApplication.visible:=True; // pour rendre word visible
end;


procedure TForm1.ButtonSelectionClick(Sender: TObject);
begin
  OleApplication.Range[EditCellule2.text].select;
end;


procedure TForm1.ButtonSauverSousClick(Sender: TObject);
begin
  OleApplication.ActiveWorkBook.SaveAs(Edit1.Text);
end;


procedure TForm1.ButtonMettreValeurClick(Sender: TObject);
begin
  OleApplication.Range[Editcellule.Text].Formula:=EditFormule.Text;// attention Range est un tableau donc mettre [] et non ()
end;


procedure TForm1.ButtonLireCelluleClick(Sender: TObject);
begin
  EditContenu.Text:=OleApplication.Range[Editcellule3.Text].value;
  EditFormula.Text:=OleApplication.Range[Editcellule3.Text].Formula;
end;


procedure TForm1.Button1Click(Sender: TObject);
Var Tab:array[1..100]of string;
  i:integer;
begin
  label6.Caption:='en cours';
  for i:=1 to 100 do
  begin
     OleApplication.Cells[1,i+1].Formula:='=RC[-1]+1';
  end;
  for i:=1 to 100 do
  begin
     Tab[i]:=OleApplication.Cells[1,i].value;
  end;
  for i:=1 to 100 do
  begin
     OleApplication.Cells[2,i].Formula:=Tab[i];
  end;
  label6.Caption:='terminé';
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
   OleWorkBook.Worksheets.item[EditSelectOnglet.Text].Activate;//connexion à un onglet
end;


end.

haftari.fouad
0
brownie0169 Messages postés 9 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2008
10 janv. 2008 à 20:10
Merci pour la réponse et bravo pour votre célérité!!!
Mais j'ai omis de préciser "Vba", et tropnovice pour me lancer dans ce vtype de programmation...
0
brownie0169 Messages postés 9 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2008
14 janv. 2008 à 18:34
Pb résolu, jai cherché quelquechose de compliquié, alors qu'une simple formule "SOMME.SI" suffisait....
Merci encore de t'inquiéter de mon problème.
@+
0
Rejoignez-nous