jay822519 Ce que l\ | Bonjour,
J'utilise une macro Excel pour copier une formule dans une colonne.
Exemple qui fonctionne J'ai des dates dans la colonne A (01/02/2020) et je veux avoir l'année dans la colonne D
Si je remplace
ActiveCell.FormulaR1C1 = "=YEAR(RC[-3])"
par une formule plus complexe
ActiveCell.FormulaR1C1 = "=SI(ESTNUM(CHERCHE(""exp"",RC[-1])),""expert"",(SI(ESTNUM(CHERCHE(""deb"",RC[-1])),""débutant"",(SI(ESTNUM(CHERCHE(""form"",RC[-1])),""formation"",)))))"
Le résultat affiché est "#NOM?" Si j'édite la cellule C2 (F2 + Entrée sans modifier la formule), le résultat apparait : "débutant" dans cet exemple
La 2ème formule est donc bonne ;
Pourquoi ai-je ce problème d'affichage du résultat ? Merci
Jay
Les données : date nom
01/02/2020 1_deb_A
02/02/2020 2_deb_B
03/02/2020 3_exp_A
04/02/2019 4_exp_B
05/02/2020 5_exp_C
06/02/2018 6_form_A
07/02/2020 7_form_B
08/02/2020 8_form_C
09/02/2019 9_form_D
10/02/2020 10_exp_A
11/02/2019 11_deb_A |
La macro : Code :
- '' Macro1 Macro
- '
- ' ajout année en colonne L de l'onglet Racco clients
- Sheets("Racco" ).Select
- Columns("C:C" ).Select
- Selection.ClearContents
- Columns("D:D" ).Select
- Selection.ClearContents
-
- ' Calculniveau KO
- Range("C1" ).Select
- ActiveCell.FormulaR1C1 = "niveau"
- Range("C2" ).Select
- ActiveCell.FormulaR1C1 = "=SI(ESTNUM(CHERCHE(""exp"",RC[-1])),""expert"",(SI(ESTNUM(CHERCHE(""deb"",RC[-1])),""débutant"",(SI(ESTNUM(CHERCHE(""form"",RC[-1])),""formation"",)))))"
- Range("C2" ).Select
- With Selection
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlBottom
- .WrapText = False
- .Orientation = 0
- .AddIndent = False
- .IndentLevel = 0
- .ShrinkToFit = False
- .ReadingOrder = xlContext
- .MergeCells = False
- End With
-
- 'recopie jusquè à la derniere ligne non vide
-
- premiere = Range("C" & Rows.Count).End(xlUp).Row
- dernière = Range("A" & Rows.Count).End(xlUp).Row
- Range("C" & premiere & ":C" & dernière).FillDown
-
- ' copie année OK
- Range("D1" ).Select
- ActiveCell.FormulaR1C1 = "Année"
- Range("D2" ).Select
- ActiveCell.FormulaR1C1 = "=YEAR(RC[-3])"
- Range("D2" ).Select
- With Selection
- .HorizontalAlignment = xlCenter
- .VerticalAlignment = xlBottom
- .WrapText = False
- .Orientation = 0
- .AddIndent = False
- .IndentLevel = 0
- .ShrinkToFit = False
- .ReadingOrder = xlContext
- .MergeCells = False
- End With
-
- 'recopie jusquè à la derniere ligne non vide
-
- premiere = Range("D" & Rows.Count).End(xlUp).Row
- dernière = Range("A" & Rows.Count).End(xlUp).Row
- Range("D" & premiere & ":D" & dernière).FillDown
- End Sub
|
Le résultat obtenu : date nom niveau Année
01/02/2020 1_deb_A #NOM? 2020
02/02/2020 2_deb_B #NOM? 2020
03/02/2020 3_exp_A #NOM? 2020
04/02/2019 4_exp_B #NOM? 2019
05/02/2020 5_exp_C #NOM? 2020
06/02/2018 6_form_A #NOM? 2018
07/02/2020 7_form_B #NOM? 2020
08/02/2020 8_form_C #NOM? 2020
09/02/2019 9_form_D #NOM? 2019
10/02/2020 10_exp_A #NOM? 2020
11/02/2019 11_deb_A #NOM? 2019 |
Le résultat attendu :
date nom niveau Année
01/02/2020 1_deb_A débutant 2020
02/02/2020 2_deb_B débutant 2020
03/02/2020 3_exp_A expert 2020
04/02/2019 4_exp_B expert 2019
05/02/2020 5_exp_C expert 2020
06/02/2018 6_form_A formation 2018
07/02/2020 7_form_B formation 2020
08/02/2020 8_form_C formation 2020
09/02/2019 9_form_D formation 2019
10/02/2020 10_exp_A expert 2020
11/02/2019 11_deb_A débutant 2019 |
|