J'ai un bon nombre de variables =E0 d=E9clarer.
Elles sont utilis=E9es dans plusieurs usurforms et dans plusieurs modules.
Les concern=E9es, je les d=E9clare en public en t=EAte de module.
Est-ce la solution pour les r=E9utiliser dans les modules et dans les userf=
orms?
J'essuie une erreur 1004 dans le cas pr=E9sent.
Je d=E9clare en t=EAte de module
public sgf as worksheet
dans mon userform j'ai:
set sgf=3D sheets("Strat Globale")
A l'ex=E9cution du code o=F9 je r=E9utilise sgf j'ai une erreur 1004 / erre=
ur d=E9fini par l'application ou l'objet.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
| Je déclare en tête de module
Une variable pour être utilisé dans tous les modules et formulaires de ton projetVBA doit être déclarée dans LE HAUT d'un MODULE STANDARD.
Quand tu déclares une variable comme Public dans un autre type de module qu'un module STANDARD, ce n'est pas une variable, mais une nouvelle propriété que tu ajoutes au module de classe et si c'est dans un module feuille à cet objet. Pour utiliser cette propriété ailleurs que dans ce module, tu dois faire procéder le nom du module devant le nom de la propriété :
Exemple : Déclaration d'une variable public dans le module "Feuil1"
Public MyVar As Worksheet
si j'écris ce code ailleurs que dans le module 1, je dois écrire : Set Feuil1.MyVar = Sheets("MaFeuille")
Dans la problématique que tu décris, il y a sûrement autre chose dans ta procédure qui génère une erreur de type 1004... car ton erreur n'est pas compatible avec cette ligne de code. Cette ligne de code ne peut pas générer une erreur 1004. set sgf= sheets("Strat Globale")
Quoi d'autre as-tu dans ta procédure?
Bonjour,
| Je déclare en tête de module
Une variable pour être utilisé dans tous les modules et formulaires de ton
projetVBA
doit être déclarée dans LE HAUT d'un MODULE STANDARD.
Quand tu déclares une variable comme Public dans un autre type de module
qu'un
module STANDARD, ce n'est pas une variable, mais une nouvelle propriété que
tu ajoutes
au module de classe et si c'est dans un module feuille à cet objet. Pour
utiliser cette
propriété ailleurs que dans ce module, tu dois faire procéder le nom du
module devant
le nom de la propriété :
Exemple : Déclaration d'une variable public dans le module "Feuil1"
Public MyVar As Worksheet
si j'écris ce code ailleurs que dans le module 1, je dois écrire :
Set Feuil1.MyVar = Sheets("MaFeuille")
Dans la problématique que tu décris, il y a sûrement autre chose dans ta
procédure qui génère une erreur de type 1004... car ton erreur n'est pas
compatible avec cette ligne de code. Cette ligne de code ne peut pas générer
une erreur 1004.
set sgf= sheets("Strat Globale")
Une variable pour être utilisé dans tous les modules et formulaires de ton projetVBA doit être déclarée dans LE HAUT d'un MODULE STANDARD.
Quand tu déclares une variable comme Public dans un autre type de module qu'un module STANDARD, ce n'est pas une variable, mais une nouvelle propriété que tu ajoutes au module de classe et si c'est dans un module feuille à cet objet. Pour utiliser cette propriété ailleurs que dans ce module, tu dois faire procéder le nom du module devant le nom de la propriété :
Exemple : Déclaration d'une variable public dans le module "Feuil1"
Public MyVar As Worksheet
si j'écris ce code ailleurs que dans le module 1, je dois écrire : Set Feuil1.MyVar = Sheets("MaFeuille")
Dans la problématique que tu décris, il y a sûrement autre chose dans ta procédure qui génère une erreur de type 1004... car ton erreur n'est pas compatible avec cette ligne de code. Cette ligne de code ne peut pas générer une erreur 1004. set sgf= sheets("Strat Globale")
Quoi d'autre as-tu dans ta procédure?
JP
Bonjour Denis,
Avec tes explications, je viens de trouver mon erreur. Variable déclaré e Lin et variable utilisée Lig (c'est bête mais l'erreur 1004 vient de là)
Voici mes variables en haut de mon module standard:
Option Explicit Public nbeleves As Integer Public i As Integer Public c As Variant Public sh1 As Worksheet Public sh2 As Worksheet Public sh3 As Worksheet Public sgf As Worksheet Public derligne As Integer Public dercolniv5 As Integer Public dercolniv4 As Integer Public d As Variant Public PlageExaminee As Variant Public Competence(0 To 4) Public Elev() Public CroiX As Byte Public col As Integer Public comp As Integer Public Lin As Integer Public n As Integer Public m As Integer Public a As Integer Public valeur As Integer
Sub ecriture()
Set sh1 = Sheets("Suivi CCF_BEP") Set sh2 = Sheets("suivi CCF_BAC") Set sgf = Sheets("Strat Globale")
. . . If sgf.Cells(Lig, 7) = "Snde" Then ' ligne où était l'erreur
. . . End sub
Merci pour ces explications. Très pédagogique!
JP
Bonjour Denis,
Avec tes explications, je viens de trouver mon erreur. Variable déclaré e Lin et variable utilisée Lig (c'est bête mais l'erreur 1004 vient de là)
Voici mes variables en haut de mon module standard:
Option Explicit
Public nbeleves As Integer
Public i As Integer
Public c As Variant
Public sh1 As Worksheet
Public sh2 As Worksheet
Public sh3 As Worksheet
Public sgf As Worksheet
Public derligne As Integer
Public dercolniv5 As Integer
Public dercolniv4 As Integer
Public d As Variant
Public PlageExaminee As Variant
Public Competence(0 To 4)
Public Elev()
Public CroiX As Byte
Public col As Integer
Public comp As Integer
Public Lin As Integer
Public n As Integer
Public m As Integer
Public a As Integer
Public valeur As Integer
Sub ecriture()
Set sh1 = Sheets("Suivi CCF_BEP")
Set sh2 = Sheets("suivi CCF_BAC")
Set sgf = Sheets("Strat Globale")
.
.
.
If sgf.Cells(Lig, 7) = "Snde" Then ' ligne où était l'erreur
Avec tes explications, je viens de trouver mon erreur. Variable déclaré e Lin et variable utilisée Lig (c'est bête mais l'erreur 1004 vient de là)
Voici mes variables en haut de mon module standard:
Option Explicit Public nbeleves As Integer Public i As Integer Public c As Variant Public sh1 As Worksheet Public sh2 As Worksheet Public sh3 As Worksheet Public sgf As Worksheet Public derligne As Integer Public dercolniv5 As Integer Public dercolniv4 As Integer Public d As Variant Public PlageExaminee As Variant Public Competence(0 To 4) Public Elev() Public CroiX As Byte Public col As Integer Public comp As Integer Public Lin As Integer Public n As Integer Public m As Integer Public a As Integer Public valeur As Integer
Sub ecriture()
Set sh1 = Sheets("Suivi CCF_BEP") Set sh2 = Sheets("suivi CCF_BAC") Set sgf = Sheets("Strat Globale")
. . . If sgf.Cells(Lig, 7) = "Snde" Then ' ligne où était l'erreur