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

déclaration d'une variable public

2 réponses
Avatar
JP
Bonjour,

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.

Un conseil?

Merci

JP

2 réponses

Avatar
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?
Avatar
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