XL 2013 Insertion d'une colonne + Formule en fonction d'une colonne nommee

Calypso019

XLDnaute Nouveau
upload_2019-1-10_17-12-56.png Bonjour a tous,

Clavier US donc je m'excuse par avance pour l'orthographe (pas d'accent)

Je vous explique mon probleme
Je souhaite inserer une colonne a la suite de la colonne nommee "Employee Type" et y inserer une formule.
Ci-dessous le code VBA y resultant:

upload_2019-1-10_17-12-56.png

Pour pouvoir l'utiliser sur plusieurs fichiers, comment puis-je faire reference a la colonne nommee "Employee Type"? Le nom de la colonne ne changera pas mais la position de la colonne oui

Pareil pour les cellules, j'aimerais faire appel a la position de la cellule et pas a Range(F1), Range(F2) et Range(F2:F3)

J'ai joint le fichier test pour que ce soit plus parlant.

Merci par avance pour votre aide.
 

Pièces jointes

  • Test1_Macro.xlsm
    14.9 KB · Affichages: 17

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Calypso019,

Voir le code ci-dessous :
VB:
Sub Cleaning()
Dim j&, n&
  For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    If Cells(1, j) = "Employee Type" Then Exit For
  Next j
  If j <= Cells(1, Columns.Count).End(xlToLeft).Column Then
    j = j + 1
    Columns(j).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Cells(1, j) = "Employee Type bis"
    Cells(2, j).FormulaR1C1 = _
    "=IF(OR(RC[-1]=""Regular"",RC[1]=""IA"",AND(RC[-1]=""Fixed Term"",RC[-4]<>""Argentina"")),""FTC"",""Do not count"")"
    n = Cells(Rows.Count, "a").End(xlUp).Row
    If n > 2 Then Cells(2, j).AutoFill Destination:=Cells(2, j).Resize(n - 1), Type:=xlFillDefault
  End If
End Sub

nota: j'ai considéré que la ligne 1 contenait toujours les en-têtes du tableau. Si ce n'est pas le cas, il faudra modifier le code...
 
Dernière édition:

Calypso019

XLDnaute Nouveau
Merci @mapomme, le code fonctionne comme il faut !

Est-il possible dans la formule le RC[-4] par le nom d'une colonne egalement ? Car la colonne en question ne sera pas toujours en position -4 par rapport a la cellule ou se situe la formule.
Cells(2, j).FormulaR1C1 = _
"=IF(OR(RC[-1]=""Regular"",RC[1]=""IA"",AND(RC[-1]=""Fixed Term"",RC[-4]<>""Argentina"")),""FTC"",""Do not count"")"
 

Discussions similaires

Statistiques des forums

Discussions
311 705
Messages
2 081 721
Membres
101 803
dernier inscrit
astyx26