Somme de colonne de l'en-tête

Bonjour à tous,

A partir d'une base de donnée où l'ordre des colonnes changent constamment, je souhaite faire l'équivalent de somme.si ou de somme.si.ens sans préciser quelle colonne sommée mais en lui donnant le nom de l'en-tête.

Impossible malgré mes essais.

Voici un exemple en fichier joint

Je souhaite qu'en H2, il y ait la somme des poids des fruits bleus provenant d’Espagne (sans indiqué que la colonne poids est la colonne C, ce que j'ai actuellement fait).

Merci d'avance

13exemple-fruit.xlsx (8.61 Ko)

Bonjour,

Il te suffit de nommer tes colonnes comme dans mon exemple.

Le fait de rajouter ou déplacer les colonnes te donnera toujours le bon résultat

20exemple-fruit.xlsx (14.60 Ko)

Merci de ta réponse rapide, mais, comment nommer une colonne ?

et si je souhaite que mon tableau soit dans un autre onglet ? Je n'arrive pas à reproduire ta formule sur mon fichier

Re,

Place un classeur exemple concret

J'ai mis un autre onglet dans le nouvel exemple.

De plus, je reçois ma base en csv assez souvent, dans ton exemple, je dois renommer les colonne une par une ? Car j'en ai 170... Si je peux me l'éviter, ça serait super

Re,

OK, je vais te regarder cela.

Re,

Je pense que le fait d'utiliser un TCD est bien plus pratique et rapide

Merci mais cela signifie que je dois refaire les TCD à chaque mise à jour de la base ?

Re,

A tester

Bonjour,

J'avais fais une macro qui copie colle la colonne en fonction de l'en-tête de la colonne si jamais cela peut t'aider.

Sub Copier_TPS()
Dim nbcol_CalcTPS As Long
Dim nbcol_Erp As Long
Dim nb_lignes As Long
Dim nom As String
Dim i As Long
Dim j As Long
Dim col As String
Sheets("CalcTPS").Cells.Clear
Sheets("Ordre_data").Activate
Sheets("Ordre_data").Rows("7:7").Copy
Sheets("CalcTPS").Activate
Sheets("CalcTPS").Rows("1:1").PasteSpecial Paste:=xlPasteValues
Sheets("ErpTPS").Activate
nbcol_Erp = ActiveSheet.UsedRange.Columns.Count
Sheets("CalcTPS").Activate
nbcol_CalcTPS = ActiveSheet.UsedRange.Columns.Count

Sheets("CalcTPS").Activate
For i = 1 To nbcol_CalcTPS
        nom = Sheets("CalcTPS").Cells(1, i)
        For j = 1 To nbcol_Erp
        Sheets("ErpTPS").Activate
            If Sheets("ErpTPS").Cells(1, j) = nom Then
            Sheets("ErpTPS").Columns(j).Copy
            Sheets("CalcTPS").Activate
            Sheets("CalcTPS").Columns(i).PasteSpecial Paste:=xlPasteValues
            Exit For
            Else
            End If
        Next j
        Next i
End Sub

En gros je fais une boucle sur la ligne qui contient les bons en-têtes et dans le bon ordre et je colle la colonne des que je le retrouve sur mon autre feuille. (Il y a beaucoup de "Activate" tu peux les supprimer c'était mes débuts en VBA)

Cdt

Merci je vais regarder ça.

Rechercher des sujets similaires à "somme colonne tete"