Module de classe

Bonjour à toutes et à tous,

Je fais appel à votre aide car je suis bloqué sur une macro.

Je veux utiliser une fonction pour ne pas la faire apparaitre dans Excel. Je veux qu'elle soit "Publique" et l'utiliser uniquement dans mon projet VBA. Suite à des recherches je pris connaissance des modules de classe.

La fonction se trouve dans le module de classe, ne pose pas de problème car elle fonctionne correctement.

Cependant pour l’utiliser dans module standard, la déclaration de la variable associée "Dim vDernierCase As New DernierCase" provoque "l'Erreur de compilation : Type défini par l'utilisateur non défini" quelque soit le nom donné.

Est ce que cela dépend de la version d'Excel ou de la façon de déclarer la variable ?

D'avance merci pour votre aide.

Nazée

9machine.xlsm (14.42 Ko)

Bonjour nazee,

Oulala... beaucoup de confusion dans ce que vous dites vos recherches sont erronées ou je n'ai pas compris votre logique

Si vous voulez vous servir d'une fonction (pourquoi pas) vous la mettez simplement dans le même module standard

Option Explicit

'La dernière ligne utilisée
Sub xPLigne()
    Dim vDernierLig As Long
    vDernierLig = xFDernierLig(Feuil1, "B")
    MsgBox "La dernière ligne non vide de la colonne B est : " & vDernierLig
End Sub

'La dernière ligne non vide de la colonne
Public Function xFDernierLig(vWS As Worksheet, vCol As String) As Long
    'Retourne le numéro de la dernière ligne non vide de la colonne
    xFDernierLig = vWS.Cells(vWS.Rows.Count, vCol).End(xlUp).Row
End Function

A+

Bonjour,

Votre classe se nomme Classe1 n'est-il pas ?

donc :

'Dim vDernierCase As New DernierCase

'La dernière ligne utilisée
Sub xPLigne()
    Dim vDernierLig As Long
    Dim vDernierCase As Classe1
    Set vDernierCase = New Classe1
    vDernierLig = vDernierCase.xFDernierLig(Feuil1, "B")
    MsgBox "La dernière ligne non vide de la colonne B est : " & vDernierLig
End Sub

Même si j'en ai pas trouvé toute la subtilité...

Bonjour Jean-Paul, JExceL2fr,

Merci à vous deux.

Effectivement voua avez raison Jen-Paul, la classe n'existe pas.

Le but est d'utiliser la fonction uniquement dans le projet VBA et non pas pouvoir appeler cette fonction dans une feuille quelconque d'Excel.

Encore pour votre aide.

Excellente journée !

Nazée

Bonjour,
Tardivement !
Remplacer Public par Private (function). ?
Cdlt.

Rechercher des sujets similaires à "module classe"