VBA avec variable et condition

Résolu
GCforEV -  
 GCforEV -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. GCforEV
       
      Super ça fonctionne ! Merci encore :)
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > GCforEV
         
        peux-tu alors marquer la discussion comme résolue?
        0
    2. GCforEV
       
      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 ?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > GCforEV
         
        peut-ê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
        0
      2. GCforEV > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Top ! Merci ! :)
        0