Utilisation de vlookup en VBA

petite question : je voudrais utiliser la fonction vlookup mais je galère :

j'ai deux feuille Feuil1 et Feuil2

je voudrais vérifier sur le contenu ( du texte) de la cellule B10 de la Feuil1 est déja présente dans le tableau de la Feuil2 à la colonne C et si c'est le cas arrêter la macro et mettre un message du type " cette valeur existe déja, vous ne pouvez pas continuer". je pensais utiliser la fonction vlookup mais je cale. si vous avez une piste .

Bonsoir alex62590, le forum,

Un essai avec la fonction "Find"...

Sub recherche()
 Dim plage As Range, valeur, cherche
  valeur = Sheets("Feuil1").Range("B10").Value
  With Sheets("Feuil2")
   Set plage = .Columns("C")
    Set cherche = plage.Find(valeur, lookat:=xlWhole)
     If Not cherche Is Nothing Then
      MsgBox " cette valeur existe déjà, vous ne pouvez pas continuer !": Exit Sub
     Else
      MsgBox valeur & " non trouvé," & Chr(10) & "vous pouvez poursuivre."
     End If
  End With
End Sub

Cordialement,

merci pour la piste je vais tenter de m'en servir ,juste une question sur les variables . normal que deux ne soit pas choisies ??

Bonsoir, merci pour le retour,

une question sur les variables . normal que deux ne soit pas choisies ??

Dim plage As Range, valeur, cherche
         valeur = Sheets("Feuil1").Range("B10").Value
      Set plage = .Columns("C")
    Set cherche = plage.Find(valeur, lookat:=xlWhole)

Les 3 sont bien utilisées, non ?

Cordialement,

merci pour ta proposition ,mais ça ne fonctionne pas dans mon cas .

j'ai une erreur indice ,je vais continuer à chercher pour mon cas particlulier .

merci

bonjour , je reposte mon soucis avec la partie du code qui pose problème,

Sub attributionpreparation()
Feuil1.Activate 'préparation
Feuil2.Activate 'bilan_préparation
 Dim plage As Range, valeur, cherche
 Feuil1.Activate 'préparation
Feuil2.Activate 'bilan_préparation
  valeur = Sheets("Feuil1").Range("B10").Value
  With Sheets("Feuil2")
   Set plage = .Columns("C")
    Set cherche = plage.Find(valeur, lookat:=xlWhole)
     If Not cherche Is Nothing Then
      MsgBox " cette préparation existe déjà, vous ne pouvez pas continuer !": Exit Sub
     Else
If MsgBox("confirmez-vous l'enregistrement de cette préparation pour cet élève?", vbYesNo, "confirmation") = vbYes Then
If Feuil1.Range("J17") = "PREPARATION" And Feuil1.Range("N17") = "Apprentissage" Then
    Feuil2.Range("A50").End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = ActiveCell.Offset(-1, 0) + 1
            ActiveCell.Offset(0, 1) = Feuil1.Range("E35").Value
            ActiveCell.Offset(0, 2) = Feuil1.Range("F17").Value
            ActiveCell.Offset(0, 3) = Feuil1.Range("J17").Value
            ActiveCell.Offset(0, 4) = Feuil1.Range("N17").Value
            ActiveCell.Offset(0, 22) = Feuil1.Range("E29").Value
            ActiveCell.Offset(0, 23) = Feuil1.Range("E31").Value
            ActiveCell.Offset(0, 5) = Feuil1.Range("E19").Value
            ActiveCell.Offset(0, 6) = Feuil1.Range("E21").Value
            ActiveCell.Offset(0, 7) = Feuil1.Range("E23").Value
            ActiveCell.Offset(0, 8) = Feuil1.Range("E25").Value
            ActiveCell.Offset(0, 9) = Feuil1.Range("E27").Value
ElseIf Feuil1.Range("J17") = "REALISATION " And Feuil1.Range("N17") = "Apprentissage" Then
    Feuil2.Range("A50").End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = ActiveCell.Offset(-1, 0) + 1
            ActiveCell.Offset(0, 1) = Feuil1.Range("E35").Value
            ActiveCell.Offset(0, 2) = Feuil1.Range("F17").Value
            ActiveCell.Offset(0, 3) = Feuil1.Range("J17").Value
            ActiveCell.Offset(0, 4) = Feuil1.Range("N17").Value
            ActiveCell.Offset(0, 22) = Feuil1.Range("E29").Value
            ActiveCell.Offset(0, 23) = Feuil1.Range("E31").Value
            ActiveCell.Offset(0, 10) = Feuil1.Range("E19").Value
            ActiveCell.Offset(0, 11) = Feuil1.Range("E21").Value
            ActiveCell.Offset(0, 12) = Feuil1.Range("E23").Value
            ActiveCell.Offset(0, 13) = Feuil1.Range("E25").Value
            ActiveCell.Offset(0, 14) = Feuil1.Range("E27").Value
end if 
end if 
end with

si on peut m'aiguiller ,j'ai une erreur d'indice

Bonsoir alex62590, le forum,

Pourquoi ne pas joindre un fichier exemple (sans données confidentielles) en expliquant le résultat souhaité ?

Tu augmenterais tes chances d'obtenir une réponse adaptée,

Cordialement,

je ne peux pas donner le fichier ,ce que je veux c'est juste que après la saisie du nom dans la cellule E35 de la Feuil1, lorsqu'on demande à attribuer il vérifie dans la Feuil2 qui contient un tableau (en colonne "C") que le nom reporté n'existe pas déja tout simplement .

je voulais utiliser vlookup et savaoir si c'était la bonne méthode.

Bonsoir,

Un exemple ci-joint:

Tu saisis en E35 de la feuille1 puis ENTREE...

16classeur1.xlsm (15.73 Ko)

Cordialement,

Rechercher des sujets similaires à "utilisation vlookup vba"