déclaration d'une variable public

Le
JP
Bonjour,

J'ai un bon nombre de variables à déclarer.
Elles sont utilisées dans plusieurs usurforms et dans plusieurs modules.
Les concernées, je les déclare en public en tête de module.

Est-ce la solution pour les réutiliser dans les modules et dans les userf=
orms?

J'essuie une erreur 1004 dans le cas présent.

Je déclare en tête de module
public sgf as worksheet

dans mon userform j'ai:
set sgf= sheets("Strat Globale")

A l'exécution du code où je réutilise sgf j'ai une erreur 1004 / erre=
ur défini par l'application ou l'objet.

Un conseil?

Merci

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26081482
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?
JP
Le #26081712
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
Publicité
Poster une réponse
Anonyme