VBA avec variable et condition

Résolu
Bonjour,

Je suis débutante en VBA, je ne parviens pas à la faire fonctionner :

J'ai un tableau feuille 1 :
A B C
date REF quantité
12/05 102
11/05 101
13/05 103

J'ai un second tableau feuille 2 (extraction) :
A B C
date REF quantité
11/05 101 1
12/05 102 2
14/05 103 3

Je souhaite que les valeurs colonne C feuille 2 s'indique colonne C feuille 1 si
les valeurs colonne A de feuille 1 et 2 correspondent et que les valeurs colonnes B feuille 1 et 2 correspondent alors il faut indiquer la quantité colonne C :

Le problème avec ma macro, c'est qu'elle ne tient pas compte des conditions et colle les quantités pas à côté des bonne refs

Sub subtest()

'Déclaration variable x
Dim x As Integer

For x = 2 To 30

' Condition si les valeurs correspondent

If Range("A" & x) = Sheets("extraction").Range("A" & x) And Range("B" & x) = Sheets("extraction").Range("B" & x) Then

'COLLER les valeurs C

Range("C" & x) = Sheets("extraction").Range("C" & x)

End If

Next
End Sub

Configuration: Windows / Chrome 78.0.3904.87

3 réponses

  1. Contributeur
    bonjour, alors plutôt ainsi:
    Sub subtest()
    'Déclaration variable x
    Dim x As Integer, y As Integer
    For x = 2 To 30
        For y = 2 To 30
    ' Condition si les valeurs correspondent
            If Range("A" & x) = Sheets("extraction").Range("A" & y) And Range("B" & x) = Sheets("extraction").Range("B" & y) Then
                'COLLER les valeurs C
                Range("C" & x) = Sheets("extraction").Range("C" & y)
            End If
        Next y
    Next x
    End Sub
    1. Super ça fonctionne ! Merci encore :)
    2. Contributeur
      @GCforEVpeux-tu alors marquer la discussion comme résolue?
    3. Oui bien-sûr juste une dernière question,
      Peut-être pourriez vous m'aider pour la suite, je souhaitais ajouter un else :

      Insérer une ligne feuille 1, et coller la ligne de feuille 2 (extraction) qui ne remplie pas la condition . Est-ce faisable ?
    4. Contributeur
      @GCforEVpeut-être ainsi:
      Sub subtest()
      Dim x As Integer, y As Integer, lignevide As Long, trouve As Boolean
      lignevide = 31
      For y = 2 To 30
          trouve = False
          For x = 2 To 30
              If Range("A" & x) = Sheets("extraction").Range("A" & y) And Range("B" & x) = Sheets("extraction").Range("B" & y) Then
                  Range("C" & x) = Sheets("extraction").Range("C" & y)
                  trouve = True
                  Exit For
              End If
          Next x
          If Not trouve Then
              Range("C" & lignevide) = Sheets("extraction").Range("C" & y)
              lignevide = lignevide + 1
          End If
      Next y
      End Sub