[Catégorie modifiée VB6 --> VBA] Erreur d'exécution n° 5

Résolu
jpb974 Messages postés 2 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 9 juillet 2010 - 8 juil. 2010 à 13:54
jpb974 Messages postés 2 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 9 juillet 2010 - 9 juil. 2010 à 06:21
Bonjour à tous,
Grand débutant en VBA, j'apprécie votre forum où j'apprends beaucoup de choses. Mais là, je bloque totalement sur quelques lignes qui me semblent très simples. Voir le code ci-dessous.
Je précise que j'obtiens, pour l'instruction A(E+18)= Left(...) (dernière ligne écrite) le message mortel :
Argument ou appel de procédure incorrect.
L'affectation en question étant dans une double boucle, je ne saurais dire à quel passage ça bloque. Mais j'ai le message très rapidement lors de l'exécution.Dernière précision : lors de l'exécution, M 20 et P 3.
Par avance merci pour votre aide.
L'algorithme :

Sub Texteparamodifies()
'
' Texteparamodifies Macro
Dim A() As String
Dim P As Integer: Dim M As Integer: Dim X As Integer: Dim S As Integer: Dim T As Integer: Dim F As Integer: Dim E As Integer
Sheets("param modifies").Select
M = Range("B2").Value
'M est le nombre de vues
P = Range("C2").Value
'P est le nombre de points de contrôle par vue après modification
S = 6 + M * (33 + 13 * P)
'S est l'indice maximum de A
ReDim A(S)
Range(Cells(5, 27), Cells(S, 27)).Select
Selection.Copy
Selection.ClearContents
Sheets("param originaux").Select
A(5) = Range("AA5").Value
A(6) = Range("AA6").Value
For I = 1 To M
E = 6 + (I - 1) * (33 + 13 * P)
For J = 1 To 17
A(E + J) = Range("AA" & E + J).Value
Next
X = Len(Range("AA" & E + 18).Value)
A(E + 18) = Left(Range("AA" & E + 18).Value, X - 1) & Range("G" & 19 * I - 9).Value

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 juil. 2010 à 17:30
Salut
E est une lettre réservée pour désigner les puissances de 10.
Utilise des noms de variables plus explicites.
Commence par ça, je pense que cela résoudra ton problème.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
jpb974 Messages postés 2 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 9 juillet 2010
9 juil. 2010 à 06:21
Bonjour
Merci d'avoir pris le temps de lire et de répondre.
Je retiens la suggestion pour le E, mais l'erreur vient des indices de A qui sont faux. Le X de l'avant-dernière ligne est nul à un moment donné, ce qui entraîne évidemment une erreur dans l'instruction suivante.

Encore merci et toutes mes excuses pour n'avoir pas posté le message au bon endroit.
0
Rejoignez-nous