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.
 

Fichiers joints

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"")"
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas