XL 2010 VBA convertir fonction SI

spike29

XLDnaute Occasionnel
Bonjour,

Débutant en VBA, je souhaite convertir deux formules Excel en VBA.

Les voici :

En cellule E24
SI(D8="Vendredi";L8+2;SI(D8="Samedi";L8+1;L8))

En cellule G24
=SI(D8="vendredi";$L$8+3;SI(W8="NUIT";$L$8;SI(W8="JOUR";$L$8+1;)))


La quasi intégralité de mon fichier est protégé afin d'éviter des suppressions involontaires (code de protection "spike")
Pour les cas particuliers comme les fériers ou autres, l'utilisateur pourra être amené à directement modifier les dates dans les cellules E24 et G24 pour qu'elles correspondent au besoin du moment.


J'aimerai également qu'une inputbox lui propose OUI/NON s'il veut modifier la date dans la cellule qu'il sélectionne (E24 ou G24)
S'il coche "OUI" cela aura pour action de déprotéger la cellule.

En PJ, un fichier exemple pour mieux illustrer mon besoin.

Merci d'avance pour votre aide.

Bonne journée à toutes et à tous !

Spike.
 

Pièces jointes

  • TEST.xlsx
    25.3 KB · Affichages: 23

spike29

XLDnaute Occasionnel
Bonjour Staples,

Merci pour ta réponse.
Dans la colonne D il n'y a pas de date mais la formule suivante :

VB:
=CHOISIR(JOURSEM(L8;2);"lundi";"mardi";"mercredi";"jeudi";"vendredi";"samedi";"dimanche")

Elle permet d'afficher le jour de la semaine en fonction de date présente en cellule L8.

J'ai essayé de décortiquer la fonction "select case", je pense qu'elle correspond à mon besoin mais je ne vois comment la coder afin qu'elle réponde précisément à mon besoin.

Je remet en pj mon fichier d'exemple avec mon besoin redétaillé.

Merci d'avance pour ton aide et bonne journée

Cdt,
 

Pièces jointes

  • TEST.xlsm
    30.9 KB · Affichages: 2

Staple1600

XLDnaute Barbatruc
Re

J'ai ouvert ta PJ
Préambule
On ne sort que le VBA que lorsque cela apporte un gain significatif
(c'est mon avis et je le partage ;)
Donc si j'étais moi, je me contenterai d'utiliser les formules
Sauf que j'utiliserai celle-ci en E24
=L8+2*(JOURSEM(L8;2)=5)+1*(JOURSEM(L8;2)=6)
Et en G24, celle-ci
=L8+3*(JOURSEM(L8;2)=5)+1*(W8="JOUR")
et enfin en D8, icelle
=L8
(avec format cellule: jjjj)
 
Dernière édition:

spike29

XLDnaute Occasionnel
Re,

Je partage à 100% ta remarque sur l'utilisation de VBA lorsqu'il apporte une plus value.
Raison pour laquelle certaines de mes cellules en sont dépourvues.

Si je souhaite utiliser VBA dans ce cas, c'est pour pouvoir laisser la possibilité à l'utilisateur de saisir manuellement une date dans les cellules E24 / G24.
En effet, les fériers et autres particularités (fermetures etc...) ne peuvent être reprises dans ma formule ni dans la tienne.
Il me faut donc du VBA pour qu'à ces moments précis l'utilisateur puisse manuellement faire la correction et surtout qu'a la prochaine ouverture du document, les formules réapparaissent automatiquement.

Raison pour laquelle mon 2ème besoin est formulé.

Merci d'avance pour ton aide et ta compréhension.

Spike.
 

Staple1600

XLDnaute Barbatruc
Re

Alors en suivant ma logique qui suit la logique que j'ai cru voir dans ton classeur, voici un bout de VBA à tester in situ.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If InStr(Target.Address, "$L$8") Then
choixdate = MsgBox("Voulez-vous modifier la date,", vbCritical + vbYesNo, "Choix date")
Select Case choixdate
Case 6
Target = CDate(InputBox("Nouvelle date?"))
Case Else
Target = Date
End Select
End If
End Sub
Puisque tu veux tâter du VBA, je te laisse deviner à quel endroit ce code VBA doit être mis dans ton classeur ;)
 

spike29

XLDnaute Occasionnel
Re,

Pour clarifier le tout. Le fichier "exemple" que j'ai mis en ligne n'est qu'un minuscule bout de mon fichier que je n'ai pas mis en ligne pour des raisons de confidentialité et de simplicité.

La cellule L8 n'a pas vocation à être modifiée. Elle reprend tout simplement la date du jour pour l'utilisateur et les destinataires du fichiers. Donc a ne pas modifier.

Je te confirme donc que c'est bien les cellule E24 et G24 qui sont concernées.
Mon besoin reste inchangé.
Ton code pour la protection de la cellule et la modification de la date fonctionne parfaitement pour ce point merci.
Code naturellement à insérer dans la Feuil de calcul et non dans un module (débutant mais pas inculte ^^ ;) )

Tes formules dans le post6 fonctionnement également bien.

Du coup, comment transformer ces deux formules en VBA pour répondre à ma demande initiale ?

Rappel du besoin :

Si un utilisateur est amené a modifier les dates en E24 ou G24 ces formules doivent systématiquement réapparaître à l'ouverture du fichier.

Merci d'avance.
 

spike29

XLDnaute Occasionnel
Re

Et tu ne t'ai jamais dis que d'autres cellules ou éléments de mon code pouvaient dépendre du contenu de L8 et que les objectifs de la cellule L8 et E24 / G24 étaient bien différents ?
Mon fichier comme je te l'ai expliqué ne s'arrête pas au fichier d'exemple que j'ai envoyé en PJ.
En restant bloqué sur la cellule L8 en plus de ne pas répondre à mon besoin, tu laisses la possibilité à l'utilisateur de planter le reste de mon fichier en y modifiant la date.
Je ne vais pas m'étendre sur le reste du fonctionnement de mon document mais les besoins que je peux formuler même s'ils peuvent paraître flous ou injustifiés à ton niveau le sont bel et bien.

L8 affiche la date du jour et rien d'autre, pas de modification possible pour l'utilisateur.

Après si tu ne veux pas répondre à mon besoin sur la base d'un bout de fichier que tu juges incohérent, libres à toi... bien que ça reste dommage sur un forum destiné à l'entre aide.


Bonne soirée


Spike.
 

Staple1600

XLDnaute Barbatruc
Re

=>spike29
Tu ne sais pas détecter l'humour qui suinte de mon précédent message?
(pourtant souligné par un smiley)
:rolleyes:

Et ne t''ai-je pas déjà quelque peu aidé avec mes formules et mon bout de code VBA?

Et petit rappel chartique...

2 – Tous les membres du forum répondent gracieusement aux questions. Il n’y a donc aucune obligation de résultat et de délai.

Alors respire, camarade ;)
 

spike29

XLDnaute Occasionnel
Re Staple,

Mdrr complètement passé a côté ^^ je crois que rester l'après-midi devant du VBA ne me réussi pas
Je ferai bien d'ouvrir une bière vu l'heure et me faire un pause pour détendre l'atmosphère :cool:
En tant que breton aussi tu ne me diras pas le contraire ^^

Tes formules étaient les bienvenues mais les miennes marchaient déjà bien à l'initiale (même si reconnaissons le, les tiennes sont plus belles ^^).

Oui tu m'as bien aidé, mais je crois que sans un ultime coup de pouce mes yeux vont restés cristalisés devant ce code mon cher Staple 😅
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec