Macro a améliorer

Bonjour cette macro a pour but de de rechercher une spécialité dans la colonne : A

Une fois cette spécialité trouver elle devras faire la sommes des colonnes a partir de la colonne G (à l'infini pas de limite).

Nombre de Spécialité : AVI , CAB, MEC et CEL

J'ai écris cet algorithme(il marche mes a ses limites) il n'ai pas efficace car il ne fait pas mes sommes de colonnes a l'infini

Si quelqu'un serait comment réecrire ce programme de facon plus éfficace MERCI D'avance

Sub somme()
Range("G181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("G:G"))
Range("H181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("H:H"))
Range("I181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("I:I"))
Range("J181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("J:J"))
Range("K181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("K:K"))
Range("L181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("L:L"))
Range("M181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("M:M"))
Range("N181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("N:N"))
Range("O181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("O:O"))
Range("P181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("P:P"))
Range("Q181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("Q:Q"))
Range("R181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("R:R"))
Range("S181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("S:S"))
Range("T181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("T:T"))
Range("U181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("U:U"))
Range("V181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("V:V"))
Range("W181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("W:W"))
Range("X181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("X:X"))
Range("Y181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("Y:Y"))
Range("Z181") = WorksheetFunction.SumIf(Range("A:A"), "AVI", Range("Z:Z"))

Range("G182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("G:G"))
Range("H182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("H:H"))
Range("I182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("I:I"))
Range("J182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("J:J"))
Range("K182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("K:K"))
Range("L182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("L:L"))
Range("M182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("M:M"))
Range("N182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("N:N"))
Range("O182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("O:O"))
Range("P182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("P:P"))
Range("Q182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("Q:Q"))
Range("R182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("R:R"))
Range("S182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("S:S"))
Range("T182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("T:T"))
Range("U182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("U:U"))
Range("V182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("V:V"))
Range("W182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("W:W"))
Range("X182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("X:X"))
Range("Y182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("Y:Y"))
Range("Z182") = WorksheetFunction.SumIf(Range("A:A"), "CAB", Range("Z:Z"))

Range("G183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("G:G"))
Range("H183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("H:H"))
Range("I183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("I:I"))
Range("J183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("J:J"))
Range("K183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("K:K"))
Range("L183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("L:L"))
Range("M183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("M:M"))
Range("N183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("N:N"))
Range("O183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("O:O"))
Range("P183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("P:P"))
Range("Q183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("Q:Q"))
Range("R183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("R:R"))
Range("S183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("S:S"))
Range("T183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("T:T"))
Range("U183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("U:U"))
Range("V183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("V:V"))
Range("W183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("W:W"))
Range("X183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("X:X"))
Range("Y183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("Y:Y"))
Range("Z183") = WorksheetFunction.SumIf(Range("A:A"), "CEL", Range("Z:Z"))

Range("G186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("G:G"))
Range("H186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("H:H"))
Range("I186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("I:I"))
Range("J186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("J:J"))
Range("K186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("K:K"))
Range("L186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("L:L"))
Range("M186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("M:M"))
Range("N186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("N:N"))
Range("O186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("O:O"))
Range("P186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("P:P"))
Range("Q186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("Q:Q"))
Range("R186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("R:R"))
Range("S186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("S:S"))
Range("T186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("T:T"))
Range("U186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("U:U"))
Range("V186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("V:V"))
Range("W186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("W:W"))
Range("X186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("X:X"))
Range("Y186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("Y:Y"))
Range("Z186") = WorksheetFunction.SumIf(Range("A:A"), "MEC", Range("Z:Z"))

End Sub

Merci d'avance.

bonjour,

as-tu essayé d'utiliser un TCD pour obtenir tes résultats ?

Bonjour merci pour votre réponse.
Le soucis c’est que les valeurs actuellement récupérées sont à destination d’un autre classeur. De plus le fichier dans lequel je doit récupérer ses sommes n’est pas fixe (c’est une extract d’un logiciel hebdomadaire) donc les valeurs des sommes change toutes les semaines également.le but final étant de récupérer les sommes de chaque semaines jusqu’à la fin de l’année pour faire une mise à jours automatiquement dans un autre classeur. Du coup je pense que un tcd est plus adapté à un fichier fixe ?
merci d’avance pour votre réponse.

Bonjour 180299 et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment

Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)

Merci de mettre le code donné entre balises avec le bouton

image

Sinon un conseil, quand vous avez un nombre conséquent de lignes qui se répètent, penser à faire une boucle For... Next

Merci de votre participation

Cordialement

Bonjour riri, Salut h2so4 et Bruno !

Voici pour l'exercice un essai avec les résultats les uns à la suite des autres :

Sub somme()
tCrit = array("AVI", "CAB", "CEL", "MEC")
application.calculation = xlcalculationmanual
for i = lbound(tCrit) to ubound(tCrit)
    for k = 7 to 26
        cells(181 + i, k) = WorksheetFunction.SumIf(columns(1), tCrit(i), columns(k)) '181 : valeur fixe à rendre variable
    next k
next i
application.calculation = xlcalculationautomatic
End Sub

Mais j'avoue avoir du mal à comprendre l'intérêt de cette macro sachant qu'un tableau structuré et de simples formules ou un TCD suffiraient.

Cdlt,

Merci pour votre réponse. Cela m'a bien aidé.

Rechercher des sujets similaires à "macro ameliorer"