EXCEL VBA - Bug pour affecter valeurs dans tableau - VB/VBA/VBS - Programmation
Marsh Posté le 13-08-2006 à 14:03:04
si tu affectes des valeurs, pkoi ne mets tu pas le .value derriere tes cells ?
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...
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.
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+
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
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