Ajout d'une valeur dans un tableau via VBA

Bonjour à toutes et tous !

Je reviens vers vous concernant un fichier sur lequel j'ai déjà bénéficié de l'aide. Aujourd'hui il me faudrait ajouter une dernière fonction et mes connaissances en VBA ne me permette pas de trouver la solution tout seul 😒.

Donc voilà, vous trouverez dans le fichier ci-joint dans la feuille "Listes" un tableau qui se rempli d'après les valeurs présentes dans la feuille "export". Ma seule demande c'est de rajouter les chiffres présent dans la colonne B dans la colonne "Nombre" du tableau via le bouton de commande "Export".

Puis que cette nouvelle colonne soit également prise en compte lorsque l'on appui sur le bouton de commande "Débit".

Voilà, merci d'avance pour votre aide ;)

9export-debit.xlsm (86.29 Ko)

Bonjour SOTIN,

Un essai ...

En redimensionnant le "Tablo", il faut mettre 6 pour avoir 7 colonnes

Aussi, à la fin de la macro, je fais insérer des lignes au moment de coller "Tablo" dans le tableau "tb_export" de la feuille afin qu'il soit adapté au nombre de lignes

à insérer.

Sub Converti_Export() 'Scinde le texte et les chiffres dans 2 colonnes différentes
  Dim dLig As Long, lig As Long, Ind As Long
  Dim Tablo() As Variant
  Dim tmp
  Dim i%, j%
  Dim tblData As ListObject

  Set tblData = Worksheets("Listes").ListObjects("tb_export")

  Ind = -1
  With ThisWorkbook.Sheets("export")
    dLig = .Range("A" & Rows.Count).End(xlUp).Row                 ' Regarde si du texte est présent
    If dLig = 1 Then MsgBox "Aucune donnée d'export": Exit Sub    'Si pas de texte alors message
    For lig = 1 To dLig Step 2
      Ind = Ind + 1                                               'Reviens à la ligne à chaque nouveau caisson
      ReDim Preserve Tablo(6, Ind)            ' >>>> 6 au lieu de 1 ...      'Redimentionne le tableau suivant le nombre de caisson
      Tablo(0, Ind) = .Range("A" & lig).Value                     'Colle les noms de caisson
      Tablo(1, Ind) = .Range("A" & lig + 1).Value                 'Colle les dimensions de caisson
      Tablo(6, Ind) = .Range("B" & lig + 1).Value                 'Colle le nombre de caisson >>>>> dans la bonne colonne
    Next lig
    Tablo = Application.Transpose(Tablo)
    ReDim Preserve Tablo(1 To UBound(Tablo), 1 To 7)
    For i = 1 To UBound(Tablo)
      Tablo(i, 2) = Replace(Tablo(i, 2), " ", "")
      Tablo(i, 2) = Replace(Tablo(i, 2), ".", ",")
      tmp = Split(Tablo(i, 2), "x")
      For j = 0 To UBound(tmp)
        Tablo(i, j + 2) = CDbl(tmp(j))
      Next j
    Next i
    If Sheets("Listes").ListObjects("tb_export").ListRows.Count > 0 Then Range("tb_export").Delete
    tblData.ListRows.Add 'on ajoute une ligne
    tblData.Resize tblData.Range.Resize(tblData.Range.Rows.Count + UBound(Tablo) - 1)  ' ajoute des lignes au tb_export
    Range("tb_export").Resize(UBound(Tablo), UBound(Tablo, 2)) = Tablo
  End With
End Sub

Note : j'ai corrigé un peu mon texte depuis que tu as lu ...

ric

Bonjour SOTIN,

Une suggestion : N'utiliser qu'une seule ligne par item et ses informations ...

Exemple : Colonne A : Caisson_A ... Colonne B : 780x800x900 ... Colonne C : 1 ... etc.

ric

Bonjour ric,

Une fois de plus ça fonctionne ! alala qu'est que c'est bien quand on s'y connait !!! 😂

Pour ta suggestion, les valeurs qui sont sur la feuille "export" proviennent d'un programme extérieur sur lequel je ne peut pas influencer la mise en page. J'avais dans une version précédente du fichier fais en sorte que cela ce fasse par la suite dans excel avec l'outil "Assistant Conversion", mais suite à une demande d'aide cela c'est fait comme ça et comme ça fonctionne je ne suis pas revenu dessus. ;)

En tout cas merci une fois de plus !

Bonjour SOTIN,

C'est une excellent raison pour conserver cela ainsi ... je ne plus rien.

ric

Rechercher des sujets similaires à "ajout valeur tableau via vba"