Macro pb extractions de données en fonction de criteres situés dans 2 colonnes

matbrasil

XLDnaute Nouveau
bonjour,

Je ne suis pas un champion en VBA mais je me suis lancé. J ai une base de donnée qui contient les elements suivants

colonne B : heure de nego (hh:mm:ss)
colonne C : volume negocié
colonne D : prix negocié
colonne E : courtier qui a acheté
colonne F : courtier qui a vendu

Je souhaite copier dans un fichier de resultats, toutes les negociations realisé par 2 courtiers (qu ils aient acheté ou vendu). Quand c est le courtier acheteur (colonne E) cela fonctionne parfaitement mais qd il trie sur le courtier vendeur l extraction decale tout d une colonne. Je pense que cela provient du fait que je decale a partir de offset (i,0) et quand c est le courtier vendeur il faudrait increment de i-1 mais je n arrive pas a inserer cette condition dans mon code. Si quelqu un arrive a resoudre mon probleme je le remercie GRANDEMENT.
A bientot et merci


Voici mon code

Sub test()
Worksheets("Result" ).Select
Range("A1:H1" ).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Worksheets("RDCD3" ).Activate
x = InputBox("quel courtier" )
y = InputBox("second courtier" )

For Each C In Range(Range("E1" ), Range("F1" ).End(xlDown))
If UCase(C.Value) = x Or UCase(C.Value) = y Then
Do
If Sheets("Result" ).Range("A1" ).Offset(i, 0).Value <> "" Then i = i + 1
Loop Until Sheets("Result" ).Range("A1" ).Offset(i, 0).Value = ""
Sheets("Result" ).Range("A1" ).Offset(i, 0).Value = C.Offset(0, -4).Value
Sheets("Result" ).Range("B1" ).Offset(i, 0).Value = C.Offset(0, -3).Value
Sheets("Result" ).Range("C1" ).Offset(i, 0).Value = C.Offset(0, -2).Value
Sheets("Result" ).Range("D1" ).Offset(i, 0).Value = C.Offset(0, -1).Value
Sheets("Result" ).Range("E1" ).Offset(i, 0).Value = C.Value
Sheets("Result" ).Range("F1" ).Offset(i, 0).Value = C.Offset(0, 1).Value
Sheets("Result" ).Range("G1" ).Offset(i, 0).Value = C.Offset(0, 2).Value
Sheets("Result" ).Range("H1" ).Offset(i, 0).Value = C.Offset(0, 3).Value
End If
Next
Sheets("Result" ).Activate
End Sub
 

ERIC S

XLDnaute Barbatruc
Re : Macro pb extractions de données en fonction de criteres situés dans 2 colonnes

bonjour

a essayer, non testé

derligne= range("E65536").end(xlup).row
if range("F65536").end(xlup).row> derligne then derligne= range("F65536").end(xlup).row
For Each C In Range(Range("E1" ), Range("E"& derligne))
If UCase(C.Value) = x Or UCase(C.Value) = y or UCase(C.offset(0,1).Value) = x Or UCase(C.offset(0,1).Value) = y Then
 

Efgé

XLDnaute Barbatruc
Re : Macro pb extractions de données en fonction de criteres situés dans 2 colonnes

Bonsoir matbrasil,
Je ne suis pas sûr mais je pense que :
Code:
For Each C In Range(Range("E1" ), Range("F1" ).End(xlDown))
Devrait être
Code:
For Each C In Range("E1:F" & Range("F65536" ).End(xlUp)).row step -1
Cordialement

Edit : Bonsoir ERIC S
 
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : Macro pb extractions de données en fonction de criteres situés dans 2 colonnes

Bonsoir Efgé

tu as partiellement raison mais si la dernière ligne remplie en F est inférieure à celle en E cela ne fonctionne pas.

Le step -1 ne sert pas forcément

sans l'avoir testé je proposerais donc :

Code:
derligne= range("E65536").end(xlup).row
if range("F65536").end(xlup).row> derligne then derligne= range("F65536").end(xlup).row
For Each C In Range("E1:"E"& derligne)
If UCase(C.Value) = x Or UCase(C.Value) = y or UCase(C.offset(0,1).Value) = x Or UCase(C.offset(0,1).Value) = y Then
 

Discussions similaires

Réponses
2
Affichages
721
Réponses
7
Affichages
421

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa