XL 2010 ThisWorkbook n'est pas défini ??

kopros

XLDnaute Nouveau
Bonjour à tous !

Je suis vraiment pas à l'aise avec le VBA, c'est mon premier projet Excel et c'est galère sur galère !
Cette fois-ci j'arrive pas à me dépatouiller tout seul, j'aurais besoin de l'aide de quelqu'un qui s'y connaît un peu.

Alors c'est peut-être un truc idiot, mais depuis hier je bloque sur ce problème :
VB:
Sub Bouton1_Cliquer()
    Call ThisWorkbook.set_one_box(1)
End Sub
Ca c'est ma macro de test qui ne contient que ça et qui se déclenche lors du clic sur un bouton.

Et voici ma fonction pour les tests :
VB:
Public Function set_one_box(ByVal index_box As Integer)
    Dim thisWB As Workbook
    MsgBox ("A")
    thisWB = ThisWorkbook
    MsgBox ("B")
End Function

J'ai bien mon message "A", et ensuite rien ne va plus : variable objet ou variable de bloc with non définie
Mais comment ThisWorkbook peut ne pas être défini ??

Alors que mon cerveau crie encore WTF, je teste tout un tas de choses, notamment ça :
Workbooks("mon_classeur.xlsm")
et ça fait pareil.

J'en suis au point que je sais plus quoi tester (j'ai essayé en mettant la fonction public ou private, en l'appelant de différentes façon, etc., rien)

Merci à qui voudra bien m'aider ! :)


EDIT :
J'ai oublié une petite subtilité, le classeur sur lequel j'ai mon problème est ouvert par un autre, avec une ligne qui ressemble à ça :
VB:
    Workbooks.Open Filename:=nomFichier

J'ai aussi essayé de l'ouvrir "normalement" (à la main quoi) sans cette ligne, et bien c'est pareil il reconnaît plus Workbooks :confused:
 
Dernière édition:

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Avec ce que j'ai compris, voici ma proposition (macro qui marche sur mon PC)
VB:
Public Function set_one_box(ByVal index_box As Integer)
    Dim thisWB As Workbook
    Set thisWB = ThisWorkbook
    Select Case index_box
    Case 1
    MsgBox ("A")
    Case 2
    MsgBox ("B")
    End Select
End Function
Sub Bouton1_Cliquer()
Call set_one_box(1) ' affiche Message A
'ligne pour test
'Call set_one_box(2) ' affiche Message B
End Sub
 

kopros

XLDnaute Nouveau
NICKEL ! Ca fonctionne !! Un grand MERCI à toi ! :)

(Ce qui suit est destiné à ceux qui auraient le même problème à l'avenir et qui lisent en diagonale)
En résumé ce que j'ignorais c'est qu'il faut utiliser SET pour attribuer un objet à une variable
Et si j'avais songé que ça pouvait être un problème d'attribution j'aurais trouvé cette page.

Encore merci à Yurperqod !
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 070
Membres
103 453
dernier inscrit
Choupi