If Not CelluleTrouvee Is Nothing Then renvoie une valeur nulle

Bonjour à tous,

Dans mon fichier, l'utilisateur va remplir un userform, à l'aide d'un combobox je récupère le nom du fournisseur.

Ensuite, je récupère ce fournisseur (colonne A) pour aller chercher dans ma feuille "Données" son numéro de fournisseur (colonne B) afin de compléter mon tableau.
Lorsque la recherche de fournisseur se lance, il le retrouve bien dans Données, par contre il me renvoie une valeur nulle du N° fournisseur et je ne comprend pas d'où cela vient.

Auriez-vous une idée de la provenance du problème?

Private Sub Enregistrer_Click()

Dim Ligne As Integer
Dim Ligneprec As Integer
Dim NumClaim As String
Dim num As Integer
Dim numéro As String
Dim CelluleTrouvee As Range
Dim fournisseur As String
Dim numfournisseur As String

Worksheets("Fournisseurs").Activate

'Placer le nouvel enregistrement à la première ligne de tableau non vide
Ligne = Sheets("Fournisseurs").Range("a65536").End(xlUp).Row + 1
Ligneprec = Ligne - 1 'Ligne précédent Ligne
NumClaim = (Range("A" & Ligneprec).Value) 'Récup N° Frn
num = Right(NumClaim, 3) 'Récup des 3 dernier digit
num = num + 1
numéro = Format(num, "000")

'Remplir feuille Réclamations fournisseurs
Range("E" & Ligne).FormulaLocal = "=AUJOURDHUI()"
Range("B" & Ligne).Value = Month(Date)
Range("C" & Ligne).Value = Year(Date)
Range("D" & Ligne).Value = Format(Date, "WW")
Range("A" & Ligne).Value = "Frn-" & Year(Date) & "-" & numéro
Range("A" & Ligne).Font.Color = RGB(91, 155, 213)
Range("A" & Ligne).Font.Underline = xlUnderlineStyleSingle
Range("F" & Ligne).Value = TextBox1 'N° Commande/Livraison
Range("G" & Ligne).Value = TextBox2 'Référence pièce
Range("H" & Ligne).Value = TextBox3 'Désignation
Range("I" & Ligne).Value = ComboBox1 'Fournisseur
fournisseur = ComboBox1.Value
MsgBox (fournisseur)

With Worksheets("Données")
Set CelluleTrouvee = Range("A2:A100").Find(fournisseur, LookIn:=xlValues, lookat:=xlWhole)
If Not CelluleTrouvee Is Nothing Then numfournisseur = CelluleTrouvee.Offset(0, 1).Value
MsgBox (numfournisseur)
End With


Range("J" & Ligne).Value = numfournisseur 'N° Fournisseur
Range("K" & Ligne).Value = TextBox4 'Problème
Range("L" & Ligne).Value = TextBox5 'Qté Refusée
Range("M" & Ligne).Value = TextBox6 'Qté Dérogée

'Ajuster largeur colonnes
With Sheets("Fournisseurs")
Range("A:J").Columns.AutoFit
End With

End Sub

Bonjour,

La feuille "Données" n'est pas la feuille active?

Ajouter donc un point devant Range("A2:A100").Find, comme ceci :

With Worksheets("Données")
    Set CelluleTrouvee = .Range("A2:A100").Find(fournisseur, LookIn:=xlValues, lookat:=xlWhole)
    If Not CelluleTrouvee Is Nothing Then 
        numfournisseur = CelluleTrouvee.Offset(0, 1).Value
        MsgBox (numfournisseur)
    Else
        MsgBox "Fournisseur : " & fournisseur & " non trouvé"
    End If
End With

IDEM pour :

With Sheets("Fournisseurs")
    .Range("A:J").Columns.AutoFit
End With

Salut !

T'es sur qu'il trouve à chaque fois ton "fournisseur" ?

Car t'as un "If Not CelluleTrouvee Is Nothing" mais s'il ne trouve pas ton fournisseur ?

Il ne va pas faire ton "numfournisseur = CelluleTrouvee.Offset(0, 1).Value" et par conséquence il va te renvoyer dans ton MsgBox la valeur de ta variable "numfournisseur" qui n'est pas défini, soit "Null".

Bonjour;

Tenders_vba, oui j'ai mis un MsgBox exprès afin de vérifier qui trouvait bien le fournisseur.

Pijaku, cela fonctionne parfaitement merci!

Le .Range permet "d'activer" la feuille?
Je ne connaissais pas et penser qu'en utilisant With elle s'activait.

Quand tu utilises un bloc With, les objets (dans ce bloc) qui se réfèrent à l'objet du bloc comportent un point devant.

En fait, c'est comme si tu "coupais" la syntaxe : Sheets("Feuil1").Range("A1").Value

Exemple 1 :

With Sheets("Feuil1").Range("A1")
    MsgBox .Value
End With

Exemple 2 :

With Sheets("Feuil1")
    MsgBox .Range("A1").Value
End With

Un autre exemple avec 1 classeur comportant 2 feuilles (Feuil1 et Feuil2) :

Sheets("Feuil2").Activate 'se positionne sur la Feuil2
With Sheets("Feuil1")
    'se rapporte à la Feuil1 :
  .Range("G3").Value = "toto"
    'se rapporte à la Feuil2 (feuille active)
    Range("G3").Value = "titi"
End With
Rechercher des sujets similaires à "celluletrouvee nothing then renvoie valeur nulle"