Copie d'une formule sur une colonne => #NOM?

Copie d'une formule sur une colonne => #NOM? - VB/VBA/VBS - Programmation

Marsh Posté le 02-05-2020 à 18:53:27    

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?"  :fou:  
 
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 ?  :pt1cable:  
 
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 :
  1. '' Macro1 Macro
  2. '
  3. ' ajout année en colonne L de l'onglet Racco clients
  4.     Sheets("Racco" ).Select
  5.     Columns("C:C" ).Select
  6.     Selection.ClearContents
  7.     Columns("D:D" ).Select
  8.     Selection.ClearContents
  9.    
  10. ' Calculniveau KO
  11.     Range("C1" ).Select
  12.     ActiveCell.FormulaR1C1 = "niveau"
  13.     Range("C2" ).Select
  14.     ActiveCell.FormulaR1C1 = "=SI(ESTNUM(CHERCHE(""exp"",RC[-1])),""expert"",(SI(ESTNUM(CHERCHE(""deb"",RC[-1])),""débutant"",(SI(ESTNUM(CHERCHE(""form"",RC[-1])),""formation"",)))))"
  15.     Range("C2" ).Select
  16.     With Selection
  17.         .HorizontalAlignment = xlCenter
  18.         .VerticalAlignment = xlBottom
  19.         .WrapText = False
  20.         .Orientation = 0
  21.         .AddIndent = False
  22.         .IndentLevel = 0
  23.         .ShrinkToFit = False
  24.         .ReadingOrder = xlContext
  25.         .MergeCells = False
  26.     End With
  27.    
  28.     'recopie jusquè à la derniere ligne non vide
  29.    
  30.     premiere = Range("C" & Rows.Count).End(xlUp).Row
  31.     dernière = Range("A" & Rows.Count).End(xlUp).Row
  32.     Range("C" & premiere & ":C" & dernière).FillDown
  33.  
  34. ' copie année OK
  35.     Range("D1" ).Select
  36.     ActiveCell.FormulaR1C1 = "Année"
  37.     Range("D2" ).Select
  38.     ActiveCell.FormulaR1C1 = "=YEAR(RC[-3])"
  39.     Range("D2" ).Select
  40.     With Selection
  41.         .HorizontalAlignment = xlCenter
  42.         .VerticalAlignment = xlBottom
  43.         .WrapText = False
  44.         .Orientation = 0
  45.         .AddIndent = False
  46.         .IndentLevel = 0
  47.         .ShrinkToFit = False
  48.         .ReadingOrder = xlContext
  49.         .MergeCells = False
  50.     End With
  51.    
  52.     'recopie jusquè à la derniere ligne non vide
  53.    
  54.     premiere = Range("D" & Rows.Count).End(xlUp).Row
  55.     dernière = Range("A" & Rows.Count).End(xlUp).Row
  56.     Range("D" & premiere & ":D" & dernière).FillDown
  57. 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


 

Reply

Marsh Posté le 02-05-2020 à 18:53:27   

Reply

Marsh Posté le 02-05-2020 à 19:25:03    

Bonjour,
 
À tout hasard, le nom des fonctions dans les formules, l'un est en Anglais, les autres en Français.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 02-05-2020 à 22:07:25    

MaybeEijOrNot a écrit :

Bonjour,
 
À tout hasard, le nom des fonctions dans les formules, l'un est en Anglais, les autres en Français.


 
Merci, j'ai passé toutes mes formules en anglais et ça fonctionne !!  :bounce:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed