VBA avec variable et condition

Résolu/Fermé
GCforEV - 11 mai 2020 à 15:02
 GCforEV - 11 mai 2020 à 18:49
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

yg_be Messages postés 23309 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 novembre 2024 Ambassadeur 1 550
11 mai 2020 à 16:49
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 :)
0
yg_be Messages postés 23309 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 novembre 2024 1 550 > GCforEV
11 mai 2020 à 17:36
peux-tu alors marquer la discussion comme résolue?
0
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
yg_be Messages postés 23309 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 novembre 2024 1 550 > GCforEV
11 mai 2020 à 17:59
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
GCforEV > yg_be Messages postés 23309 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 novembre 2024
11 mai 2020 à 18:49
Top ! Merci ! :)
0