jpb974
Messages postés2Date d'inscriptionjeudi 8 juillet 2010StatutMembreDernière intervention 9 juillet 2010
-
8 juil. 2010 à 13:54
jpb974
Messages postés2Date d'inscriptionjeudi 8 juillet 2010StatutMembreDerniè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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
jpb974
Messages postés2Date d'inscriptionjeudi 8 juillet 2010StatutMembreDerniè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.