[VBA-E] Nom ambigu détecté... [Résolu] - D'un coup d'un seul

Bonjour !!

Bon ce matin, ma fonction marché bien, je n’avais aucun souci et ce depuis la semaine dernière. Midi sonne, je vais manger, je reviens et… “nom ambigu détecté”… ça veut dire quoi cette erreur ?? et ça peut venir de quoi ??

J’attend vos lumières !!

Merci d’avance

ambigu = à double sens.

Je sais pas ce que tu fais, mais si par exemple tu es dans un contexte où il y a deux fois le même nom d’objet, mais pas de la même source, alors il y a ambiguité car il peut choisir entre deux tyoe objets et ne sait pas lequel prendre.

Bah en fait, j’avais déclaré ma variable deux fois en plublic. J’ai enlevé une déclaration et maintenant c’est bon !!
Merci pour l’explication !

D’ailleurs ça m’amène à une autre question : si je déclare une variable en public, elle pourra servir dans toutes mes autres sub ?? Parce que là j’ai déclaré un integer qui sert dans une sub puis la sub qui prend le relais. Mais dans cette dernière, j’ai un message d’erreur m’indiquant que la variable est non définie… Je comprend pas !!

Si ta variable est déclaré dans une sub, elle ne pourra être utilisé ailleur car il s’agit d’une variable locale.
Si tu déclares une variable global dans le début du code de ta form, tu pourras y accéder via form.variable.
Si tu déclares une variable dans un module, tu pourras l’appeler normalement (variable = foo)
Si tu déclares une variables dans une classes, il faudra créer une instance de cette classe (set cFoo = new class ou dim cFoo as MyClass), tu pourras y accéder via cFoo.maVariable = foo.

Il faut peut-être préfixer la variable par le nom du module MODULE.mon_variable (ou garder une référence de l’objet en mémoire si c’est un module de classe).
Mais ce n’est pas une très bonne habitude d’utiliser des variables globales, il vaut mieux passer la référence d’un sub ou fonction à l’autre, ou faire un module de classe et programmer en objet.
:slight_smile:

Un peu d’illustration de mon affaire histoire que ce soit plus clair !!

Je la définis ici :

Option Explicit

Dim NomCourbe(19) As String 'On ne pourra admettre que 20 tableaux
Dim RegimeMini As Long
Dim RegimeMax As Long
Dim NbPts(19) As Integer
Dim NumLigne(19) As Integer 'Numéro de la ligne où commence le tableau de la mesure NumCourbe
Dim NumLigneFin(19) As Integer
Dim PasDeValeur As Boolean
Dim NumCourbe As Integer

Public Sub DefinitionDeLaCourbe()

Dim Compteur As Integer
Dim CompteurDepart As Integer
Dim Rep As String
Dim RegimeMiniTemp As Integer

DefinitionDeLaCourbe appelle à la fin DefinitionDesCharts qui appelle ensuite :

Option Explicit

Dim NumColonne(19) As Integer

Public Sub RecherchColonne()

Dim Rep As String

NumCourbe = 0   [b]"Mon erreur est là !! [/b]

[b]Je suis boulet !! Une demi heure que j’arrache les cheveux que je n’ai pas !! FAllait mettre Public NumCourbe As… et non Dim NumCourbe As…
Pfff, je savais qu’il fallait pas que je me lève…

Merci de votre aide en tout cas !![/b]

c’est cool alors :super:

sinon, c’est bien d’avoir mis le “option explicit”, ça évite pas mal de problèmes.