Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion duplaly
  • 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 !

duplaly

XLDnaute Occasionnel
Bonjour
j'ai besoin d'aide car je ne sais pas comment écrire le code vba:
dans le Private Sub Worksheet_Change(ByVal Target As Range)

j'aimerais quand je rentre une date dans la colonne 1 ou A, le no de semaine s'affiche automatique en colonne 2 ou B.

Est ce que quelqu'un peut m'aider.
Merci à l'avance.
 
Re : No semaine

Bonsour®
Bonjour,

un essai...Cdlt

sixair

🙄
Attention ta procédure événementielle modifie le contenu de la cellule selectionnée.
i.e transforme le contenu en constante !!!

1 - la saisie d'une formule se transforme en valeur ...
ce qui peut etre dommageable pour les calcul dépendants

2 - si effectivement la cellule doit contenir une formule : le n° de semaine dépendant ne sera plus recalculé
tant qu'il n'y aura pas nouvelle intervention sur cette cellule...

plutot simplement saisir une formule en B2
exemple ISO[1900-2100]:
=ENT(MOD(ENT((A2-2)/7)+3/5;52+5/28))+1
 
Re : No semaine

Bonjour à tous,
effectivement, on peut insérer la formule en remplaçant par:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
If IsDate(Target) Then
Cells(Target.Row, 2).FormulaR1C1 = "=INT(MOD(INT((RC[-1]-2)/7)+3/5,52+5/28))+1"
End If
End Sub

La solution "sans macro" est plus simple mais demande a étirer la formule pour chaque ajout...
Je me suis basé sur l'automatisme:
"j'aimerais quand je rentre une date dans la colonne 1 ou A, le no de semaine s'affiche automatique en colonne 2 ou B"

A savoir ce que préfère duplaly...
Cdlt
 
Re : No semaine

Bonjour à tous

Cette macro pourrait faire l'affaire (attention à metre dans la feuille donc plus de risque de problèmes), il faudrait prévoir une désactivation sur une variable 0/1 avec un Exit Sub en début:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Entre numéro de semaine à droite de la cellule après validation vers le bas
If ActiveCell.Offset(-1, 1) = "" Then ActiveCell.Offset(-1, 1).Value = Val(Format(ActiveCell.Offset(-1, 0).Value2, "ww", vbMonday, vbFirstFourDays))
End Sub
 
Re : No semaine

Re à tous, Bonjour Modeste geedee, Bonjour MJ13 🙂
@ sixair
La version sans macro s'appuie sur un tableau de feuille (Liste sous 2003).
Il suffit de remplir la colonne A pour que la formule de la colonne B soit propagée.
Utilise l'exemple comme suit : clic en A13, une étoile apparait en A14, tu mets une date en A14, la semaine apparait en B14... ...c'est magique 😀

J'en profite pour signaler qu'il n'y a qu'une différence entre la formule que j'enploie et celle de Modeste geedee même si le principe est le même 🙄

Cordialement
 
Re : No semaine

Bonsour®
Re à tous, Bonjour Modeste geedee, Bonjour MJ13 🙂
La version sans macro s'appuie sur un tableau de feuille (Liste sous 2003).
Il suffit de remplir la colonne A pour que la formule de la colonne B soit propagée.
...c'est magique 😀
🙄 en effet , que n'a-t-on pas implanté cette fonctionnalité avant EXCEL 2007 ???
puisqu'elle était déjà fonctionnelle dans les grilles ou formulaire de saisie... !!!
J'en profite pour signaler qu'il n'y a qu'une différence entre la formule que j'enploie et celle de Modeste geedee même si le principe est le même 🙄

🙄 a-propos de différence :
=ENT(MOD(ENT((A2-2)/7)+3/5;52+5/28))+1 ' norme ISO lundi 1er jour de la semaine
=ENT(MOD(ENT((A2-1)/7)+3/5;52+5/28))+1 ' norme ??anglosaxonne ?? dimanche 1er jour de la semaine

consulter la malicieuse remarque de Roger2327 :
https://www.excel-downloads.com/threads/formule-numero-de-semaine-premier-jour-de-la-semaine.124051/

d'aucun ne manqueront pas de signaler que cette formule n'est plus valide aprés 2100...😉
mais à l'instar des politiques : aprés moi (double(espérance de..)vie) le déluge ...😀
 
Re : No semaine

Re à Tous
@ Modestegeedee
Je pensai que tu comprendrais que
qu'il n'y a qu'une différence entre la formule que j'enploie et celle de Modeste geedee
faisait justement allusion à
=ENT(MOD(ENT((A2-2)/7)+3/5;52+5/28))+1 ' norme ISO lundi 1er jour de la semaine
=ENT(MOD(ENT((A2-1)/7)+3/5;52+5/28))+1 ' norme ??anglosaxonne ?? dimanche 1er jour de la semaine

Cordialement
 
Re : No semaine

Voici la solution que j'ai travaillée et qui fonctionne selon mes besoins. le No de semaine s'affiche à la colonne J
Merci
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If IsDate(Target) Then
Cells(Target.Row, 10).FormulaR1C1 = "=INT(MOD(INT((RC[-9]-1)/7)+3/5,52+5/28))+1"
Else
Target.Offset(0, 9) = ""
End If
End If
End Sub
 
Re : No semaine

Bonsour®
note toutefois les remarques de Efgé et moi-même concernant la formule utilisée (ISO ou non)
 
- 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

  • Question Question
Réponses
11
Affichages
422
Réponses
9
Affichages
508
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…