erreur 2029 lors de la sélection de colonne d'une matrice (VBA)

Alice1991

XLDnaute Nouveau
Bonjour à toutes et à tous !

Je désire réduire une matrice existante (matrice_TAUX) en sélectionnant les colonnes qui m'intéressent.
La matrice réduite porte le nom de matricej1_3m.
Après l'affectation de cette matrice, je retrouve l'erreur "2029".

Auriez-vous une idée d'où peut provenir l'erreur ?


Code:
Static Sub MemePer_Reducj1j2_3m(nb_pas As Integer, matrice_TAUX As Variant)

Dim matricej2_3m As Variant

Sheets("diffusion_rt").Select

Dim matricej1_3m As Variant
matricej1_3m = Application.Index(matrice_TAUX, [row (1:10)], Array(14, 27, 40, 53, 66, 79, 92, 105, 118, 131, 144, 157, 170, 183, 196, 209, 222, 235, 248, 261))


La matrice réduite devrait être du (1 to 10, 1 to 20) mais elle ne fait que du (1 to 20) avec l'erreur spécifié

Un grand merci d'avance.
Si vous voulez plus d'information, je suis là !
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : erreur 2029 lors de la sélection de colonne d'une matrice (VBA)

Bonjour Alice1991, bienvenue sur XLD,

Vous savez Alice, Excel/VBA ne supporte pas le bricolage.

Au point où vous en êtes, vous êtes bien téméraire de vous lancer sur les matrices.

Elles ne sont jamais très faciles à manipuler.

De toute façon pour vous aider il faudra qu'on arrive à comprendre ce que vous voulez faire.

A+
 
Dernière édition:

Alice1991

XLDnaute Nouveau
Re : erreur 2029 lors de la sélection de colonne d'une matrice (VBA) (résolu)

Bonsoir job !

J'ai pu résoudre le problème.
J'ai défini ma plus petite matrice comme ayant le même nombre de ligne que la plus grande et le tour est joué ;)

Bonne soirée (je reviendrai avec d'autres difficultés, sans aucun doute)

Bàt,

Alice
 

job75

XLDnaute Barbatruc
Re : erreur 2029 lors de la sélection de colonne d'une matrice (VBA)

Bonjour Alice, le forum,

J'ai voulu en avoir le coeur net et je découvre que ce que vous proposez fonctionne :

Code:
Sub Réduire()
'réduction de matrice à n lignes et 3 colonnes B D F
Dim matrice, n As Byte, reduction
matrice = [A2:G21]
n = 10 'nombre de lignes
reduction = Application.Index(matrice, Evaluate("ROW(1:" & n & ")"), Array(2, 4, 6))
[I2].Resize(n, 3) = reduction 'restitution
End Sub
Voyez le fichier joint.

C'est la 1ère fois que je fais une chose pareille, merci Alice :rolleyes:

A+
 

Pièces jointes

  • Réduction de matrice(1).xls
    46 KB · Affichages: 42

job75

XLDnaute Barbatruc
Re : erreur 2029 lors de la sélection de colonne d'une matrice (VBA)

Re,

On peut paramétrer entièrement la macro :

Code:
Private Sub CommandButton1_Click()
Réduire [A2:G21].Value, 12, Array(1, 3, 4, 7)
End Sub

Sub Réduire(matrice, n As Long, col)
'réduction de matrice à n lignes et x colonnes
Dim reduction
reduction = Application.Index(matrice, Evaluate("ROW(1:" & n & ")"), col)
'---restitution---
[I2].Resize(n, UBound(col) + 1) = reduction
[I1].MergeArea.Delete xlToLeft
[I1].Resize(, UBound(col) + 1).Merge
[I1].MergeArea.Borders.LineStyle = xlContinuous
[I1].Interior.ColorIndex = 4
[I1] = "Tableau réduit"
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Réduction de matrice(2).xls
    44 KB · Affichages: 36
Dernière édition:

job75

XLDnaute Barbatruc
Re : erreur 2029 lors de la sélection de colonne d'une matrice (VBA)

Re,

Au cas où l'on veut conserver toutes les colonnes, on peut rendre le dernier paramètre Optional :

Code:
Option Base 1

Private Sub CommandButton1_Click()
Réduire [A2:G21].Value, 12
End Sub

Sub Réduire(matrice, n As Long, Optional col)
'réduction de matrice à n lignes et x colonnes
If IsError(col) Then
 ReDim reduction(n, UBound(matrice, 2))
 reduction = matrice
Else
  ReDim reduction(n, UBound(col))
  reduction = Application.Index(matrice, Evaluate("ROW(1:" & n & ")"), col)
End If
'---restitution---
[I:IV].Delete 'RAZ
[I2].Resize(n, UBound(reduction, 2)) = reduction
[I1].Resize(, UBound(reduction, 2)).Merge
[I1].MergeArea.Borders.LineStyle = xlContinuous
[I1].Interior.ColorIndex = 4
[I1] = "Tableau réduit"
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Réduction de matrice(3).xls
    35.5 KB · Affichages: 47

Discussions similaires

Réponses
4
Affichages
947

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 678
dernier inscrit
bibitm