Nommer les colonnes avec VBA

Bonjour à tous,

Je crée ce sujet pour discuter d'un fichier Excel que j'utilise pour automatiser le calcul du chiffre d'affaires pour une entreprise. Actuellement, mon code fonctionne correctement et répond à mes besoins en termes de calculs.

Cependant, en voulant ajouter des colonnes pour inclure davantage de variables, je me suis rendu compte que je devais ajuster mon code et le réécrire pour chaque dossier. Existe-t-il une solution pour contourner ce problème lorsque j'ajoute des colonnes au milieu et être certain que le code va sélectionner la bonne ligne et la bonne colonne pour mes calculs ?

Ci-dessous, vous trouverez une partie de mon code VBA.

Merci d'avance.

Sub calcul_916()
    Dim lastRow As Long
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("DATA_916")
    ws.Activate

    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).row

    If lastRow < 8 Then Exit Sub

    ws.Range("W8:W" & lastRow).Value = ws.Range("D8:D" & lastRow).Value

    ws.Range("X8:X" & lastRow).Formula = "=VLOOKUP(C8, PARAMETRES!$L$8:$O$16, 2, FALSE)"

    ws.Range("Y8:Y" & lastRow).Formula = "=VLOOKUP(C8, PARAMETRES!$L$8:$O$16, 4, FALSE)"

    ws.Range("Z8:Z" & lastRow).Formula = "=IF(Y8<>" & ws.Cells(4, "Y").Address & ", 0, 1)"

    ws.Range("AA8:AA" & lastRow).Formula = "=IF(Y8<>" & ws.Cells(4, "Y").Address & ", 0, 1/COUNTIF($B$8:$B$" & lastRow & ", B8))"

    ws.Range("W8").Select
    ws.Range(Selection, Selection.End(xlToRight)).Select
    ws.Range(Selection, Selection.End(xlDown)).Select
    ws.Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    ws.Range("A8:O8").Select
    ws.Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents

    Call filtrer_916

End Sub

Bonjour,

La conversion de votre tableau de données en tableau structuré (TS) devrait résoudre votre problème car au lieu d'utiliser des adresses de colonne vous pourriez utiliser le nom des colonnes y compris dans les formules si vous avez une version d'Excel supérieure (je crois) à 2010. Sur le site, il y a plein d'infos sur les tableaux structurés, entre autres https://www.excel-pratique.com/fr/astuces/tableau-structure

Je vous conseillerai aussi pour les données "PARAMETRES!$L$8:$O$16" d'utiliser un tableau structuré (dans ce cas vous utilisez directement le nom du tableau) soit à minima de nommer la plage. Dans les 2 cas, cela vous éviterait une modification du code si ces données évolues.

Cdlt,

Cylfo

Rechercher des sujets similaires à "nommer colonnes vba"