Formule excel

-  

Bonjour

Je voudrais traduire cette formule excel en VBA :

  • Dans la Feuille1 j'ai une liste (n° compte et son Intutilé)
  • Dans la Feuille2, dans la cellule A1, j'ai liste déroulante donc quel est le code VBA de cellule B1 en VBA.

Merci d'avance.

=SIERREUR(RECHERCHEV(C20;'Feuil1'!$E$2:$F$664;2;FAUX);"")

***@***

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur

    bonjour,

    cela peut se faire de plusieurs façons.

    quel est l'objectif de cette traduction?

    1. Bonjour,

      Alors en s'y penchant de plus près, je propose ce code.

      Edit : une petite erreur modifiée. 

      Sub RechercheIntituleCompte()
          Dim ws1 As Worksheet, ws2 As Worksheet  ' Déclaration des variables pour les feuilles
          Dim rechercheValeur As Variant          ' Valeur recherchée (depuis C20)
          Dim cell As Range                       ' Chaque cellule de la plage de recherche
          Dim resultat As String                  ' Résultat de la recherche
      
          ' Définir les feuilles concernées
          Set ws1 = ThisWorkbook.Sheets("Feuil1")   ' Feuille contenant la liste des comptes
          Set ws2 = ThisWorkbook.Sheets("Feuil2")   ' Feuille où l'on fait la recherche
      
          ' Récupérer la valeur entrée dans C20 de Feuil2
          rechercheValeur = ws2.Range("C20").Value
      
          ' Initialiser le résultat par défaut en cas d'erreur
          resultat = ""
      
          ' Parcourir la plage de recherche E2:E664 de Feuil1
          For Each cell In ws1.Range("E2:E664")
              If cell.Value = rechercheValeur Then
                  ' Correspondance trouvée : On récupère la valeur correspondante de la colonne F
                  resultat = cell.Offset(0, 1).Value
                  Exit For  ' On arrête la recherche dès qu'on a trouvé
              End If
          Next cell
      
          ' Afficher le résultat trouvé dans la cellule B1 de Feuil2
          ws2.Range("B1").Value = resultat
      End Sub