XL 2013 remplissage automatique cellule macro

Evan_

XLDnaute Nouveau
Bonjour,

Je souhaiterais, sur le fichier joint, que lorsque je saisie des données dans une cellule en colonne C, les colonnes en K et L se remplissent automatiquement. C'est déjà le cas pour les colonnes D et J (il y a une macro), mais impossible de le faire pour les colonnes K et L et je ne sais pas pourquoi.

J'imagine que c'est basique, mais je ne trouve pas...

Si quelqu'un a une solution ça serait top!

Merci d'avance!
 

Pièces jointes

  • pb_excel.xlsm
    23.9 KB · Affichages: 7

Dudu2

XLDnaute Barbatruc
Bonjour,
Ta macro ne prévoit que de valoriser les colonnes D et J.
Excel ne peut pas deviner 1) quelles autres colonnes valoriser 2) avec quelles valeurs
Ni les lecteurs de ta question !
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub
    If Target = "" Or Target.Offset(0, 1) > 0 Then Exit Sub
    COLONNE D => Target.Offset(0, 1) = Date
    Dim x As Long
    x = Target.Row
    COLONNE J => Target.Offset(0, 7) = Evaluate("=IF(MONTH(D" & x & ")=MONTH(D" & x - 1 & "),J" & x - 1 & "+1,1)")
End Sub
Si tu veux reproduite les formules en K et L il vaudrait mieux le dire.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Evan, bonjour le forum,

Le code événementiel Change n'agit que sur la colonne C (et pas D). Il faudrait le modifier mais : lorsque je saisie des données dans une cellule en colonne C, les colonnes en K et L se remplissent automatiquement est bien trop vague pour qu'on puisse de proposer quelque chose...
 

Dudu2

XLDnaute Barbatruc
A tout hasard, au cas où ce serait ce que tu veux faire... 2 options.
Le tout formule:
VB:
Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Long

    If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub
    If Target.Value = "" Or Target.Offset(0, 1).Value > 0 Then Exit Sub

    x = Target.Row

    'Colonne D
    Target.Offset(0, 1).Value = Date
    'Colonne J
    Target.Offset(0, 7).FormulaLocal = "=SI(D" & x & ">0;SI(ET(ANNEE(D" & x & ")=ANNEE(D" & x - 1 & ");" & _
                                            "MOIS(D" & x & ")=MOIS(D" & x - 1 & "));J" & x - 1 & "+1;1);"""")"
    'Colonne K
    Target.Offset(0, 8).FormulaLocal = "=CONCATENER(STXT(B" & x & ";1;2);ANNEE(D" & x & ");(MOIS(D" & x & "))&TEXTE(J" & x & ";""000""))"
    'Colonne L
    Target.Offset(0, 9).FormulaLocal = "=SI(NBCAR(K" & x & ")<10; ""Erreur""; K" & x & ")"
End Sub

Le tout valeur:

VB:
Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Long

    If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub
    If Target.Value = "" Or Target.Offset(0, 1).Value > 0 Then Exit Sub

    x = Target.Row

    'Colonne D
    Target.Offset(0, 1).Value = Date
    'Colonne J
    Target.Offset(0, 7).Value = Evaluate("=IF(MONTH(D" & x & ")=MONTH(D" & x - 1 & "),J" & x - 1 & "+1,1)")
    'Colonne K
    Target.Offset(0, 8).Value = Evaluate("=CONCATENATE(MID(B" & x & ",1,2),YEAR(D" & x & "),(MONTH(D" & x & "))&TEXT(J" & x & ",""000""))")
    'Colonne L
    Target.Offset(0, 9).Value = "=IF(LEN(K" & x & ")<10, ""Erreur"", K" & x & ")"
End Sub
 
Dernière édition:

laurent3372

XLDnaute Impliqué
Supporter XLD
Ou pour simplifier:
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub
If Target = "" Or Target.Offset(0, 1) > 0 Then Exit Sub
Target.Offset(0, 1) = Int(Date)         'Date du jour, heure = 0
End Sub
Et des formules dans les colonnes dépendantes:
En J: =SI(D4>0;SI(ET(ANNEE(D4)=ANNEE(D3);MOIS(D4)=MOIS(D3));J3+1;1);"")
En K: =SI(D4>0;CONCATENER(STXT(B4;1;2);ANNEE(D4);(MOIS(D4))&TEXTE(J4;"000"));"")
La colonne L n'a plus lieu d'être.
 

Pièces jointes

  • pb_excel (1).xlsm
    39.9 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 712
Membres
103 930
dernier inscrit
Jibo