VBA - Ubound
S
Hello tout le monde,
Il y a quelques temps j'ai demandé sur ce même forum, comment je pouvais utiliser Ubound/Inbound pour faire un tableau avec 2 colonnes qui multiplie ma colonne 1 par ma colonne 2. Je rajoute un excel pour mieux comprendre ! Mais j'espère être à peu près clair.
Il marche du feu de dieu d'ailleurs
Voici le code :
Private Sub Mag_Pdt()
Application.ScreenUpdating = False
Sheets("BDD").Activate
Dim pm(), prd, mag, p%, m%, i%, ii%, j%
Dim lastrow As Long
lastrow = Sheets("paramètres").Range("B4:B" & Rows.Count).End(xlDown).Row
prd = Sheets("Paramètres").Range("B3:B" & lastrow)
bu = Sheets("listes").Range("D1:D22")
p = UBound(prd) - 1: m = UBound(bu) - 1
ReDim pm(p * m, 1)
For i = 1 To p
ii = (i - 1) * m
For j = 1 To m
pm(j + ii, 0) = prd(i + 1, 1)
pm(j + ii, 1) = bu(j + 1, 1)
Next j
Next i
pm(0, 0) = prd(1, 1): pm(0, 1) = bu(1, 1)
Application.ScreenUpdating = False
With ActiveSheet.Range("A1").Resize(UBound(pm) + 1, 2)
.Value = pm
End With
End SubEst-il possible de faire la même opération mais avec 3 colonnes ?
Je vous joins un fichier pour vous montrer ce que je demande
Merci d'avance pour vos réponses et bonne soirée
Bonjour Skadowche,
Je propose ce code utilisant une méthode totalement différente de la précédente.
J'utilise des plages nommées pour Pdts/Mag/Four
Option Explicit
Sub Combinaison3()
Dim oRangePdts As Range, oRangeMag As Range, oRangeFour As Range
Dim oPdts As Range, oMag As Range, oFour As Range
Dim oResult As Range
Dim lRow As Long, lCol As Long
Set oRangePdts = ThisWorkbook.Names("Pdts").RefersToRange
Set oRangeMag = ThisWorkbook.Names("Mag").RefersToRange
Set oRangeFour = ThisWorkbook.Names("Four").RefersToRange
Set oResult = ThisWorkbook.Names("Result").RefersToRange
lRow = oResult.Row
lCol = oResult.Column
For Each oPdts In oRangePdts.Cells
For Each oMag In oRangeMag.Cells
For Each oFour In oRangeFour.Cells
ActiveSheet.Cells(lRow, lCol).Value = oPdts.Value
ActiveSheet.Cells(lRow, lCol + 1).Value = oMag.Value
ActiveSheet.Cells(lRow, lCol + 2).Value = oFour.Value
Next
Next
Next
End Sub