Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
942 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2353100
jay822519
Ce que l\
Posté le 02-05-2020 à 18:53:27  profilanswer
 

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


 

mood
Publicité
Posté le 02-05-2020 à 18:53:27  profilanswer
 

n°2353103
MaybeEijOr​Not
but someone at least
Posté le 02-05-2020 à 19:25:03  profilanswer
 

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.
n°2353111
jay822519
Ce que l\
Posté le 02-05-2020 à 22:07:25  profilanswer
 

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:  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
erreur à la copie[MySQL] Ajouter un nombre à une colonne null
CSS - Retour en haut de colonneMacro copie vers un autre fichier
Script Copie de fichier avec exclusion de certain fichiermessage d'alerte après un tri sur la colonne
Afficher des valeurs d'une colonne à l'autre selon conditionEcrire une variable tableau sur une feuille avec colonne masquéees
Editeur de formule ExcelVBA - Prendre en compte les retours de formule
Plus de sujets relatifs à : Copie d'une formule sur une colonne => #NOM?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR