Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule auto en vba sous condition de saisie

  • Initiateur de la discussion Initiateur de la discussion BAT
  • 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 !

BAT

XLDnaute Occasionnel
Bonjour à tous le forum,

Pourriez m'aider à trouver le bout de macro qui me manque pour compléter mon code actuel.

POur ne pas alourdir une base de données Excel d'une formule lourde je souhaite qu'une macro s'excécute automatiquement à la saisie d'une date dans une cellule.

Plus précisément, dès que je saisie une date dans une ligne de la colone Z (ex en case Z5), la macro doit réaliser le calcul évoqué ci dessous en colonne AC (en case AC5 pour continuer l'exemple) :

Code:
     ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-1]<>0,RC[-1]<RC[-16]),""Date incohérente"",IF((OR(RC[-1]="""",RC[-1]=0)),(CONCATENATE(""A FAIRE DEPUIS "",(NB.JOURS.OUVRES(RC[-16],TODAY(),10)-1),"" j"")),(NB.JOURS.OUVRES(RC[-16],RC[-1],10)-1)))"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

Voilà ! Merci à tous pour votre aide dans ce cas !

Bat
 
Re : Formule auto en vba sous condition de saisie

Bonjour,

peut-être en insérant ce code dans l'évènement de la feuille (clic droit sur le nom de l'onglet, "Visualiser le code") :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Row > 1 And Target.Column = 26 And IsDate(Target) Then
    With Target.Offset(0, 3)
        .FormulaR1C1 = _
            "=IF(AND(RC[-1]<>0,RC[-1]<RC[-16]),""Date incohérente"",IF((OR(RC[-1]="""",RC[-1]=0)),(CONCATENATE(""A FAIRE DEPUIS "",(NB.JOURS.OUVRES(RC[-16],TODAY(),10)-1),"" j"")),(NB.JOURS.OUVRES(RC[-16],RC[-1],10)-1)))"
        .Value = .Value
    End With
End If
End Sub
 
- 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
13
Affichages
2 K
N
Réponses
5
Affichages
3 K
Nicocotte125
N
G
  • Question Question
Réponses
3
Affichages
2 K
D
Réponses
22
Affichages
3 K
C
Réponses
23
Affichages
4 K
Charles78
C
C
Réponses
5
Affichages
2 K
Charles78
C
C
Réponses
6
Affichages
3 K
M
  • Question Question
Réponses
0
Affichages
1 K
Mirguy23
M
P
Réponses
2
Affichages
3 K
pauline6172
P
A
Réponses
11
Affichages
2 K
Anamiya
A
Réponses
22
Affichages
5 K
N
  • Question Question
Réponses
5
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…