Remplir une cellule automatiquement

Résolu
Xuli Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Xuli Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai un fichier excel dans lequel je remplis chaque jour de nouvelles info avec la date correspondante dans la colonne B. J'ai également 3 colonnes en C, D et E : année, mois, numéro de semaine, correspondant à cette date.

J'aimerais qu'en remplissant la date manuellement dans la colonne B, les 3 colonnes C, D et E se remplissent automatiquement. Je connais déjà les formules =ANNEE(C2) etc, mais la je cherche vraiment à automatiser ce fichier :)

Est-ce que c'est possible ?

Merci d'avance pour votre aide !

4 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

en vba:
Private Sub Worksheet_Change(ByVal Target As Range)  
    If Target.Column <> 1 Or Target.Row = 1 Then Exit Sub  
    Target.Offset(0, 1) = Year(Target)  
    Target.Offset(0, 2) = Month(Target)  
    Target.Offset(0, 3) = DatePart("ww", Target, vbMonday, vbFirstFourDays)  
End Sub 

Fichier exemple : https://www.cjoint.com/?BJcsgcXEqtI
Clic-droit sur le nom d'onglet et 'visualiser le code...' pour y accéder.

Attention, je ne modifie pas l'année pour le 01/01/2012 par exemple.
La date est bien en 2012, mais c'est semaine 52... de 2011.
Précise si tu préfères.

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
2
Yakuru Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   24
 
Salut,

Si j'ai bien compris, tu veux qu'en rentrant la date en cellule B, les cellules C, D et E se remplisse automatiquement ?

Comme tu connais déjà les fonctions ANNEE, MOIS et JOUR, pourquoi ne les utilises-tu pas ? Il te suffit de le faire pour la première ligne de ton classeur Excel, puis d'étirer la formule jusqu'à ta dernière ligne.
0
Xuli Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse,

Ce fichier se remplit tous les jours, je peux effectivement étirer les formules chaque jour, mais je me demandais s'il existait une formule qui remplisse la cellule automatiquement, sans avoir besoin de rien faire :)
0
Yakuru Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   24
 
Si tu étires sur ton fichier les cellules sur plusieurs dizaines (ou centaines) de lignes, c'est gênant pour toi ? Comme ça, tes formules sont déjà prêtes pour les futurs jours.
Je ne connais pas de formule permettant de faire ça automatiquement, ou alors via macro écrite en VBA, mais de même, il faudra que tu l'exécutes chaque jour.
0
Xuli Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense que je vais faire ça comme ça alors s'il n'y a pas d'autre possibilité, ça ira quand même :)

Merci !
0
Xuli Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup c'est exactement ça !

Est-ce que vous pouvez me préciser, si je viens à modifier mes colonnes, comment modifier ce code : exemple : Année, mois, semaine en A, B, C et date de publication en colonne I > la colonne de référence est déplacée.

Je suis en pleine refonte de ce fichier et je pense qu'à l'avenir il sera présenté comme ça,

Merci encore pour votre réponse
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

La cellule modifiée est appelée Target dans l'évènement change.

If Target.Column <> 1 si la colonne est différente de 1 (A) on sort
Target.Offset(0, 1) cellule à un offset de : 0 ligne et 1 colonne à droite de target.
L'offset peut-être négatif => colonnes à gauche

Si A devient I et B devient A :
If Target.Column <> 9 .... exit sub
Target.Offset(0, -8) = Year(Target)

eric
0
Xuli Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, votre réponse m'a vraiment aidé ! :-)
0