Déclaration de variable

Bonjour à tous,

J'avance dans mon apprentissage de VBA mais ce n'est que le début. Dès lors grâce à

Menus en cascade, j'ai bien avancé,

cependant en utilisant le code ci dessous (qui n'est que le début du code...) j'ai une erreur de variable non définie.

Malgré mes recherches et surtout à cause de mon faible niveau, je ne comprends pas comment exprimer ma variable, et si je la dois la mettre dans un module publique ou dans mon userform directement?

Je vous remercie grandement de votre aide.

Salutations

Dim f, a()

Private Sub UserForm_Initialize()

Set f = Sheets("parametres")

Set mondico = CreateObject("Scripting.Dictionary")

a = f.Range("A2:E" & f.[A65000].End(xlUp).Row).Value

For i = LBound(a, 1) To UBound(a, 1)

Bonsoir,

Si tu as placé l'instruction Option Explicit avant la procédure, il est normal que tu aies l’erreur de variable non définie.

La variable mondico n’est pas définie,

La variable i n’est pas définie.

(En mode débogage, tu dois voir la ligne concernée surlignée en jaune).

Le niveau des variables dépend de l’utilisation que tu veux en faire.

Une Variable déclarée à l'intérieur d'une sub ne sera utilisable qu'à l'intérieur de celle-ci.

Une Variable déclarée en tête d’un module sera utilisable dans toutes macros du module.

Une Variable déclarée en tête d'un module standard avec l'instruction Public sera utilisable dans toutes les macros du projet.

A+

Bonjour Frangy,

merci de ta réponse.

En effet je recherche comment déclarer les variable mondico et i.

En mode déboguage, cela me dit que meme ma variable f sur la ligne "Set F=.." n'est pas définie.

Pourtant Dim f a() n'est elle pas ma variable pour F??

Salutations

Bonjour,

Si je résume bien, ton code doit ressembler à cela

Option Explicit
Dim f, a()
Private Sub UserForm_Initialize()
Dim mondico
Dim i As Long
    Set f = Sheets("parametres")
    Set mondico = CreateObject("Scripting.Dictionary")
    a = f.Range("A2:E" & f.[A65000].End(xlUp).Row).Value
    For i = LBound(a, 1) To UBound(a, 1)

    Next i
End Sub

Ce code ne devrait pas retourner une erreur.

Es-tu sûr que l'erreur sur la ligne Set f = Sheets("parametres") est "variable non définie" ?

A+

Bonjour,

Je te remercie de te pencher sur mon cas.

Avec le code suivant Set f m'affiche" erreur de compilation: variable non défini"

Option Explicit

Dim f, a()

Private Sub UserForm_Initialize()

Dim mondico

Dim i As Long

Set f = Sheets("feuil1")

Set mondico = CreateObject("Scripting.Dictionary")

a = f.Range("A7:E" & f.[A65000].End(xlUp).Row).Value

For i = LBound(a, 1) To UBound(a, 1)

mondico(a(i, 1)) = ""

Next i

temp = mondico.keys

Call Tri(temp, LBound(temp), UBound(temp))

Me.Textnomduclient.List = temp

End Sub

Je constate que le nom de feuille a changé.

Peux-tu joindre un classeur exemple ?

A+

Re,

Je pense que c'est parce que mes variables ne sont pas déclarées au bon endroit.

excuse moi d'avance si je te réponds à coté de la plaque, j'ai atteint mon seuil de Peters je crois..

Le code en question est dans le userform "resultat de recherche"

Merci de ton aide

Salutations

Et le fichier, il est où ?

Mes excuses,

Il était trop et je n'avais pas vu le message d'erreur.

Salutations

114test1.zip (117.24 Ko)

Je pense que c'est parce que mes variables ne sont pas déclarées au bon endroit.

Tu penses bien

Une Variable déclarée en tête d’un module sera utilisable dans toutes macros du module.

En tête d’un module, cela veut dire avant la première sub.

A priori, tu vas découvrir d'autres erreurs de ce même acabit.

A+

Merci Frangy.

Je vais tacher de corriger tout çà.

Rechercher des sujets similaires à "declaration variable"