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

XL 2016 Fonction equiv en VBA

  • Initiateur de la discussion Initiateur de la discussion KTM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

KTM

XLDnaute Impliqué
Salut chers tous
Je voudrais élaborer une macro pour lancer une recherche dans une base
j'ai fais ceci mais apparemment c'est mal élaboré ( Je suis apprenti VBA)
Pouvez vous me donner un coup de pouce ?
NB : (On peut le faire avec la combinaison index Equiv mais je voudrais essayé VBA)

Sub recherche()
Dim x As Integer
Set x = Application.Match(Range("G2"), Range("A1:A100"), 0)
If Range("A" & Rows.Count).End(xlUp).Row > 2 Then
If Not x Is Nothing Then
Range("G3").Value = Cells(x, 2)
Range("G4").Value = Cells(x, 3)
Range("G5").Value = Cells(x, 4)
End If
End If
End Sub
 

Pièces jointes

Bonjour.
VB:
Sub Recherche()
   Dim X As Variant
   X = Application.Match(Range("G2"), Range("A1:A100"), 0)
   If Range("A" & Rows.Count).End(xlUp).Row > 2 Then
   If Not IsError(X) Then
      Range("G3").Value = Cells(X, 2)
      Range("G4").Value = Cells(X, 3)
      Range("G5").Value = Cells(X, 4)
      End If
   End Sub
L'instruction Set ne peut être utilisée que pour initialiser un objet, ou à la rigueur un Variant, comme devant se référer à un autre objet.
 
J'obtiens une erreur de compilation
on dirait que ma variable x est mal definie


Set x = Application.Index(Range("A1:A100"), Application.Match(Range("G2"), Range("A1:A100"), 0))
 
Grand merci c'est très Exact
 
Bonsoir le fil, KTM, Calvus, Dranreb

Juste pour le fun, une autre syntaxe possible
VB:
Sub Recherche_Bis()
Dim X As Variant
With Application
  .ScreenUpdating = False
  X = .Match(Range("G2"), Range("A1:A100"), 0)
  If Range("A" & Rows.Count).End(xlUp).Row > 2 Then
  If Not IsError(X) Then
  [G3].Resize(3) = .Transpose(Cells(X, 2).Resize(, 3))
  End If
  End If
End With
End Sub

EDITION:
Après la lecture du dernier message celui de job75 (que je salue au passage)
On peut simplifier cette ligne comme ceci
[G3:G5]=.Transpose(Cells(X, 2).Resize(, 3))
 
Dernière édition:
Phenomenal Staple 1600
 
Bonsoir tout le monde,

En VBA il est souvent plus simple d'utiliser les formules Excel :
VB:
Sub Recherche()
With [G3:G5]
    .Formula = "=IFERROR(VLOOKUP(G$2,A$1:D$100,ROW()-1,0),"""")"
    .Value = .Value
End With
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
427
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
2
Affichages
332
Réponses
3
Affichages
834
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…