Problème de VLOOKUP en VBA

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

mimy

XLDnaute Occasionnel
Bonjour à tous,

J ai crée une macro qui transfert des lignes d une feuille vers une autre feuille sous certaines conditions.
- première condition: si le P&L est inférieur à -15%, je transfère dans la ligne dans la feuille 3
- deuxième condition: si le P&L en euro est inférieur à -150 000 , je transfère la ligne dans la feuille 3
( P&L en euro = (dernier cours - prix d achat)*quantite/valeur de la devise correspondante dans la feuille 2)

Pour la première condition ça marche, mais pour la deuxième condition non. Je pense que c'est un problème de vlookup dans le code vba.

De plus, je voudrais insérer dans la feuille 3 une colonne "P&L en euro" avec le calcul correspondant. Cette colonne je voudrais qu'elle se situe avant la colonne "P&L", soit en colonne F de la feuille 3 et la colonne "P&L" en colonne G de la feuille 3. Je ne sais pas si c'est possible de faire ca.

Je vais vous joindre mon fichier pour mieu comprendre.

Merci de votre aide!!!!
 

Pièces jointes

Re : Problème de VLOOKUP en VBA

Bonjour mimy,

La plage de recherche ne comporte qu'une colonne et tu indiques la deuxième en paramètre d'extraction dans ta formule VLookUp.

Essaie comme ceci, ça devrait fonctionner :

Code:
a = (Range("E" & i) - Range("D" & i)) * Range("C" & i) / Application.WorksheetFunction.VLookup(Range("B" & i).Value, Sheets("Devise").Range("A:B"), 2, False)

Espérant avoir résolu.

Bonne soirée.

Cordialement.
 
Re : Problème de VLOOKUP en VBA

Bonsoir Papou-net et merci beaucoup!

Seulement j ai un problème d affichage maintenant... quand j appuie sur mon bouton, j ai que la deuxieme condition qui s 'excute et m affiche donc la ligne du produit E.
Je n arrive pas à combiner les deux conditions.

Sub Transfert()

Sheets("sheet1").Select
Dim i, j As Integer
Dim a As Double

j = 1

For i = 1 To ActiveSheet.UsedRange.Rows.Count

If Range("F" & i).Value <= (-15 / 100) Then
Range("F" & i).EntireRow.Select
Selection.Copy
Sheets("sheet3").Select
Range("A" & (j + 4)).Select
ActiveSheet.Paste
Sheets("sheet1").Select

a = (Range("E" & i) - Range("D" & i)) * Range("C" & i) / Application.WorksheetFunction.VLookup(Range("B" & i).Value, Sheets("Devise").Range("A:B"), 2, False)
ElseIf a <= (-150000) Then
Range("A" & i).EntireRow.Select
Selection.Copy
Sheets("sheet3").Select
Range("A" & (j + 4)).Select
ActiveSheet.Paste
Sheets("sheet1").Select

j = j + 1

End If

Next

End Sub




J ai rajouté le fichier excel modifié.

Merci encore
 

Pièces jointes

Re : Problème de VLOOKUP en VBA

Merci encore Papou-net!

J ai remarqué qu il y avait un problème d affichage si par exemple dans la feuille 1 il y a une dizaine de ligne de produits.
J ai fait le test en recompiant betement les lignes de produits A,B,C,D et E à la suite de la ligne du produit E ( j obtiens donc 10 lignes) et ca ma mit un truc bizare dans la feuille3.

Merci encore 🙂
 
Re : Problème de VLOOKUP en VBA

J ai remarqué qu il y avait un problème d affichage si par exemple dans la feuille 1 il y a une dizaine de ligne de produits.
J ai fait le test en recompiant betement les lignes de produits A,B,C,D et E à la suite de la ligne du produit E ( j obtiens donc 10 lignes) et ca ma mit un truc bizare dans la feuille3.🙂

RE mimy,

Je pense que le truc bizarre que tu cites est le fait que la ligne de produit E ne figure qu'une fois dans le résultat de la feuille 3 ?
Si c'est le cas, modifie le code comme ci-dessous :

Code:
Sub Transfert()
 
Sheets("sheet1").Select
 Dim i, j As Integer
 Dim a As Double
 
Application.ScreenUpdating = False
For i = 4 To ActiveSheet.UsedRange.Rows.Count + 1
  
  If Range("F" & i).Value <= (-15 / 100) Then
    Range("F" & i).EntireRow.Copy
    Sheets("sheet3").Select
    j = IIf(Cells(Rows.Count, 1).End(xlUp).Row + 1 < 5, 5, Cells(Rows.Count, 1).End(xlUp).Row + 1)
    Range("A" & (j)).Select
    ActiveSheet.Paste
    Sheets("sheet1").Select
    
  a = (Range("E" & i) - Range("D" & i)) * Range("C" & i) / Application.WorksheetFunction.VLookup(Range("B" & i).Value, Sheets("Devise").Range("A:B"), 2, False)
  ElseIf a <= (-150000) Then
    j = j + 1
    Range("A" & i).EntireRow.Copy
    Sheets("sheet3").Select
    Range("A" & (j)).Select
    ActiveSheet.Paste
    Sheets("sheet1").Select
  End If
  
Next
 
Application.ScreenUpdating = True

End Sub

En te souhaitant une bonne soirée.

Cordialement.
 
Re : Problème de VLOOKUP en VBA

Bonjour mimy,

Voici qui devrait solutionner définitivement le problème.

Après une étude plus approfondie de ton code, j'en ai profité pour modifier deux choses :

- La façon de déterminer le n° de la dernière ligne de Sheet1 sans tenir compte de la position de départ de la liste

- La structure du test conditionnel que j'ai simplifiée.

Espérant avoir éludé définitivement la question.

Et en te souhaitant une bonne journée.

Cordialement.
 

Pièces jointes

Re : Problème de VLOOKUP en VBA

Bonjour Papou-net!

Merci pour tout ce que tu as fait!! Tu m enlèves une épine du pied!
Je n ai pas d ordi a porté de main pour voir ce que tu as fait mais je te fais confiance! 🙂

Par ailleurs saurais tu si c est possible d inserer une colonne comme je le décris dans le post#1?

Mille merci!!
 
Re : Problème de VLOOKUP en VBA

Papou-net !

J avais vu une petite erreur dans ton code et je pense avoir résolu un petit problème!
Il fallait mettre une condition pour "si on arrive sur une case vite-> Exit sub"

😉
 
Dernière édition:
Re : Problème de VLOOKUP en VBA

re,

Cependant Papou-net, lorsqu on appuie plusieurs fois d affilé sur le bouton, les lignes dans la feuille3 s ajoutent alors que dans la feuille 1 on n a pas changé le nombre de lignes.
 

Pièces jointes

Dernière édition:
Re : Problème de VLOOKUP en VBA

Bonsoir mimy,

Je ne comprends pas, j'ai testé avant envoi et ça marchait.

J'ai donc repris entièrement l'étude de la boucle et je te propose de tester cette nouvelle proposition.

Espérant que cette version sera la bonne.

Bonne soirée à toi.

Cordialement.
 

Pièces jointes

Re : Problème de VLOOKUP en VBA

Oups, je n'avais pas vu ton message précédent !

Dans l'état actuel, c'est normal que les lignes s'ajoutent en Sheet3. S'il faut éviter qu'elles ne se répètent, il faut prévoir une cellule qui servirait de témoin dans Sheet1. Ca ne présente pas de difficulté particulière et j'y regarde. J'en profiterai pour régler également le problème du P&L en euros que j'avais zappé.

A bientôt.

Cordialement.
 
Re : Problème de VLOOKUP en VBA

Bonsoir Papou-net,

AH top! j ai réussi pour la colonne de P&L à rajouter! c est juste ces lignes qui m 'énèrevent lol

Je voudrais optimiser mon fichier et j ai fais une nouvelle conversation où j explique ce que j envisage de faire:
https://www.excel-downloads.com/thr...ignes-et-insertion-de-lignes-code-vba.182648/

Si tu es motivé à m'aider encore je te remercie d avance!

En tout cas merci pour ce que tu as fait.
 
Dernière édition:
- 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

  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
506
Retour