Multiplication plage variable (ligne colonne) : Qté * CU

Bonjour,

Je cherche à faire une macro avec une formule de multiplication, vous me direz c'est facile

mais c'est un peu plus compliqué, en tout cas pour moi car la plage est variable.

j'ai :

un tableau 1 avec différents services en ligne et en colonne, des produits avec à l'intérieur des quantités ;

un tableau 2 avec les coûts unitaires qui peut varier en fonction des services et des produits ;

et un tableau 3 où je souhaiterais que ça fasse une multiplication via une macro.

le souci c'est que le nombre de service est variable mais sera toujours identique sur les 3 tableaux.

Je souhaiterais un macro qui fasse la multiplication :

pour le service A = Qté 1 * CU 1 dans la 2è colonne, puis Qté 2 * CU 2 dans la 3è et ainsi de suite, et pour le service B ...

et encore une complication, j'ai dans l'exemple qui 3 produits mais il peut y en avoir plus dans les autres colonnes

mais aussi d'autres services.

Je pense qu'il faut mettre une boucle à la fois en ligne mais aussi en colonne mais je ne sais pas comment faire.

Pourriez-vous m'aider ?

J'ai peut-être mal expliqué, n'hésitez pas

Merci.

Jérôme

37classeur1.xlsm (10.31 Ko)

Bonjour,

une proposition

Sub aaargh()
    Set t1 = Range("A:A").Find("Tableau 1")
    Set t2 = Range("A:A").Find("Tableau 2")
    Set t3 = Range("A:A").Find("Tableau 3")
    nc = Cells(t1.Row + 1, Columns.Count).End(xlToLeft).Column - 1 'nombre de colonnes
    nl = t2.Row - t1.Row - 3 'nombre de lignes
    t3.Offset(2, 1).Resize(nl, nc).Formula = "=B" & t1.Row + 2 & "*B" & t2.Row + 2
End Sub

Merci beaucoup, ça fonctionne.

Dernière petite question, quand je lance la macro, la formule se met quand même à la dernière ligne où il n'y a pas de libellé Service,

Y-a-t-il moyen qu'elle s'arrête au dernier service "inclus" ?

40classeur1.xlsm (15.97 Ko)

re-bonjour,

voici

Option Explicit

Sub test()
    Dim t1 As Range, t2 As Range, t3 As Range, nc As Long, nl As Long
    Set t1 = Range("A:A").Find("Tableau 1")
    Set t2 = Range("A:A").Find("Tableau 2")
    Set t3 = Range("A:A").Find("Tableau 3")
    nc = Cells(t1.Row + 1, Columns.Count).End(xlToLeft).Column - 1    'nombre de colonnes
    nl = t1.End(xlDown).Row - 1 - t1.Row    'nombre de lignes
    t3.Offset(2, 1).Resize(nl, nc).Formula = "=B" & t1.Row + 2 & "*B" & t2.Row + 2
End Sub

Merci beaucoup !

Rechercher des sujets similaires à "multiplication plage variable ligne colonne qte"