Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Conversion de formules XL imbriquées en VBA

Jacques SPAGNOL

XLDnaute Nouveau
Bonjour le forum, je bute sur cette conversion de formule en VBA ( qui fonctionne en XL) pour me faire un retour sur un numéro de colonne
=RECHERCHEX('Semaine'!C3;'BdD2023'!62:62;COLONNE('BdD2023'!62:62))
edit
en fait la formule est destinée à alimenter une variable dans une macro et pas une cellule d'où mon petit problème

merci d'avance
 
Dernière édition:
Solution
Cela dit en nommant la cellule et la plage c'est plus simple :
VB:
Sub RechercheXColonne()
    Dim valeurTrouvee As Variant
    Sheets("Semaine").Range("C3").Name = "valeurRecherchee" 'cellule nommée
    Sheets("BdD2023").Range("62:62").Name = "plageRecherche" 'plage nommée
    valeurTrouvee = Application.Evaluate("XLOOKUP(valeurRecherchee,plageRecherche,COLUMN('BdD2023'!2:2))")
    Debug.Print valeurTrouvee
End Sub

Jacques SPAGNOL

XLDnaute Nouveau
Re,
en voulant intégrer la réponse proposée avec quelques variables je suis confronté à une :
" incompabilité de type"
un avis ?
Cdt Jacques

VB:
Sub RechercheXColonne()

    Dim valeurRecherchee As Integer     ' numéro de semaine
    Dim plageRecherche As Range
    Dim plageValeursRetour As Range
    Dim valeurTrouvee As Integer           'numéro de colonne 
    
    ' Définir la valeur à rechercher
    valeurRecherchee = Sheets("Semaine").Range("C3").Value
    
    ' Définir la plage de recherche (ligne 62)
    Set plageRecherche = Sheets("BdD2023").Range("62:62")
    
    ' Définir la plage contenant les valeurs de retour (ligne 2)
    Set plageValeursRetour = Sheets("BdD2023").Rows(2)

'    ' Effectuer la recherche X
'    valeurTrouvee = Application.Evaluate("XLOOKUP(Semaine!C3,'BdD2023'!62:62,COLUMN('BdD2023'!2:2))")
 
    ' Effectuer la recherche X
    valeurTrouvee = Application.Evaluate("XLOOKUP(valeurRecherchee ,plageRecherche ,COLUMN('BdD2023'!2:2))")
  

Debug.Print valeurTrouvee
End Sub
 

job75

XLDnaute Barbatruc
Bonjour,

Il faut aussi que la formule à évaluer soit interprétable donc au lieu de :
VB:
valeurTrouvee = Application.Evaluate("XLOOKUP(valeurRecherchee ,plageRecherche ,COLUMN('BdD2023'!2:2))")
écrivez :
VB:
valeurTrouvee = Application.Evaluate("XLOOKUP(" & valeurRecherchee & "," & plageRecherche.Address & ",COLUMN('BdD2023'!2:2))")
A+
 

job75

XLDnaute Barbatruc
Cela dit en nommant la cellule et la plage c'est plus simple :
VB:
Sub RechercheXColonne()
    Dim valeurTrouvee As Variant
    Sheets("Semaine").Range("C3").Name = "valeurRecherchee" 'cellule nommée
    Sheets("BdD2023").Range("62:62").Name = "plageRecherche" 'plage nommée
    valeurTrouvee = Application.Evaluate("XLOOKUP(valeurRecherchee,plageRecherche,COLUMN('BdD2023'!2:2))")
    Debug.Print valeurTrouvee
End Sub
 

Jacques SPAGNOL

XLDnaute Nouveau
Bonjour Job75 et le forum, et surtout merci pour votre apport ça me permet d'avancer dans mon projet mais aussi d'acquérir de nouvelles connaissances.
cdt Jacques
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…