XL 2010 Ajouter une dimension à tableau vba

cathodique

XLDnaute Barbatruc
Bonsoir,


Je m'initie aux variables tableau vba. Je voudrais apprendre à effectuer des calculs en utilisant des tableaux.
Sur le net j'ai trouvé cet exemple https://www.auditsi.eu/?p=5678

Je sollicite vos compétences pour :
1- Le code du module 1, plante pour une incompatibilité de type (erreur 13) en prenant la plage de données avec l’en-tête.
VB:
Option Explicit

Sub CalculRFA()
Dim TableauDonnées As Variant
TableauDonnées = ActiveWorkbook.Sheets(1).Range("A1:C22").Value 'si A2:C22 le code ne plante pas

  Dim Taux As Double
  Dim CA As Double
  Dim i As Integer
  For i = LBound(TableauDonnées) To UBound(TableauDonnées)
    Taux = 0
    CA = TableauDonnées(i, 2) ' plante ici si A1:C22
    If CA > 100000 Then
    Taux = 0.15
    ElseIf CA > 50000 Then
    Taux = 0.1
    ElseIf CA > 25000 Then
    Taux = 0.05
    End If
    TableauDonnées(i, 3) = CA * Taux
  Next i
  'Report sur feuille excel
ActiveWorkbook.Sheets(2).Range("G1:I22").Value = TableauDonnées
End Sub
2- La seconde demande : calculer la remise suivant les conditions qui seront à mettre dans une 3ème dimension du TableauDonnées .

Et enfin, transférer ce tableau sur la feuille Remise avec les en-têtes de colonne.

En vous remerciant par avance.

Ps : tout tutoriel sera le bienvenu.
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Il est vraisemblable que votre cellule B1 contienne du texte qui ne peut être converti en nombre Double comme CA
Juste une remarque en plus: Votre TableauDonnées n'est pas un tableau car vous ne l'avez pas fait suivre de '()'. C'est juste un Variant …qui peut certes contenir ensuite un tableau, mais cet aspect indirect me parait inutile.
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Bonjour,

Merci beaucoup Dranreb pour tes explications. En effet, en B1 c'est du texte.
Il y a un bon moment j'ai lu sur excelabo une astuce pour ajouter une 3ème dimension à un tableau que je ne retrouve plus après le piratage de ce site.

Je voudrai transférer les données de la feuille CA dans un tableau vba [TableauDonnées(1 to 22,1 to 2)], transformer [TableauDonnées(1 to 22,1 to 3)], y mettre le calcul de la remise ensuite transférer ce dernier tableau sur une autre feuille avec les en-têtes.

En vous remerciant.
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry