Excel 2016 - Erreur 1004 - Fonction Find

Bonjour .

je suis en cours de réalisation d'un fichier sur excel 2016.

Je rencontre une erreur que je n'arrives pas à résoudre.

Voici le code responsable:

'******************************************************************************************************************************
'**************************************Changement du contenu du champ FORMATION du formulaire******************************
'************************************************************************************************************************************

Private Sub ComboBoxFormMat_Change()

'************************************** VARIABLES **********************************************************************
'************************************************************************************************************************************
Dim dernierLigneId As Long
Dim LastLigForm As Long
Dim nomFormCh As Variant
Dim nomFormTr As Range
Dim CptLig As Long
Dim IDFormationTrouvee As Range
Dim ligneCelluletrouve As Long
Dim ValArret As Integer
'************************************** INITIALISATIONS DE VARIABLE **************************
'************************************************************************************************************************************
nomFormCh = CVar(Me.ComboBoxFormMat.Value)
Sheets("Id").Activate

'************************************** INITIALISATIONS DE VARIABLE '*************************************************************************************************************
If nomFormCh = "" Then 'SI LE NOM CHERCHE EST VIDE ALORS

    Exit Sub           'SORTIE DE LA PROCEDURE

Else                   'SINON

    LastLigForm = Sheets("Id").Range("B1048576").End(xlUp).Row 'RECUPERATION DU NUMERO DE DERNIERE LIGNE DU TABLEAU

    With Range("B2:B" & LastLigForm)

        Set nomFormTr = .Find(CVar(Me.ComboBoxFormMat.Value))
            If Not nomFormTr Is Nothing Then
                    ligneCelluletrouve = nomFormTr.Row
                    modifNomForm = nomFormTr
                    volTotHForm = Cells(ligneCelluletrouve, 3)
                    idForm = Cells(ligneCelluletrouve, 1)
                    etatChpSup = 1
                    CptLig = LastLigForm
                    'Me.ComboBoxMatiere.ListIndex = -1
            End If
    End With

End If

End Sub

Le debogeur s'arrete à la ligne suivante:

Set nomFormTr = .Find(CVar(Me.ComboBoxFormMat.Value))

et me donne ce message d'erreur.

bug vba

Je penses que c'est le typage donné au Find qui ne va pas mais je ne sais pas .

Merci par avance si vous avez des lumières à m'apporter.

bug vba

Bonjour,

C'est sur que Dim nomFormTr As Range ... range n'est pas adapté.

Il faut tenir compte du contenu possible de ComboBoxFormMat.

nomFormCh = CVar(Me.ComboBoxFormMat.Value)

Est-ce des chiffres, du texte ...

ric

Bonjour,

Si le contenu est du texte, donc Dim nomFormTr As String.

ric

Bonjour à tous,

non, Range.Find retourne bien un Range. nomFormTr As Range est correct.

Rien à voir avec ton erreur mais avec .Find précise toujours les paramètres lookIn:= et LookAt:= sinon tu récupères ceux de la dernière recherche utilisée (en manuel avec Ctrl+F aussi), et tu cherches Contient au lieu de tout.

eric

nomFormTr est un objet, donc le typage en Range est normal.

Mais je ne comprend vraiment pas quel est le problème , nomFormTr reçoit bien une valeur qui le conduit à Nothing et donc devrait être traité sans problème

bug vba nothing

Re,

si c'est un String que tu cherches pourquoi CVar et non CStr ?

Quelle est la valeur de CVar(Me.ComboBoxFormMat.Value) au moment de l'erreur ? Et l'adresse de la plage de recherche ?

nomFormTr reçoit bien une valeur qui le conduit à Nothing

tu le vois à Nothing car il n'a pas été initialisé suite à l'erreur, pas parce que tu n'as rien trouvé.

Bonjour,

Je ne suis pas pro en vba c'est sur mais je ne comprend pas pourquoi ne pas utiliser un simple:

nomFormCh = ComboBoxFormMat.Value

Si c'est juste pour récupérer la valeur contenue dans la combobox ?

Ensuite si c'est juste pour utiliser la valeur de nomFormCh pour vérifier le que nom existe bien

dans la sélection de la comboboxFormMat autant directement faire un :

If comboboxFormMat.listindex=-1 then
exit sub

Ce sera sans doute mieux que de vérifier uniquement que la valeur est = à ""

surtout si une personne rentre les infos dans la combobox au lieu de selectionner l'info.

Merci Eric,

Pour les surcharges de typage , c'etais un test par depit et ras le bol....

Le plus drôle à l'heure actuelle, c’est que je viens de fermer Excel et le re-ouvrir ...et hop , plus de problème ...

Donc , je vais tenter de recoller les derniers cheveux qui me reste et essayé de rattrapé le temps perdu .

Encore merci Eric et Xmenpl.

Belle journée à vous.

PS: Xmenpl, tu as raison pour le IF mais par contre , l'objet permet de récupérer moult information dont j'ai besoin!!!

Pas de souci c'était juste pour faire avancer le shimili… shimilibilick

C'est marrant, hier je me suis retrouvé avec des erreurs étranges avec .find aussi.

Erreur sans n° ni message autre que vba (ou execl) s'est arrêté et le .find en jaune.

Un simple F5 relançait et passait sans erreur, pour recommencer plus tard (.find dans une boucle).

Il a fallu que je reboote pour retrouver un fonctionnement normal.

A se demander si une maj récente n'a pas mis le b...l qq part...

erin

Rechercher des sujets similaires à "2016 erreur 1004 fonction find"