Erreur "91" : Object variable or with block variable not set

  • Initiateur de la discussion Initiateur de la discussion klm1234
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

klm1234

Guest
Bonjour la communauté!

Voilà je me suis fait une petite macro qui permet de me retourner l'addresse d'une cellule lorsqu'elle correspond à un code produit (imo : un texte, peu importe).

Voici donc le code :

Code:
Private Function Finder(ByVal prcode$) As Range
    Dim sAdd$
    Dim Counter
    
    Counter = 0
        
    
            If (prcode <> "") Then
                For Each cel In ActiveSheet.Range("D:D").Cells
                    If (Trim(UCase(cel.Value)) = Trim(UCase(prcode))) Then
                        Finder = cel.Address
                        Counter = Counter + 1
                    End If
                Next
'                    sAdd = Replace(sAdd, "$", "")
                        Select Case Counter
                            Case 0
                                GoTo 1
                            Case Else
                                Exit Function
                        End Select
            Else: GoTo 2
            End If
        Exit Function
1 MsgBox "A wrong product code was specified in Finder() or no product code found.", vbCritical, "Error"
    Exit Function
2 MsgBox "An unhandled error occured in Finder().", vbCritical, "Error"
    Exit Function
End Function

Si quelqu'un pouvait m'éclairer sur le problème... L'erreur advient lorsque j'essaie d'assigner l'adresse de la cellule à la fonction "Finder()", ligne 11. J'ai fait quelque recherche, j'ai lu des trucs sur les variables publique, l'assignation d'une liaison "tardive" ou ce genre d'explication qui ne m'as pas été très utile pour l'instant... Je m'en remet donc à vous, Ô exceleurs de talents!
 
Re : Erreur "91" : Object variable or with block variable not set

Merci de ta réponse!
Apparemment le problème à l'air d'être régler pour cette macro, là c'est la deuxième étape qui marche pas 😛

Code:
Private Function ValidateForm(ByVal prcode$) As Boolean

    'Check CNumber
    If (Finder(prcode).Value) = "" Then
            MsgBox "The customer number is empty. Please specify one.", vbExclamation, "Error - Unvalid form"
        ValidateForm = False
        Exit Function
    End If
    
    ValidateForm = True

End Function

Ligne 4, le message d'erreur est "Invalid Qualifier"... ??


Merci encore!
 
Re : Erreur "91" : Object variable or with block variable not set

Re,

Normal, car maintenant ta fonction Finder te renvoie un String.
Donc sur ta ligne 4, Finder(prcode).Value renvoie une erreur, car un "String ne possède pas de .Value".
N'ayant qu'une vision limitée du problème (des bouts de codes à droite à gauche), je dirais essaye en enlevant le .Value, la macro ne devrait plus buger, mais je ne suis vraiment pas sur du bon fonctionnement de celle-ci (qu'elle te renverra ce que tu attends)...

En effet, ton ancienne version de la fonction Finder te renvoyait une cellule. Dans cette macro ValidateForm, tu as besoins de la valeur de la cellule retournée par la fonction Finder.

Hors, ta nouvelle fonction Finder te renvoie une adresse de cellule.

a+
 
Dernière édition:
Re : Erreur "91" : Object variable or with block variable not set

Je viens de revoir ma macro et c'est bon tout fonctionne, et dire que j'ai faillis m'énerver... Des fois à tête reposer on y voit plus clair!!

Merci encore mille fois, topic clos!
 
Re : Erreur "91" : Object variable or with block variable not set

Bonjour,

Etant donné que finder retourne un objet Range, mettre:

set Finder=cell

Souci selon moi, vous êtes dans un boucle et la fonction retourne déjà une valeur?, je ne suis pas sûr que ça continue la boucle.

Voici qq pistes:

Pour avoir le nombre d'éléments dans la colonne:

Code:
n = WorksheetFunction.CountIf(Range("D:D"), prcode)

Et pour avoir la cellule contenant une valeur:

Code:
dim C as range

set C=range("D:D").find(prcode,,xlvalues,xlwhole)

Edit: j'arrive trop tard

cdt

smotty
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

C
Réponses
1
Affichages
1 K
Cattleya97
C
Y
Réponses
4
Affichages
1 K
yeti_yeti
Y
S
Réponses
17
Affichages
3 K
W
K
Réponses
6
Affichages
1 K
klm1234
K
A
Réponses
10
Affichages
5 K
Compte Supprimé 979
C
A
Réponses
8
Affichages
1 K
Angy1105
A
M
Réponses
6
Affichages
4 K
M
Retour