VBA : retrouver valeurs et les importer

  • Initiateur de la discussion Initiateur de la discussion boby63
  • 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 !

boby63

XLDnaute Nouveau
Bonjour
Ci-joint en feuille1 une extraction (anonymisée) d'un logiciel
En feuille2 une extraction brute (régulière) d'une page web
Je souhaiterai, par vba svp, aller chercher dans la feuille 2, colonneD, les tarifs et les attribuer à la colonne M de la feuille1.
Les "clés uniques" se trouvent en colonne I de la feuille1 et A de la feuille2
1. Seuls les lignes de la feuille 1 ayant "vrai en colone U doivent se mettre à jour.
2. Si "vrai" mais ne trouve pas de correspondance (c'est le cas dans ce fichier une fois je crois), ne rien faire sur cette ligne.
Merci d'avance
 

Pièces jointes

Bonsoir boby63,

Voici une possibilité
VB:
Sub MàJPrix()
  Dim DLig As Long, Lig As Long
  Dim Prix As Double, Ref As Integer
  ' Avec la feuille nommée
  With Sheets("Logiciel")
    ' Dernière ligne de la feuille
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 2 To DLig
      ' Vérifier si la colonne tt20 est vrai
      If .Range("U" & Lig).Value = True Then
        ' Récupérer le numéro de ref (si j'ai bien tout compris)
        Ref = .Range("I" & Lig).Value
        ' Trouver le prix dans la feuille Net et l'inscrire
        Prix = vFindR("Net", "A:A", Ref, "D")
        If Prix <> 0 Then
          ' Correspondance trouvée, inscrire le prix
          .Range("M" & Lig).Value = Prix
          ' Mettre la cellule en vert
          .Range("M" & Lig).Interior.ColorIndex = 43
        Else
          ' Pas de correspondance, mettre la cellule en orange pour l'indiquer
          .Range("M" & Lig).Interior.ColorIndex = 44
        End If
      End If
    Next Lig
  End With
End Sub

Function vFindR(sFeuil As String, sCol As String, Quoi As Variant, ColR As String)
  Dim LigFind As Long
  ' sFeuil = nom de la feuille dans laquelle chercher
  ' sCol = Colonne de recherche
  ' Quoi = Valeur à chercher
  ' ColR = Colonne de retour de la valeur
  vFindR = "": LigFind = 0
  ' Effectue la recherche
  On Error Resume Next
  With Sheets(sFeuil).Range(sCol)
    LigFind = .Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                    MatchCase:=False, SearchFormat:=False).Row
    If Err.Number = 0 Then
      vFindR = Sheets(sFeuil).Range(ColR & LigFind).Value
    Else
      vFindR = 0
    End If
  End With
  On Error GoTo 0
End Function

Code à mettre dans un module de ton classeur

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

V
Réponses
17
Affichages
2 K
F
Réponses
2
Affichages
503
F
M
Réponses
3
Affichages
2 K
M
Retour