VBA - Ubound

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 Sub

Est-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
Rechercher des sujets similaires à "vba ubound"