Problème avec une variable "Public"

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Dans ma feuille j'ai une variable (nblignes) qui revient dans pratiquement toutes les macros.
Cette variable correspond au nombre de lignes d'un tableau, si vous préférez sa hauteur.
La hauteur peut se modifier.
Plutôt que de sempiternellement la déclarer dans chaque macro où elle apparaît, j'ai tenté de la déclarer en tête de module comme Public.
J'écris donc (sous Option Explicit) : Public nblignes As Integer

La valeur de cette variable est la suivante :
nblignes = Application.WorksheetFunction.CountA(Range(ColLtr([Balise1]) & ":" & ColLtr([Balise1])))
Où ColLtr est une fonction que j'ai trouvée et qui renvoie la lettre qui correspond à la colonne où se trouve une cellule nommée ("Balise1") qui ne sert en fait qu'à repérer, sur la feuille, la position de la colonne au cas où cette feuille serait modifiée et éviter par là de modifier les macros.
À vrai dire, je ne sais pas exactement où je dois donner à nblignes sa valeur afin qu'elle soit par la suite récupérée dans les macros qui utilisent cette variable.

Je ne sais pas si j'ai été clair ?

Quoi qu'il en soit, un grand merci pour toute suggestion.
 
C

Compte Supprimé 979

Guest
Re : Problème avec une variable "Public"

Re,

Sinon Option Explicit, j'ai bien essayé de le mettre un jour dans un programme, mais cela m'a vite saoulé, je ne pense pas le réutiliser :eek:.
Désolé de te dire ça, mais c'est que tu ne codes pas correctement :rolleyes:

Si je mets Option Explicit c'est tout simplement que nombre de "caïds" d'Excel le conseillent afin d'éviter que des variables n'aient pas été oubliées dans les déclarations.
Et tu as tout à fait raison
king.gif


Mais je suis d'accord avec vous, cela peut engendrer quelques contraintes.
Lesquelles ?
A part devoir déclarer ses variables explicitement

Un exemple tout simple
Dans ton code, tu définis une variable : Dim Index1 As Integer
Plus loin et/ou plus tard tu saisis : Idnex1 = 1
Et bien tu peux être un moment avant de trouver ton erreur sans : Option Explicit

Quand cette option est active, tu as justes à compiler ton code et l'éditeur VBA t'indique ou ce trouve les variables non déclarées
Et hop en 1 temps 2 mouvement tu as retrouvé ton erreur ;)

A+
 

Magic_Doctor

XLDnaute Barbatruc
Re : Problème avec une variable "Public"

J'ai bien compris Dranreb, le problème est que si je modifie la taille des tableaux, je suis en conséquence obligé de renommer (ce que je fais du reste) toutes les colonnes nommées dont la hauteur dépend de cette variable.
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec une variable "Public"

Mais non ! Il faut veiller à ce que les tableaux soient agrandis convenablement, les références suivent auto !
Si déjà on équipe un classeur de macros, on peut bien s'en occuper, non ? Que ce soit par une macro que j'ai indiqué pour ajouter une nouvelle dernière ligne, ou bien, par un système d'importation si plusieurs lignes peuvent être ajoutées, en supprimant les lignes en trop ou en insérant le nombre qu'il faut devant la dernière ligne.

P.S. Et quand je dis les références c'est toutes les références, pas seulement celles des noms: S'il y a une zone d'impression, elle suit ! S'il y a des formules qui se réfèrent aux lignes, elles suivent aussi.
Tandis que l'usage abusif de End(xlup) à tout bout de champ n'est qu'un emplâtre brouillon.
À+
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Problème avec une variable "Public"

Re

Désolé de te dire ça, mais c'est que tu ne codes pas correctement :rolleyes:

Ah mais Bruno, ça, je le sais depuis longtemps. Mais je ne suis pas une référence ;).

Mais bon c'est vrai que pour l'instant dans toutes mes applis, je n'en ai pas eu besoin et pourtant dieu sait, qu'il y en a avec beaucoup de lignes de codes :).

Sinon, je préfére en général définir mes variables quand le besoin s'en fait sentir, vu que sinon, elles sont en variant si on ne les définit pas :rolleyes:.
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec une variable "Public"

Sinon, je préfére en général définir mes variables quand le besoin s'en fait sentir, vu que sinon, elles sont en variant si on ne les définit pas
Et si on les définit même quand elles sont Variant en précisant bien As Variant, ça documente le code sur l'usage qui est fait de la variable. Alors autant tout déclarer, et donc se servir de l'assistance précieuse apportée par Option Explicit. J'ai bien répondu à 3 ou 4 intervenants cette semaine qui n'auraient pas été perdus s'il l'avaient utilisée. Dont un qui m'a fait rire: un flase au lieu de false ! Ah sans Option Explicit, tout est ok ! "Mais pourquoi diable cela ne marche-t-il pas ???..."
À+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 683
Membres
105 509
dernier inscrit
hamidvba