EXCEL VBA - Bug pour affecter valeurs dans tableau

EXCEL VBA - Bug pour affecter valeurs dans tableau - VB/VBA/VBS - Programmation

Marsh Posté le 13-08-2006 à 13:03:43    

Bonjour,
Je desire affecter des valeurs dans un tableau sous VBA Excel avec le code ci-dessous :
 
Sub Affecter_Valeurs_Tab()
 
Dim TabValeurs() As Single
Dim CompteurLignes As Byte
Dim CompteurColonnes As Byte
 
 
Sheets("Parametrages" ).Select
For CompteurLignes = 1 To 20 'DerLigne
       
      For CompteurColonnes = 1 To 6
    TabValeurs(CompteurLignes, CompteurColonnes) = Cells(CompteurLignes + 11, CompteurColonnes + 1)
      Next CompteurColonnes
       
Next CompteurLignes
 
       
End Sub
 
Le problème qui me bloque c'est le message sur la ligne rouge :
 
Type incompatible (erreur 13) :??:  
 
J'ai tourné le Pb dans tous les sens, sans résultat.
 
Si quelqu'un pouvais me dépanner ce serait super !
 
Pixel72
 
 
 

Reply

Marsh Posté le 13-08-2006 à 13:03:43   

Reply

Marsh Posté le 13-08-2006 à 14:03:04    

si tu affectes des valeurs, pkoi ne mets tu pas le .value derriere tes cells ?

Reply

Marsh Posté le 13-08-2006 à 14:36:43    

Bonjour,
essaie :
 
Dim TabValeurs(20, 6) As Single  
 
A+

Reply

Marsh Posté le 13-08-2006 à 18:04:38    

Avec ces instructions ( .Value) ou (Dim TabValeurs(20, 6) As Single) j'ai toujours le même message, d'autre parts il s'agit d'un tableau qui doit pouvoir évoluer ( le nombre de lignes peut augmenter voir diminuer). Je ne peux donc pas figer le nombre de colonnes et de lignes  .
 
Mon pb reste entier... :??:

Reply

Marsh Posté le 13-08-2006 à 18:43:27    

Je viens de mettre le doigt sur mon Pb :
Le tableau ne doit pas être "avec un type". Il doit être de la forme : Dim TabValeurs().
 
Desormais ça fontionne inpec.
 
Merci à tous.


Message édité par Pixel72 le 13-08-2006 à 18:45:39
Reply

Marsh Posté le 13-08-2006 à 18:45:07    

Bonsoir,
Il faut distinguer 2 problèmes : La déclaration du tableau et le message d'erreur.
 
Le code d'erreur que tu signales est normalement "incongru" pour cette macro : Si on met ce code "brut de fonderie" dans un classeur vide Excel on obtient une erreur "9" due au défaut de déclaration et non pas une erreur "13".
 
J'ai donc tendance à penser que tu as un peu résumé ton code en supprimant un élément déterminant.
 
Tu ne peux pas déclarer un tableau à 2 dimensions pour une plage de la manière dont tu le fais. Ou tu le déclares en variant ou tu le déclares pas du tout ce qui revient au même, ou tu déclares des dimensions que tu "Redim" au fil de l'eau.
 
Pour un objet plage tu as intéret à déclarer ton array de la manière suivante :
a = [A1:F20]
 
Ce qui offre en outre l'avantage d'être plus rapide qu'une boucle.
Si tu ne peux le faire (parce que tu es obligé de variabiliser ta plage) utilise :
a=Range(Cells(a,b),(c,d))
A+


Message édité par galopin01 le 13-08-2006 à 18:49:33
Reply

Marsh Posté le 13-08-2006 à 18:53:25    

Galopin,
 
Comme tu as pu le voir j'ai trouvé la réponse à mon pb.
 
Quant au dernier paragraphe de ton post, je le met dans un petit coin de ma tête, car pour l'instant je viens tous juste d'apprivoisser le fonctionnement des tableaux dynamiques.
Je vais terminer toute ma macro, puis je reveindrais à ta solution
 
Merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed