Variable objet Nothing

Bonjour
Par le biais d'une liste déroulante dans une Userform, je désire y entrer une donnée nouvelle

Private Sub CbDestinat_Click()
Dim dl As Byte, plage As Range
CbxDestination.Visible = True
CbxDestination.BackColor = vbWhite
Sheets("Destination").Select
Set ws = Worksheets("Destination")
dl = Cells(Rows.Count, 1).End(xlUp).Row
Set plage = Range("a1:a" & dl)
CbxDestination.RowSource = plage.Address
CbxDestination.SetFocus
End Sub

....et vollà ce que j'ai

dest2

et au débogage....Pourquoi "cel" ne stocke t-il pas "domicile" puisque présent dans la combobox ?.....merci de votre aide

dest1

bonjour,

l'instruction .find recherche, dans une plage donnée, une cellule qui contient une valeur donnée en paramètre, donc ici tu cherches "domicile" dans la plage contenue dans ta variable plage. Cette variable plage ne contient aucune référence à une plage dans ta procédure cbxdestination_exit, donc l'instruction plante car plage ne contient aucune référence à une plage de cellules.

..
j'ai déjà réalisé des procédures strictement identiques qui n'ont jamais posé aucun problème.. d'où mon incompréhension la plus totale...

merci de ton avis ....et solution éventuelle..

Bonsoir,

ta plage n'est pas définie. Comme je ne sais pas à quelles cellules cette plage doit faire référence, je ne pas t'aider plus que te dire que ta plage n'est pas définie.

si c'est la même plage que dans ta procédure Sub CbDestinat_Click alors une solution serait que tu ajoutes les instructions suivantes

Set ws = Worksheets("Destination")
dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set plage = ws.Range("a1:a" & dl) 'on définit la plage de recherche

avant ton instruction set cel = plage.find....

Mettre un fichier dans lequel on peut reproduire ton problème, peut aider à te proposer des solutions.

Bonjour
c'est ce que j'ai fait, bien sûr, car c'est la solution ...mais je vais rechercher pourquoi,, dans le passé,, cela a pu fonctionner ainsi..
merci encore.

Bonjour,

je suis désolé, mais je vais heurter tes croyances. Avec le code pour lequel tu as demandé de l'aide, cela n'a jamais pu fonctionner. Je pense que tu as dû ajouter une instruction dim plage as range dans tes macros qui fonctionnaient, alors que tu avais déjà défini cette variable globalement dans un module. Je ne vois que cette explication.

Si tu souhaites plus d'explication, je t'invite à lire ce document sur la portée des définitions de variables en VBA.

portée des variables en VBA

... c'est vraisemblablement vrai....j'ai oublié comment j'ai pu échafaudé un truc pareil qui , alors , m'a satisfait pleinement..
merci encore pour ton aide ..

Rechercher des sujets similaires à "variable objet nothing"