Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment accéder à un tableau sur un autre module

4 réponses
Avatar
colette
Bonjour,
J'ai le tableau ci-dessous dans un module, première question,si j'éxécute la
procédure sub message tableau,j'ai l'erreur 9 qui apparait, il faut que
j'éxécute toute la procédure du module pour que cela fonctionne. Pourquoi?
Seconde question, si je veux utiliser le tableau dans un autre module du
classeur, c'est impossible,j'ai l'erreur sub ou fonction non définie sur la
variable mon tableau. Comment faire pour accéder au tableau dans un autre
module autre que celui où il est déclaré?
Merci pour la réponse

Dim MonTableau() As Single
Sub BouclesForNextImbriquees()
Dim DerniereLigne As Byte
DerniereLigne = Range("A3").End(xlDown).Row
Dim NbreDeLignes As Byte
NbreDeLignes = DerniereLigne - 2
ReDim MonTableau(NbreDeLignes, 4)
Call AffectervaleursTableau(NbreDeLignes)
End Sub
Sub AffectervaleursTableau(DerniereLigneTableau)
Dim CompteurLignes As Byte
Dim CompteurColonnes As Byte
For CompteurLignes = 1 To DerniereLigneTableau '
For CompteurColonnes = 1 To 4
MonTableau(CompteurLignes, CompteurColonnes) = Cells(CompteurLignes
+ 2, CompteurColonnes + 1)
Next CompteurColonnes
Next CompteurLignes
Range("D19") = MonTableau(1, 1)

End Sub

Sub messagetableau()
Range("G3") = MonTableau(2, 2)
If Range("G3") > 100000 Then
MsgBox "excellent"
Else
MsgBox "A Améliorer"
End If
End Sub

4 réponses

Avatar
JB
Bonjour,

2- Public montableau() As Single
1- Le tableau étant dimensionné en dynamique, montableau(2,2) n'a pas
de sens

JB

On 16 fév, 09:23, "colette" wrote:
Bonjour,
J'ai le tableau ci-dessous dans un module, première question,si j'éx écute la
procédure sub message tableau,j'ai l'erreur 9 qui apparait, il faut que
j'éxécute toute la procédure du module pour que cela fonctionne. Po urquoi?
Seconde question, si je veux utiliser le tableau dans un autre module du
classeur, c'est impossible,j'ai l'erreur sub ou fonction non définie su r la
variable mon tableau. Comment faire pour accéder au tableau dans un aut re
module autre que celui où il est déclaré?
Merci pour la réponse

Dim MonTableau() As Single
Sub BouclesForNextImbriquees()
Dim DerniereLigne As Byte
DerniereLigne = Range("A3").End(xlDown).Row
Dim NbreDeLignes As Byte
NbreDeLignes = DerniereLigne - 2
ReDim MonTableau(NbreDeLignes, 4)
Call AffectervaleursTableau(NbreDeLignes)
End Sub
Sub AffectervaleursTableau(DerniereLigneTableau)
Dim CompteurLignes As Byte
Dim CompteurColonnes As Byte
For CompteurLignes = 1 To DerniereLigneTableau '
For CompteurColonnes = 1 To 4
MonTableau(CompteurLignes, CompteurColonnes) = Cells(CompteurLi gnes
+ 2, CompteurColonnes + 1)
Next CompteurColonnes
Next CompteurLignes
Range("D19") = MonTableau(1, 1)

End Sub

Sub messagetableau()
Range("G3") = MonTableau(2, 2)
If Range("G3") > 100000 Then
MsgBox "excellent"
Else
MsgBox "A Améliorer"
End If
End Sub


Avatar
DB
Bonjour,
Première question tant que tu n'a pas fait ReDim montableau, il n'existe pas
réelement
Deuxième question :
Public MonTableau() As Single
à la place de
Dim MonTableau() As Single

et dans l'autre module tu y accèdes par nomdumodule.MonTableau
par exemple Module1.MonTableau(2,2)

DB


Bonjour,
J'ai le tableau ci-dessous dans un module, première question,si j'éxécute la
procédure sub message tableau,j'ai l'erreur 9 qui apparait, il faut que
j'éxécute toute la procédure du module pour que cela fonctionne. Pourquoi?
Seconde question, si je veux utiliser le tableau dans un autre module du
classeur, c'est impossible,j'ai l'erreur sub ou fonction non définie sur la
variable mon tableau. Comment faire pour accéder au tableau dans un autre
module autre que celui où il est déclaré?
Merci pour la réponse

Dim MonTableau() As Single
Sub BouclesForNextImbriquees()
Dim DerniereLigne As Byte
DerniereLigne = Range("A3").End(xlDown).Row
Dim NbreDeLignes As Byte
NbreDeLignes = DerniereLigne - 2
ReDim MonTableau(NbreDeLignes, 4)
Call AffectervaleursTableau(NbreDeLignes)
End Sub
Sub AffectervaleursTableau(DerniereLigneTableau)
Dim CompteurLignes As Byte
Dim CompteurColonnes As Byte
For CompteurLignes = 1 To DerniereLigneTableau '
For CompteurColonnes = 1 To 4
MonTableau(CompteurLignes, CompteurColonnes) = Cells(CompteurLignes
+ 2, CompteurColonnes + 1)
Next CompteurColonnes
Next CompteurLignes
Range("D19") = MonTableau(1, 1)

End Sub

Sub messagetableau()
Range("G3") = MonTableau(2, 2)
If Range("G3") > 100000 Then
MsgBox "excellent"
Else
MsgBox "A Améliorer"
End If
End Sub






Avatar
colette
Merci Db mais pour la seconde question cela ne fonctionne pas si je mets
module1.montableau(2,2) j'ai l'erreur 9.D'où cela vient-il
Merci




"colette" a écrit dans le message de
news:%2371u$
Bonjour,
J'ai le tableau ci-dessous dans un module, première question,si j'éxécute
la

procédure sub message tableau,j'ai l'erreur 9 qui apparait, il faut que
j'éxécute toute la procédure du module pour que cela fonctionne. Pourquoi?
Seconde question, si je veux utiliser le tableau dans un autre module du
classeur, c'est impossible,j'ai l'erreur sub ou fonction non définie sur
la

variable mon tableau. Comment faire pour accéder au tableau dans un autre
module autre que celui où il est déclaré?
Merci pour la réponse

Dim MonTableau() As Single
Sub BouclesForNextImbriquees()
Dim DerniereLigne As Byte
DerniereLigne = Range("A3").End(xlDown).Row
Dim NbreDeLignes As Byte
NbreDeLignes = DerniereLigne - 2
ReDim MonTableau(NbreDeLignes, 4)
Call AffectervaleursTableau(NbreDeLignes)
End Sub
Sub AffectervaleursTableau(DerniereLigneTableau)
Dim CompteurLignes As Byte
Dim CompteurColonnes As Byte
For CompteurLignes = 1 To DerniereLigneTableau '
For CompteurColonnes = 1 To 4
MonTableau(CompteurLignes, CompteurColonnes) Cells(CompteurLignes
+ 2, CompteurColonnes + 1)
Next CompteurColonnes
Next CompteurLignes
Range("D19") = MonTableau(1, 1)

End Sub

Sub messagetableau()
Range("G3") = MonTableau(2, 2)
If Range("G3") > 100000 Then
MsgBox "excellent"
Else
MsgBox "A Améliorer"
End If
End Sub





Avatar
MichDenis
Une erreur 9 dans le cas d'un appel où l'indice est appelé
mais n'a pas été défini.

Exemple :
Définir ta variable Tableau dans le haut d'un module standard

Public Tblo()

'Définir le contenu du tableau (array)

Sub ds()
ReDim Tblo(1 To 1)
Tblo(1) = "Denis"
End Sub

Et tu peux appeler la variable tableau de n'importe quel module
'--------------------
Sub Appel()
Msgbox Module1.Tblo(1)
'Ou simplement
Msgbox Tblo(1)
End Sub
'--------------------

Si tu essaie cette ligne de code
Msgbox Tblo(2)
une erreur de type 9 est générée car cet index n'a pas
été défini dans la variable de Tblo() lors de l'exécution de la procédure Ds.



"colette" a écrit dans le message de news:

Merci Db mais pour la seconde question cela ne fonctionne pas si je mets
module1.montableau(2,2) j'ai l'erreur 9.D'où cela vient-il
Merci




"colette" a écrit dans le message de
news:%2371u$
Bonjour,
J'ai le tableau ci-dessous dans un module, première question,si j'éxécute
la

procédure sub message tableau,j'ai l'erreur 9 qui apparait, il faut que
j'éxécute toute la procédure du module pour que cela fonctionne. Pourquoi?
Seconde question, si je veux utiliser le tableau dans un autre module du
classeur, c'est impossible,j'ai l'erreur sub ou fonction non définie sur
la

variable mon tableau. Comment faire pour accéder au tableau dans un autre
module autre que celui où il est déclaré?
Merci pour la réponse

Dim MonTableau() As Single
Sub BouclesForNextImbriquees()
Dim DerniereLigne As Byte
DerniereLigne = Range("A3").End(xlDown).Row
Dim NbreDeLignes As Byte
NbreDeLignes = DerniereLigne - 2
ReDim MonTableau(NbreDeLignes, 4)
Call AffectervaleursTableau(NbreDeLignes)
End Sub
Sub AffectervaleursTableau(DerniereLigneTableau)
Dim CompteurLignes As Byte
Dim CompteurColonnes As Byte
For CompteurLignes = 1 To DerniereLigneTableau '
For CompteurColonnes = 1 To 4
MonTableau(CompteurLignes, CompteurColonnes) Cells(CompteurLignes
+ 2, CompteurColonnes + 1)
Next CompteurColonnes
Next CompteurLignes
Range("D19") = MonTableau(1, 1)

End Sub

Sub messagetableau()
Range("G3") = MonTableau(2, 2)
If Range("G3") > 100000 Then
MsgBox "excellent"
Else
MsgBox "A Améliorer"
End If
End Sub