Microsoft 365 RechercheV en VBA

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 !

nikholas928

XLDnaute Nouveau
Bonjour à la communauté !

Très bonne année à tous.
Je fais appelle à vous dans le but de développer en VBA une rechercheV mais je galère dans les arguments à utiliser dans l'environnement.
Vous trouverez ci-joint un fichier dans lequel je dois intégrer sur l'onglet GL le type de pièces correspondant au code en question (colonne B de mon onglet). L'équivalence se trouve dans l'onglet Codes SAP.
Est-ce quelqu'un aurait la gentillesse de m'indiquer un algorithme qui me permette de déboucler ce point adapté à mon fichier ?

Merci beaucoup pour votre aide 🙂
 

Pièces jointes

Bonjour Nikholas,
Un essai en PJ avec :
VB:
Sub InsèreType()
    Dim DL%, f$
    Application.ScreenUpdating = False              ' Ecran figé
    DL = Range("A65500").End(xlUp).Row              ' Dernière ligne utilisée
    f = "=RECHERCHEV(B2;'Codes SAP'!A:B;2;FAUX)"    ' Formule à appliquer
    Range("C2:C" & DL).FormulaLocal = f             ' Implémentation de la formule
    Range("C2:C" & DL) = Range("C2:C" & DL).Value   ' Remplacement formule par valeurs
    Columns(3).Columns.AutoFit                      ' Largeur colonne automatique
End Sub
 

Pièces jointes

Bonjour,

Pas sur d'avoir tout compris dans ta demande.
Si c'est la désignation que tu souhaites reporter en fonction du type de pièce alors
C2 = INDEX('Codes SAP'!$B$2:$B$75;EQUIV(B2;'Codes SAP'!$A$2:$A$75;0)) puis tirer vers le bas.

1673618111086.png


et si tu travailles en tableau structuré Onglet CodeSAP = tableau1, Onglet GL=tableau2, la formule devient :
=INDEX(Tableau1[Désignation];EQUIV([@[Type de pièce]];Tableau1[Type];0))

1673618473893.png


@+ Lolote83
 
Dernière édition:
Bonjour.
En VBA, pour les recherches, la voie royale c'est le Dictionary, type d'objet défini en fichier scrrun.dll, bibliothèque Scripting, référence "Microsoft Scripting Runtime". Faies moi plaisir: Utilisez le en liaisons anticipées et non pas tardives, son but étant de chercher non pas dans son code les méthodes qu'on demande à y éxécuter mais des clés de données de l'application !
Il y a aussi la Collection VBA. Elle se limite aux clés String, mais qu'on ne peut y retrouver à moins qu'elles ne soient notées dans chaque élément, mais en revanche y permet aussi un accès positionnel.

Module Feuil1 (GL) :
VB:
Option Explicit
Private Sub Worksheet_Activate()
   Dim Dic As New Dictionary, T(), L&
   T = Feuil5.[A2:B2].Resize(Feuil5.[A1000000].End(xlUp).Row - 1).Value
   For L = 1 To UBound(T, 1)
      Dic(T(L, 1)) = T(L, 2)
      Next L
   T = Me.[B2].Resize(Me.[B1000000].End(xlUp).Row - 1).Value
   For L = 1 To UBound(T, 1)
      If Dic.Exists(T(L, 1)) Then
         T(L, 1) = Dic(T(L, 1))
      Else
         T(L, 1) = "(inexistant)"
         End If
      Next L
   Me.[E2].Resize(UBound(T, 1)).Value = T
   End Sub
N'oubliez pas de cocher la référence Microosoft Scripting Runtime sinon le type défini par l'utilisateur Dictionary ne sera pas défini.
 
Dernière édition:
Bonjour Dranreb,
Le cas échéant, ici, un dictionnary serait il plus simple que ces deux lignes de codes ?
VB:
f = "=RECHERCHEV(B2;'Codes SAP'!A:B;2;FAUX)"    ' Formule à appliquer
Range("C2:C" & DL).FormulaLocal = f             ' Implémentation de la formule
 
Bonjour Nikholas,
Un essai en PJ avec :
VB:
Sub InsèreType()
    Dim DL%, f$
    Application.ScreenUpdating = False              ' Ecran figé
    DL = Range("A65500").End(xlUp).Row              ' Dernière ligne utilisée
    f = "=RECHERCHEV(B2;'Codes SAP'!A:B;2;FAUX)"    ' Formule à appliquer
    Range("C2:C" & DL).FormulaLocal = f             ' Implémentation de la formule
    Range("C2:C" & DL) = Range("C2:C" & DL).Value   ' Remplacement formule par valeurs
    Columns(3).Columns.AutoFit                      ' Largeur colonne automatique
End Sub
Ta macro est parfaite !
Merci beaucoup @sylvanu
 
- 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
32
Affichages
386
Réponses
12
Affichages
701
  • Question Question
Microsoft 365 Recherche v + VBA
Réponses
3
Affichages
2 K
Retour