Poser votre question
0

Calc condition SI [fermée]

posée 2019-05-24 23:05:55 +0100

Image Gravatar de Jé

Bonjour,

je cherche à mettre une valeur dans ma cellule en fonction de la valeur d'une autre. Jusque là tout va bien.

Voici ce que j'ai :

dans la cellule A1 j'ai la formule : =JOUR(AUJOURDHUI())

Dans ma cellule A2 j'ai une valeur au format nombre

Ce que je veux faire :

Quand ma cellule A1 affiche la valeur 1 (premier jour du mois), je veux que ma cellule A2 soit égale à 0, sinon la valeur de A2 ne change pas, elle est incrémentée par une macro

Ce que j'ai fait :

=SI(A1="1";1;A2)

Ne fonctionne pas

=SI(A1=1;1;A2)

Ne fonctionne pas

=SI(A1=1;1;)

Ne fonctionne pas

Et quelques autres...

Je pense que le problème vient du fait que j'ai une formule dans la case A1. J'ai alors essayé en faisant une copie bête et méchante de la cellule, mais cela bug encore.

Pourriez-vous m'aider ?

Merci

éditer requalifier signaler réouvrir fusionner supprimer

Fermé pour la raison suivante la question est résolue, une bonne réponse a été acceptée par
date de clôture 2019-05-27 22:57:59.374558

3Réponses

0

répondue 2019-05-25 06:07:57 +0100

Je pense que ton problème vient du fait que tu utilises un macro qui va effacer le résultat de ta formule. Ne peux-tu pas gérer ce problème avec la macro (ou supprimer la macro et faire tout dans la formule).

Je n'ai pas bien compris ce que tu voulais faire mais la formule ci-dessous ne pourrait-elle pas résoudre ton problème?

=$A1 - 1
éditer signaler supprimer permalien plus
0

répondue 2019-05-25 07:32:49 +0100

Image Gravatar de pierre-yves samyn

Bonjour

@Jé a écrit:

Quand ma cellule A1 affiche la valeur 1 (premier jour du mois), je veux que ma cellule A2 soit égale à 0, sinon la valeur de A2 ne change pas

Ceci est un cas classique de "référence circulaire" (impossible) : en A2 tu veux mettre une formule qui utilise A2 pour le calcul.

De plus tu indiques modifier A2 par macro, ce qui, de toute façon effacera la formule : une cellule ne peut à la fois contenir une valeur et une formule.

Puisque tu utilises des macros tu peux procéder en utilisant par exemple les événements de la feuille : clic droit sur l'onglet pour y accéder puis naviguer pour associer à l'événement Contenu modifié une macro du type suivant.

Sub PysSheetChange(oEvent)

if oEvent.supportsService("com.sun.star.sheet.SheetCell") then
    if split(oEvent.AbsoluteName, ".")(1) = "$A$1" and oEvent.value = 1 then
        thiscomponent.currentController.activeSheet.getCellRangeByName("A2").value = 0
    end if
end if

End Sub
  • La macro vérifie d'abord que l'objet modifié qui a déclenché l'événement est une cellule.
  • Si oui, on vérifie qu'il s'agit bien de la cellule A1 et qu'elle contient 1.
  • Si oui on met 0 dans A2 (qui n'est pas modifiée dans tous les autres cas)

Voir l'exemple C:\fakepath\ModifAutreCellule.ods

Cordialement

éditer signaler supprimer permalien plus

Commentaires

En fait, j'ai lu trop vite... J'avoue que je ne connaissais pas cette fonctionnalité "Contenu modifié". Du coup tout fonctionne parfaitement ! Merci infiniment.

Image Gravatar de Jé ( 2019-05-27 22:55:55 +0100 )éditer
0

répondue 2019-05-27 22:20:42 +0100

Image Gravatar de Jé

Bonsoir,

C'est exactement ça ! Merci beaucoup Monsieur Samyn. Il ne me reste plus qu'à adapter à ma macro car la cellule est remplie automatiquement par une formule. Merci encore.

éditer signaler supprimer permalien plus

Outils de question

1 suiveurs

Stats

Posée: 2019-05-24 23:05:55 +0100

Consultée: 62 fois

Mise à jour: May 27