Bonjour,
Est ce qu'une personne du forum pourrait m'indiquer ou se trouve le problème ?
Merci par avanceCode:
1
2
3 For K = 0 To UBound(TRatJour()) Cells(12, K + 2).Formula = "=" & Cells(10, K + 2).Address & "/" & TRatJour(K) Next K
Version imprimable
Bonjour,
Est ce qu'une personne du forum pourrait m'indiquer ou se trouve le problème ?
Merci par avanceCode:
1
2
3 For K = 0 To UBound(TRatJour()) Cells(12, K + 2).Formula = "=" & Cells(10, K + 2).Address & "/" & TRatJour(K) Next K
Bonjour,
Etant donné que tu ne donnes aucune indication quant au message d'erreur que tu as reçu ni sur quelle ligne de ce code, tu as une erreur, de mémoire donc sans test, je pense que ce qui est en rouge est superflu.
Seul le nom de la variable tableau doit être indiqué
Code:
1
2
3 For K = 0 To UBound(TRatJour()) Cells(12, K + 2).Formula = "=" & Cells(10, K + 2).Address & "/" & TRatJour(K) Next K
Bonjour Corona et merci de me répondre
Il s'agit d'une erreur d'exécution 1004
Voici mon code complet
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Mes deux tables: Ratio_GPAE_Jour 128,3000031 28,39999962 128,3000031 Ratio_GPAE_An 26667 5900 30000 Sub Calcul() Dim PLigVide As Integer, PColVide As Integer, LigRatio As Integer Dim TailleT As Integer, J As Integer, K As Integer Worksheets("EDataBase").Activate PLigVide = Columns(1).Find("", [A65536], , , xlByRows, xlNext).Row PColVide = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column TailleT = (PLigVide - 3) '** Définit la taille des tableaux ReDim TRatAn(TailleT) ReDim TRatJour(TailleT) '** Alimente les tableaux suivant les champs "Ratio_GPAE_An" J = 0 For Col = 1 To PColVide If Cells(1, Col).Value = "Ratio_GPAE_An" Then For LigRatio = 2 To PLigVide - 1 TRatAn(J) = Cells(LigRatio, Col).Value J = J + 1 Next LigRatio End If Next Col '** Alimente les tableaux suivant les champs "Ratio_GPAE_Jour" J = 0 For Col = 1 To PColVide If Cells(1, Col).Value = "Ratio_GPAE_Jour" Then For LigRatio = 2 To PLigVide - 1 TRatJour(J) = Cells(LigRatio, Col).Value J = J + 1 Next LigRatio End If Next Col For K = 0 To UBound(TRatAn()) Cells(10, (K + 2)) = TRatAn(K) Next K For K = 0 To UBound(TRatJour()) Cells(12, K + 2).Formula = "=" & Cells(10, K + 2).Address & "/" & TRatJour(K) '** l'erreur d"'execution 1004 se situe ici Next K End Sub
La correction ne résout pas le problème
Bien,
C'est pas que c'est important mais .... l'erreur se produit à quelle ligne ?
C'est un secret ?
Dans mon code que j 'ai joint , j'ai mis en commentaire la ligne ou se situe l'erreur
Ligne 55
Bonjour,
Cela signifie que la variable tableau tratjour(k) est vide.
Dans l'exemple ci-dessous tratjour(3) et tratjour(4) ne sont pas initialisées et donc qu'en la variable K alimentée par la boucle vaut 3, nous avons une erreur 1004
Code:
1
2
3
4
5
6
7
8
9 Sub tt() Dim tratjour(4) tratjour(0) = 20 tratjour(1) = 10 tratjour(2) = 0 For k = 0 To UBound(tratjour()) Cells(12, k + 2).formula = "=" & Cells(10, k + 2).Address & "/" & tratjour(k) '** l'erreur d"'execution 1004 se situe ici Next k End Sub
Corona,
Je suis d'accord avec toi pour l'exemple que tu mets, effectivement le tableau doit avoir 5 valeurs de 0 à 4.
Sauf que dans mon cas le tableau est dynamique et que la valeur de K est valable pour l' adresse de la cellule et la variable tableau.
L'erreur ne vient pas de cela, pour preuve un codage intermédiaire que j'ai mis en place et qui fonctionne.
Code:
1
2
3
4
5 For Col = 0 To UBound(tratjour()) Cells(Lig + 4, Col + 3).Value = tratjour(Col) 'affectation de la valeur du tableau à une cellule Cells(Lig, Col + 3).Formula = "=" & Cells(Lig - 1, Col + 3).Address & " / " & Cells(Lig + 4, Col + 3).Address ' nouvelle formule avec les cellules qui fonctionne Cells(Lig, Col + 3).Formula = "=" & Cells(Lig - 1, Col + 3).Address & "/" & tratjour(Col) ' formule avec adresse cellule et variable tableau qui retourne l'erreur Next Col
Bonjour,
L'exemple que j'ai publié renvoie bien une erreur 1004 à la ligne 7.
Maintenant si tu es certain que ce n'est pas la cause, je te suggère d'utiliser les outils de débogage car tu es le seul à pouvoir le faire étant donné que tu travailles sur des données réelles.
Dès que tu as le message d'erreur, va dans la fenêtre d'exécution pour imprimer la valeur des variables utilisées dans la ligne où se produit l'erreur. Utilise l'espion, le pas à pas (F8), le point d'arrêt (F9), etc...
Merci Corona pour le temps que tu m'as consacré.
Je vais garder pour l'instant la solution "Temporaire" d'affecter la valeur du tableau à une cellule et effectuer l'opération de division sur les adresses de cellules.
Toutefois je laisse ouvert le sujet si jamais une solution peut etre trouvée ou si j'en trouve une.
Cordialement
Franck87
La réponse est :
je la mets dans le cas ou quelqu'un buterait comme moi sur ce problème.Code:
1
2
3 For K = 0 To UBound(TRatJour()) Cells(12, K + 2).FormulaLocal = "=" & Cells(10, K + 2).Address & "/" & TRatJour(K) Next K
Explication :
Les valeurs décimales du Tableau sont saisies sous la forme européenne "," le "FormulaLocal" s'impose. Alors que la saisie sous la forme anglophone pour les décimales est le point.
Merci à UCFOUTU pour son aide.