Fonction SI sous VBA

  • Initiateur de la discussion Initiateur de la discussion Flo_Gui
  • Date de début Date de début

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 !

Flo_Gui

XLDnaute Nouveau
Bonjour à tous,

J'ai une fonction SI dans un tableur qui m'indique si une cellule est un samedi, un dimanche ou un jour férié.
Le numéro du jour est indiqué en B6 et le jour en B7.
Par exemple, pour le mois de janvier (le 1er étant férié) donne ça :

=SI(B6="1er";"FERIE";SI(B7="Sa";"W-E";SI(B7="Di";"W-E";"")))

Ca marche parfaitement sur tableur

Ensuite, j'ai crée une macro pour avoir l'écriture de la formule sous VBA. Voilà ce que ça donne :

ActiveCell.FormulaR1C1 = "=IF(R[-15]C=""Sa"",""W-E"",IF(R[-15]C=""Di"",""W-E"",""""))"

J'aimerais que cette formule, si elle est vrai sur le tableur, c'est à dire si la cellule affiche "FERIE" ou "W-E" qu'elle se décale d'une cellule sur la droite.
Dans le cas contraire, si la cellule contient du "vide", que sa valeur prenne 1. Voilà ce que j'ai écrit :

If ActiveCell.FormulaR1C1 = "=IF(R[-2]C=""1er"",""FERIE"",IF(R[-1]C=""Sa"",""W-E"",IF(R[-1]C=""Di"",""W-E"",""""))" = True Then
ActiveCell.Offset(0, 1).Select
If ActiveCell.FormulaR1C1 = "=IF(R[-2]C=""1er"",""FERIE"",IF(R[-1]C=""Sa"",""W-E"",IF(R[-1]C=""Di"",""W-E"",""""))" = False Then
ActiveCell.Value = "1"

Or, ça ne marche pas. Systématiquement, la cellule prend la valeur 1, qu'il s'agisse d'un samedi, dimanche, jour férié ou d'un jour normal.

Avez vous la solution ?

Merci d'avance !
 
Re : Fonction SI sous VBA

Ci joint un fichier pour vous aider à être plus claire dans mes explications.

Une autre question par la même occasion :
Je souhaiterais faire en sorte via un code du type
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
que les cellules de la plage totale ne prenne pour valeur que 1 et dans le cas contraire faire apparaître un Msgbox indiquant l'erreur.

merci
 

Pièces jointes

Re : Fonction SI sous VBA

Bonjour,

Le fichier que je joint n'est pas trop comme ta demande.
Mais il est possible de faire cela sans VBA.
Pour que les onglets auto-gèrent eux-mêmes les fériés et autres WE, j'ai utilisé une mise en forme conditionnelle, et dans ma formule une gestion du type de résultat dans la cellule.
De cette façon je n'ai "qu'a" ajouter un onglet (ici mensuel) et le nommer n'importe comment du moment qu'il finisse pas le numéro du mois, codé sur 2 caractères.

Joir PJ

Bonne journée
 

Pièces jointes

- 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
4
Affichages
148
Réponses
5
Affichages
496
Réponses
7
Affichages
547
Réponses
22
Affichages
1 K
Réponses
3
Affichages
453
Retour